基于日志分析的Android测试方法的研究与实现_第1页
基于日志分析的Android测试方法的研究与实现_第2页
基于日志分析的Android测试方法的研究与实现_第3页
基于日志分析的Android测试方法的研究与实现_第4页
基于日志分析的Android测试方法的研究与实现_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE65摘要随着科技发展,Andriod操作系统在手机市场的占有率越发突出,但用户在享受Andriod操作系统所提供的便利的同时,往往会因为应用的功能、性能等方面的缺陷而不满。因此测试是不可或缺的,在一次又一次地测试中发现并解决问题,是每一个好产品的必经之路。身为为测试人员,不光要懂得找到bug,还应该及时的将bug的错误信息准确地反馈给开发。基于此本文将针对Android的日志系统进行设计并实现,使得测试更加系统化,效率变得更高。该系统是为Windows环境中基于Python语言和Android调试桥(adb)的Android日志系统,实现了对设备日志的及时存储并加入了开启自动化测试工具的功能。本文的研究的目的是为了让用户通过该软件使日志读取更加方便,并且方便用户分析和定位错误,希望能通过该系统,让测试人员可以及时的保留现场,从而达到提高Andriod设备测试效率的最终目的。关键词:Andriod;python;日志分析;测试

ResearchandimplementationofAndroidtestmethodbasedonloganalysisAbstractWiththecontinuousadvanceofInternettechnologyandthepopularityofmobiledevice,Androidoperatingsystemisbecomingmoreandmoresignificantinthemobilephonemarket.However,whileenjoyingtheconvenienceprovidedbyAndroidoperatingsystem,usersareoftendissatisfiedwiththefunctionandperformanceoftheapplication.Therefore,examinationisindispensable.Thisistheonlywayforallgoodproductstofindandsolveproblemsinmultipletests.Asatester,wemustknowhowtofindtheerrorandgivethedevelopertheerrorinformationintime.Onthisbasis,thispaperdesignsandimplementstheAndroidlogsystemtomakethetestmoresystematicandefficient.Underthewindowsenvironment,basedonPythonlanguageandAndroiddebugbridge(ADB),Androidlogsystemaddsthefunctionoftimelystorageofdevicelogsandopeningautomatictesttools.Thepurposeofthispaperistomakeitmoreconvenientforuserstoreadlogsthroughthesoftware,andtofacilitateuserstoanalyzeandretrieveerrors.Ihopethatthroughthissystem,testerscankeepthesceneintimeandachievetheultimategoalofimprovingthetestingefficiencyofAndroiddevices..Keywords:Android;Python;loganalysis;

目录TOC\o"1-4"\h\z\u103141引言 7161041.1背景内容 7164901.2论文研究目的 8691.3论文结构 8302732系统相关技术 9111582.1logging模块 9240462.2Andriodanr模块 13182572.3PythonTkinter模块 15254962.4Pyinstaller库 16144352.5ADBdevices模块 18256812.6Andriodanr模块 19112712.7subprocess模块 21212682.8pathlib模块 23293432.9sys模块 25143573总体设计 27131173.1需求分析 27225543.2系统设计 28316723.3系统软件结构设计 2868293.4Windows系统通过adb获取Android日志 2879523.5Monkeytext 30128233.6Andriodlog类型 3132364功能模块设计 3296054.1日志获取功能模块设计 32304524.2截图模块设计 32116164.3Monkey模块设计 32197505测试 3369475.1界面测试 3315195.2功能测试 33280605.3测试用例及执行结果 3731973参考文献 4129449谢辞 428018附录源代码 431引言随着科技发展,Andriod操作系统在手机市场的占有率越发突出,人们在享受Andriod系统带来的便利的同时,往往会因为应用的功能、性能等方面的缺陷而不满。因此应用的测试是不可或缺的,在测试中发现并解决问题,是每一个好产品的必经之路。同时身为为测试人员,不光要发现bug,更应该及时的将bug的错误信息准确地反馈给开发。基于此本文将针对Android的日志系统进行设计并实现,使得测试更加系统化,效率变得更高。该系统是为Windows环境中基于Python语言和Android调试桥(adb)的Android日志系统开发的。目的是通过该软件使日志读取更加方便,并且方便用户分析和定位错误。1.1背景内容随着Andriod系统的广泛普及,根据IDC新报告:Android系统市场占比最高,为77.14%,高居榜首,iOS操作系统的市场占比为22.83%,位居第二。而其他移动操作系统的比例仅为0.04%。但随着Android系统的普及,也渐渐出现了一系列的问题,首当其冲的就是应用方面的性能与稳定性。Andriod操作系统能占据全球手机市场榜首的原因有以下几点:1.平台的开放性:Andriod操作系统的开放性允许任何手机开发人员参与Andriod应用程序的开发,得益于此,大量的开发团队使Andriod系统日渐成熟,应用软件也无比丰富。2.系统开源:Andriod给予开发一个自由的环境,不会受到各种规则的束缚,拥有高自由度,也因此诞生了许多新奇的应用。3.丰富的硬件支持:Andriod产品早已不单单局限于手机,我们日常生活中许多常见的产品也都是Andriod操作系统。Andriod系统的高自由度与丰富的应用程序吸引了大量的新用户。由于Android平台具有开源和易于发布的功能,因此Android应用每天都在增长。作为用户和开发人员的共同需求,第三方应用程序市场发展迅速,但因无法规范管理,对第三方应用程序市场的审查并不完善,导致许多第三方应用市场上的app往往存在着安全漏洞或严重bug,类如兼容性差,易卡死、黑屏等问题,极大地影响了Android用户的体验。现今,人们对智能手机的依赖越发严重,同时许多无法保证功能及性能的应用让用户深恶痛绝,也往往因此吓退了许多潜在用户。故而保证Andriod系统的应用质量已成为许多公司眼中至关重要的一环。1.2论文研究目的软件测试的目的在于提高产品的质量,保障用户使用期间产品的稳定性,并规避由于各种边际操作和不规则使用导致的产品缺陷。用户希望看到的是通过各种操作路径检测到的产品。产品需在质量上通过行业标准测试和规格测试,并且在产品稳定性和功能性方面通过行业标准测试级别。开发人员希望进行测试,以检测由于开发过程中考虑不足和结构错误而导致的产品缺陷。并通过修改和重新测试的过程不断修复这些漏洞,最终达到可以满足用户需求的目的。而测试人员希望通过自己的测试,使产品在特定的操作路径下暴露其缺陷,进而发现产品中的不足。如果尝试成功,则表明该产品在此操作路径下存在缺陷。同时,可以预见的是,用户可能具有与此操作路径相同的过程,从而遇到相同的产品缺陷,影响使用的体验。这可能会引起用户的不满,最终导致大量客户的流失,这将影响到产品的后续推广,并极大地损害产品和公司的声誉。因此,测试人员在这里要预先模拟这样的操作,发现缺陷的存在并防止由此类问题而导致的客户流失。想要对所有的测试路径进行测试是不大现实的,因为通过排列组合可知测试路径是无穷无尽的,而且在大量的缺陷将会在用户经过长期的使用之后才会暴露出来,故而测试的过程不可能完全排除所有问题,检测出所有的设计缺陷,因此提高测试的效率是必然的。测试不仅是要体验产品并以用户身份使用产品,更重要的是要发现产品中的缺陷并查找bug。作为应用的测试人员,总会因为无法发现bug以及定位问题所在而烦恼,特别是在于稳定性测试方面,需要投入较长的测试时间,从而测试人员的工作难度也因此提升。作为测试,有时无法找到必现的路径来复现bug,只能通过保留现场或者加大测试压力去再次复现,但更重要的是如何帮助开发去发现问题所在,如何提供相应的log信息给开发分析。我们可以使用一种AndroidSDK工具:AndroidDebugBridge来调试Android,其中包括管理生成的Android日志。本文的目的就是使用python语言设计一个基于Android的日志分析工具,帮助开发人员及时有效的获取bug所产生的日志,并保存测试日志,便于分析长时测试所出现的偶现bug,提高解决问题的效率。1.3论文结构本文一开始介绍了当时的背景内容、以及设计系统的目的与意义。然后再接着介绍本系统使用到的技术,接着介绍系统的总体设计。会按模块详细的介绍,然后会附上测试案例,以及自己本次过程的总结,最后会附上自己参考过的文献以及致谢内容。2系统相关技术2.1logging模块Python中有一个专门负责输出运行日志的模块,它的名字叫logging。通过它,您可以设置日志输出级别,管理日志的路径等。与直接打印相比,它有以下优点:您可以设置不同的日志级别,让日志模块只输出重要信息,而不显示大量调试信息。若将所有信息打印到标准输出,这会严重影响了开发人员从标准输出中查看其他数据;开发人员可以决定在哪里以及如何输出日志记录。。logging模块主要由3部分组成:1.Logger日志记录器Logger提供了一个可由应用程序代码直接使用的接口。从不会直接实例化它。它通常是通过记录模块级别的函数logging.getLogger(名称)获得的,如果未提供名称,则使用root。名称以点名(a.b.c)命名。以相同名称多次调用logging.getLogger()将返回相同的logger对象。在这种命名方法中,后记录器是前记录器的子记录器,并自动继承父记录器的日志信息。因此,只要配置了顶级记录器,就无需一次配置应用程序的所有记录器,然后子记录器将根据需要继承。logging模块中的Logger对象主要有以下几种作用:首先,它向应用程序公开了几种方法,以便应用程序可以在运行时写入日志。其次,Logger对象根据日志信息的严重性或过滤器对象(默认过滤功能)决定如何处理日志信息。.最后,logger还负责将日志信息传输到相关的handlers。2.Handler日志处理器简而言之,Handler是日志记录模块中最常用的类。它确定您的LogRecord最终出现的位置。3.Formatter格式化器,控制日志输出的格式,指明了最终输出中日志记录的布局Formatter属性如下:表2-1Formatter属性属性名称格式说明name%(name)s日志的名称asctime%(asctime)s可读时间,默认格式‘2003-07-0816:49:45,896’,逗号之后是毫秒filename%(filename)s文件名,pathname的一部分pathname%(pathname)s文件的全路径名称funcName%(funcName)s调用日志多对应的方法名levelname%(levelname)s日志的等级levelno%(levelno)s数字化的日志等级lineno%(lineno)d被记录日志在源码中的行数module%(module)s模块名msecs%(msecs)d时间中的毫秒部分process%(process)d进程的IDprocessName%(processName)s进程的名称thread%(thread)d线程的IDthreadName%(threadName)s线程的名称relativeCreated%(relativeCreated)d日志被创建的相对时间,以毫秒为单位典型的日志记录的步骤是这样的:1.创建logger2.创建handler3.定义formatter4.给handler添加formatter5.给logger添加handler用代码简单实现则是:importlogging#1、创建一个loggerlogger=logging.getLogger('mylogger')logger.setLevel(logging.DEBUG)#2、创建一个handler,用它进行日志文件写入fh=logging.FileHandler('test.log')fh.setLevel(logging.DEBUG)#3、再创建一个handler,用于输出到控制台ch=logging.StreamHandler()ch.setLevel(logging.DEBUG)#4、定义处理器的输出格式(formatter)formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')#5、给处理器添加formatterfh.setFormatter(formatter)ch.setFormatter(formatter)#6、给logger添加handlerlogger.addHandler(fh)logger.addHandler(ch)具体实现代码如下图:2.2Andriodanr模块ANR:应用程序没有响应,也就是说,应用程序没有响应。在安卓系统上,如果你的应用程序暂时没有响应,系统会出现一个对话框,提示用户对当前状态进行操作,用户可以选择等待程序继续运行,或者强制关闭程序,这便称为ANR。因此,在一个流畅、合理的应用程序中不会显示anr,影响用户的体验。默认情况下,在安卓系统中,Activity的最大等待时间是5秒,而通常若是发生了ANR,用户往往需要等待8s以上。最后,让我们看一下Google官方文档中有关ANR的解释如图2-2:图2-2anr模块解释简而言之,ANR是谷歌引入的一套机制,目的是让应用程序能够足够快地响应用户的请求。一般anr问题的日志在/data/anr/目录中。我们可以通过adb导出日志:adbpull/data/anr/traces.txtd:/此命令将手机内存中的anr目录下的相关文件复制到计算机上的D盘,但有时会导致错误,于是我们可以通过这条命令:adbshellls/data/anr/来查看手机内anr目录下的文件,经过实际操作,可发现anr目录下的trace文件并不只有一个,所以无法指定的推出某一个trace文件,具体情况如下图3-2-1:图3-2-1查看anr文件夹因此在导出文件时,我选择将anr目录完整导出,导出及打开后效果如下图3-2、3-3: 图3-2-2anr导出目录图3-2-3追踪文件打开2.3PythonTkinter模块Tkinter是一个使用Python设计窗口的模块。在python语言中,我们可以使用Tkinter模块来实现GUI界面的设计与生成。例如,如果我们要开发一个计算器,那么计算器这个功能只是一个程序的输入及输出。若无GUI界面,用户对于这个功能的体验将十分糟糕。使用Tkiner模块为程序制作一个GUI界面是十分有必要的。Python拥有许多的GUI库。为什么选择Tkinter呢,首先它是最简洁且易上手的。第二个原因在于它是python的内置库,它不需要针对他去进行下载和安装,可以随时使用。第三是从开发角度出发。Python是一种脚本语言。如果您想使用python来开发特别复杂庞大的桌面应用,那么使用它并不容易。Python就像一种灵活的小配件,一般不用作主要的开发语言。在我们的工作中,如果我们需要制作一个小工具,我们肯定需要向这个工具添加一个GUI界面。一个好的GUI界面不仅能让自己使用的更顺手,还能分享给其他非专业人员使用,让用户与系统的交互变得更加的容易。Tkinter模块就像是涂料。我们都看过美术系学生的素描场景。首先,画画的前期准备工作需要先将一个画架支起来,然后将画板放于画架上,再将画布放置再画板上,构思内容,用铅笔绘制草图,使用调色板调色,最后使用画笔进行绘画。总结以下在本系统中用到的Tkinter模块里的参数1.Label:显示文字或图像。2.Button:按钮,可以执行我们为他事先赋予的操作3.Text:文本显示,同时可插入图像4.Frame:容器小部件。框架可以有边框和背景。举一个Tkinter模块的简单实例来介绍:#1.导入Tkinterimporttkinterastk#2.建立一个新的窗口,实例化Tkinterobject=tk.Tk()#3.设置一个标题object.title('MyWindow')#4.手动设置窗口的长宽object.geometry('500x300')#5.创建一个展示用的标签Root=tk.Label(window,text='Hello!WelcometoZHBIT',bg='blue',font=('Arial',20),width=15,height=18)#6.使用标签Root.pack()#7.令标签在界面上循环展示object.mainloop()在系统中具体实现代码如下图2-3:图2-3tkinter模块2.4Pyinstaller库PyInstaller是python里一个非常好用的第三方库,可以在Windows及其他操作系统下,将Python源文件打包为可执行文件。加入我们将Python源程序打包为可执行文件,那么这个Python程序即使在未装Python的环境中的电脑下也可正常运行,同时也易于传输和管理。PyInstaller不是python内置的模块,它属于第三方库,因此我们需要手动来安装它。安装PyInstaller模块也十分简单,对于安装PyInstaller模块,通常有两种安装方法,一种是直接去官网下载对应的库,然后再手动安装,另一种也是我更推荐的,我们可以直接通过pip进行在线的安装,只需要输入简单的指令,系统便会帮我们安装完毕,省去一切麻烦。安装指令如下:pipinstallpyinstaller-i/simple--trusted-host成功安装后,可看到如图2-4-1:图2-4-1pyinstaller安装pyinstaller模块要如何使用呢,它的基本流程一般都是这样的:1.在要打包的python文件的目录中执行以下命令:pyinstaller-F你的python文件名.py2.其中res文件夹为项目的资源目录,整个exe用到的图片均放置在里面,其中若要为程序设置一个好看的图标,只需要在命令中加入-i图标名称。同时图标也将保存至res目录下。3.执行打包好的可执行文件,测试系统功能是否能正常运行。Pyinstaller模块常见的参数如下图2-4-2:图2-4-2pyinstaller常见参数2.5ADB模块在测试时,我们绝对需要检查设备连接是否成功以及是否可以获取设备信息。可以实现adb设备,直接在命令行控制台中输入“adb设备”,可以看到下图2-5-1:图2-5-1adbdevices输出在实际使用中,我们需要考虑多个设备的连接,因为设备的序列号是不同的,因此我们需要分别获取它们的序列号并将其存储在列表中,然后才能在后续的adb调试中使用。多个设备。我们通过调用subprocess模块,可在Python中生成一个新进程,连接到相应的输出管道。在对应的输出管道中,subprocess可以获取相应的返回值。subprocess模块中有一个重要且常用的类:popen,我们可以通过它来实现模块与进程之间的交互,举个例子,我们通过stdin获取标准输入值。在操作过程中,根据返回值popen可以进行判断,若判断返回的列表为空,则输出提醒用户连接未正确连接。如果返回值为1,则直接执行下一步功能操作;如果列表中的数字大于1,则提示用户输入设备的序列号。需要进行该操作的设备,确认后进行日志采集,同时连接时发生冲突或影响其他设备的正常运行。具体代码如下图2-5-2:图2-5-2系统代码2.6Andriodanr模块ANR:即应用程序没响应。在Android中,如果你的应用程序长时间无响应,系统会显示一个对话框,用户可以选择,继续等待或关闭,在一些卡顿的应用程序中,用户常常会遇到类似的情况,因此,程序响应性能的设计非常重要,这样系统就不会频繁的出现该问题,在默认情况下,一个进程在Android中的最长执行时间为4秒,而当ANR发生时,往往用户需要等待超过8s,这是非常严重的问题。最后,让我们看一下Google官方文档中有关ANR的解释,如图2-6-1:图2-6-1anr模块解释通常ANR问题的日志都存放在一个固定的目录下,因此我们可以通过adb导出相关日志文件:adbpull/data/anr/traces.txtd:/此命令的目的是将anr目录里的跟踪文件,发送到我们指定的目录下,但有时会有错误提示,无法找到相关的文件,具体原因我们可以使用以下命令来查看:adbshellls/data/anr/通过该命令,可以查看手机内anr目录下的文件,经过实际操作,可发现anr目录下的trace文件并不只有一个,所以无法指定的推出某一个trace文件,具体情况如下图2-6-2:图2-6-2查看anr文件夹因此在导出文件时,我选择将anr目录完整导出,导出及打开后效果如下图2-6-3:图2-6-3anr导出目录2.7subprocess模块Python中的subprocess模块是一个非常方便且实用的模块,在进行有关进程创建的项目时,我们可以通过模块内的相应函数连接至进程的输入和输出管道,并获得通道内的字符。2-7-1subprocess模块常见函数subprocess模块中最常使用到的类也是本系统所使用到的类:Popen,使用subprocess模块的popen类,我们可以轻松的完成进程的管理亦或是新建一个进程等类似操作,我们可以通过popen类所封装的如表2-7-1内的函数,方便的实现一些常见的需求。想要了解更多有关popen类的用法,则还需要掌握它的部分常见参数,如下表2-7-2表2-7-2popen类的常见参数使用subprocess模块的简单实例:importsubprocesscmd='replaceconfig.exe-amerge-m"{}"-pgame_config'.format(data)res=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)res.stdout.read()在系统中具体实现代码如下图2-7:图2-7subprocess模块使用2.8pathlib模块根据官方解释,这个模块可以适用于不同的操作系统,它主要负责文件系统路径。路径类分为来自纯路径的特定路径及计算操作的纯路径和,如果从未使用过此模块,或者不确定项目中的哪个类是正确的,则pathlib始终是您所需要的。它被用作运行代码的平台上的特定路径。Pathlib模块包含6个类,具体如下图2-8图2-8pathlib的6个类经过系统的学习,我总结了一些pathlib模块的常见使用场景,下面我简单举例介绍此模块的具体用法:#导入模块frompathlibimportPath#1.获取当前文件路径p1=Path(__file__)#2.获取当前文件的目录p2=Path.cwd()#3.获取当前文件目录的父目录p3=Path.cwd().parent#4.路径拼接p=Path.cwd().joinpath(‘aa‘)#5.获取当前文件的信息st=Path(__file__).stat()#6.获取p1的父路径p=p1.parentz=p1.parents#7.判断pp是否为文件a=pp.is_file()#8.判断pp是否目录a=pp.is_dir()#9.判断p2是否是绝对路径a=p2.is_absolute()#10.判断p2是否符合某一个模式a=p2.match(‘d:\*‘)在系统中部分代码如下图2-8:图2-8pathlib的使用2.9sys模块Sys模块是Python中常用的模块之一。它包含许多复杂的操作方法和变量,用于处理Python运行时的配置和资源,因此它与系统环境的交互不同于当前程序。sys其实是系统的缩写,它可以用于获取操作系统的信息与系统的配置。例如,获取系统版本、确定文件和文件夹是否存在,创建文件夹等等。sys模块常用的参数如下表2-9:sys模块的常见使用操作有以下几种:1.获得python版本的信息importsyssys.version2.获取当前操作系统的信息importsyssys.platform3.sys模块的输入、输出importsyssys.stdoutsys.stdinsys.stderr在系统中部分代码如下图2-9:图2-9sys模块使用3总体设计3.1需求分析需求分析是指对用户需求和业务流程的全面,准确的分析与调查。用户需求被转换为对系统功能的设计,以实现系统必须达到的目标,可以实现的目标以及过程的实现方式。需求分析的原则:(1)应将需求分类归纳,逐一拆分,再寻找需求与需求之间的关系,构建需求间的层次结构。复杂的问题应该基于性能、特定功能等,层层细化后进行分解和个别分析。(2)确定分析模型,该模型包括代表研究对象特征的几个重要表示。逻辑视图可以显示目标函数与信息处理之间的关系,物理视图由系统操作和处理环境决定,以确定数据结构和功能。综合以上原则,将分为两个方面进行需求分析1.功能性需求首先系统最重要的功能在于日志获取至本地,日志保存目录则默认设为程序所在文件夹。其次作为测试常常会有需记录手机当前状态的需求,因此应为用户添加一键截图并保存至本地的功能。最后系统应有退出程序的选项,保证系统的操作易上手。日志获取日志获取截图Monkey图2-5客户用例图2.非功能需求分析在分析系统需求时,功能需求是非常重要的,它关系到用户需求。但同时非功能需求也是需求分析重要的一部分,它直接关系到用户在系统中的体验,反映了系统的稳定性。本系统主要从以下几个方面进行分析:1.)系统的响应时间:用户使用功能,系统响应、加载所需要的时间。2.)可靠性需求:出现非常规操作是否会能正常运行。3.)易用性需求:易用性及系统用户界面的美观3.2系统设计本系统的设计遵循以下原则:单一模块原则:每个类应具有单一功能,并且这一功能由此类完全封装。实用性原则:GUI界面应简洁实用,易于使用且便于使用。可靠性原则:系统应是稳定可靠的,完成后应进行相关测试,验证系统的稳定性。3.3系统软件结构设计为了系统的实用性,使用Tkinter模块为系统设计了GUI界面,加强了用户与系统的交互,让系统变得更加的简单与易上上手。同时将python的py文件使用pyinstaller打包为可执行文件,增强了系统的泛用性,即使在没有安装python环境或者第三方库的电脑环境下,也可正常的运行该系统。当使用者不是相关的技术人员,可执行文件对于用户来说,更加熟悉与亲切。3.4Windows系统通过adb获取Android日志1.通过官网下载Andriod-sdk-windows,下载并解压完成后,可得到如下图2-7-1:图2-7-1adb目录2.配置adb在“系统属性”→“高级系统设置”→“环境变量”;如图2-7-2:图2-7-2系统属性在系统变量里寻找Path,双击进入后,在右侧菜单选择新建路径,如图2-7-3:图2-7-3配置环境变量在terminal窗口中输入命令adb,若打印如下图2-7-4,则配置成功图2-7-4配置成功通过数据线把手机连接至电脑,同时在terminal窗口中输入adblogcat,即可成功输出当前手机log信息,具体信息可见下图2-7-5:图2-7-5获取log信息以上是在Windows系统环境下安装并使用adb获取Androidlog的基本流程。3.5MonkeytextMonkey是安卓的内置模块,Monkey测试的原理是套接字通信用于模拟按键输入、触摸屏输入等操作,检查设备在计划时间内是否因长时间的模拟操作而出现异常。Monkey一般的使用步骤:确认设备是否连接成功,通常使用adbdevices即可确认待测应用的包名,查看已安装应用的包名,命令为:adbshellpmlistpackages-3执行monkey测试的命令:adbshellmonkey-p所需要测试的应用包名-v所需要测试的次数monkeyMonkey测试的优缺点也很突出,个人总结下它的优点在于:功能强大,主要用于压力和稳定性测试。缺点:本身不提供截屏功能,本身无法完成录制、回放,无法帮助开发人员回溯现场,因此Monkeytest与本文研究的日志系统正是相辅相成的,通过Monkey进行长时间的稳定性测试,发现应用中的缺陷,再由日志系统去定位bug,可以很有效的提高测试的效率。图3-5Monkey执行结果3.6Andriodlog类型了解Andriodlog的分类,可以帮助我们根据日志的类型获取所需的信息。Android日志类型可简单分为两种,用于打印的是所有应用里面的信息的日志为logcat以及用于记录内核信息的kernel。其中logcat再往下细分还包括如下表五种。表2-8Anddriodlog类型ID说明Main_logMainlog是最大的一个日志缓冲区,用于记录应用程序及系统产生的打印日志,例如应用的程序的运行情况、信号信息等等。Events_logEventslog主要记录事件操作日志,例如触摸屏操作、按键操作等等信息。Radio_logRadio_log主要记录来自RIL层的日志,这类型日志主要来源于通信等相关模块Crash_logCrach_log主要用来记录崩溃日志,这类型日志大部分来自于手机应用。System_logSystem_log主要用于记录系统组件的日志,是缓冲区的主要部分。4功能模块设计本系统按需求分析,划分了两个主要的功能模块。接下来,我将具体的介绍这两个相应的功能模块设计。4.1日志获取功能模块设计用户通过可执行文件打开系统后,若是有多台设备,将会提示用户输入相应的产品设备号。若无设备连接,将提示用户连接设备。之后会弹出一个简单的GUI界面,在界面上,点击日志获取的按钮,便可一键获取已连接到电脑的设备日志。若仅有一台设备连接至电脑,将直接执行日志获取的功能。日志保存路径将在该系统所在目录下的log文件夹。日志获取将按照实现所归纳的分类进行保存,日志保存完成后,会有相应的打印提示用户日志获取完毕。4.2截图模块设计用户通过可执行文件打开系统后,若是有多台设备,将会提示用户输入相应的产品设备号。若无设备连接,将提示用户连接设备。之后将弹出一个简洁的GUI界面,在界面上,点击截图按钮,便可一键获取已连接到电脑的设备当前屏幕截图。4.3Monkey模块设计用户通过可执行文件打开系统后,若是有多台设备,将会提示用户输入相应的产品设备号。若无设备连接,将提示用户连接设备。之后会弹出一个简洁的GUI界面,在界面上,点击Monkey按钮,会出现相应提示,询问用户需要执行测试的次数,输入相应次数后,将开始进行相应次数的Monkeytest。5测试测试主要分为两个部分:界面测试和功能测试。5.1界面测试界面测试在测试过程中是不可缺失的一环,测试时首先关注界面的一致性,是否出现个别页面板块脱离整体,颜色是否适当、字体是否统一等。从细节来说,则是关注到具体每一个板块是否有错别字、是否出现语病和歧义以及图文不一致,不对齐等问题。在测试过程中从整体到个体,由框架流程到每一个板块的每一个功能,都要细心检查,记录出现的问题,方便以后改善。测试结果如下:系统字体统一,无错别字,功能模块对齐,无歧义及语病,如图5-1。图5-1界面测试5.2功能测试功能测试是对针对产品功能方面进行的测试,并根据测试方案与测试用例,逐一测试功能是否达到开发的预期,满足用户的需求。功能测试的原则:1)测试宜早不宜迟2)不要一味做穷尽测试,要抓住测试的重点,提高测试的效率3)合格的测试用例一定包括两个部分,测试场景与预期结果4)设计测试用例时,应多多考虑边缘操作、非常规操作,把自己作为用户,考虑到每一个细节。5)测试计划与用例每一条都要严格的执行,落实到位,保证测试的准确性,严谨性以下是功能测试时的截图:图5-2-1截图图5-2-2日志保存图5-2-3输入monkey执行次数图5-2-4monkey执行完毕图5-2-5无设备连接5.3测试用例及执行结果表5-3-1屏幕截图用例用例ID00001用例名称 屏幕截图用例描述用户在系统中使用截图功能用例入口系统UI界面测试用例ID场景测试步骤预期结果Test001屏幕截图1.用户选择屏幕截图2.在电脑中检查图片是否正确保存至预期位置3.检查图片是否与手机当前显示状态一致1.在terminal中显示截图已发至电脑2.图片正确保存至在电脑中预期位置3.图片是否与手机当前显示状态一致表5-3-2Monkey用例用例ID00002用例名称 Monkey用例描述用户在系统中选择Monkey用例入口系统UI界面测试用例ID场景测试步骤预期结果Test002Monkey测试1.用户选择Monkey测试2.根据提示输入测试次数3.观察设备是否如预期执行Monkey测试1.提示用户输入需要测试的次数2.根据用户输入次数开始执行Monkey测试表5-3-3获取日志用例用例ID00003用例名称 获取日志用例描述用户在系统中选择获取日志用例入口系统UI界面测试用例ID场景测试步骤预期结果Test003获取日志1.在系统中选择获取日志2.在对应文件夹中检查是否如预期产生相应系统日志3.检查日志文件命名是否正确4.检查是否存在格式损坏或空文件1.对应文件夹中产生相应系统日志2.提示日志保存完成,并显示保存路径3.日志文件命名正确4.不存在格式损坏或空文件表5-3-4连接多台设备用例用例ID00004用例名称 连接多台设备用例描述连接多台设备,执行日志获取功能用例入口系统UI界面测试用例ID场景测试步骤预期结果Test004连接多台设备,获取日志1.在系统中选择获取日志2.根据提示输入对应设备号3.在对应文件夹中检查是否如预期产生相应系统日志4.检查日志文件命名是否正确5.检查是否存在格式损坏或空文件1.输入对应设备号后,开始执行日志获取2.对应文件夹中产生相应系统日志3.保存完成后提示日志保存完成,并显示保存路径4.日志文件命名正确5.不存在格式损坏或空文件表5-3-5无设备连接测试用例用例ID00005用例名称 无设备连接用例描述无设备连接,测试系统用例入口系统UI界面测试用例ID场景测试步骤预期结果Test005无设备连接,运行系统1.打开系统,观察输出1.打印提示无设备连接表5-3-6多个设备连接测试用例用例ID00006用例名称 多个设备连接用例描述多设备连接,测试系统用例入口系统UI界面测试用例ID场景测试步骤预期结果Test005多设备连接,运行系统1.打开系统,观察输出2.根据提示输入设备号3.测试功能1.打印提示输入设备号2.输入设备号后可正常运行三个功能表5-3-7兼容性测试用例用例ID00007用例名称 兼容性测试用例描述分别测试不同品牌的手机,查看系统运行状态用例入口系统UI界面测试用例ID场景测试步骤预期结果Test005使用不同品牌的手机测试系统1.分别连接不同品牌的手机2.打开系统,观察输出3.测试功能1.系统在不同品牌手机可正常运行参考文献[1]岳浩.Linux操作系统教程[M].机械工业出版社.2005.4[2]Kenny橘.2019-06-10PythonAndroid自动化1/10-ADB介绍[J/OL].(2019-06-10)[2020-04-16]./p/3df2af726f85[3]Ahilll.PythonGUI之tkinter窗口视窗教程大集合(看这篇就够了)[J/OL].(2018-08-09)[2020-04-16]./ahilll/article/details/81531587[4]百度MTC.ANR检查定位分析工具-baidu_mtc的博客-CSDN博客[J/OL].(2015-12-24)[2020-04-16]./baidu_mtc/article/details/50396143[5]Magic_ww.Pythonlogger模块_Python_Magic_ww的博客-CSDN博客[J/OL].(2019-12-29)[2020-04-16]./Magic_ww/article/details/103757447[6]Spring.ANR检查定位分析工具|百度QA[J/OL].(2016-02-29)[2020-04-16]./academy/detail/article/6[7]余英杰.Android手机自动测试日志系统的设计和实现:[D].上海.上海交通大学,2014:6-16[8]孙沫涵.Android系统的持续集成自动化测试框架的研究与实践:[D].天津.天津大学,2014:6-16[9]康计良.Python语言的可视化编程环境的设计与实现:[D].西安.西安电子科技大学,2012:6-16[10]马开睿.基于Android的应用软件逆向分析及安全保护:[D].成都.西南交通大学,2015:6-16谢辞终于毕业设计算是告一段落了,心里反而有点空荡荡的,感觉自己马上就要告别校园去开始人生的下一个阶段。在北京理工大学珠海学院的四年是充实而难忘的,无论是学习上还是生活上,都与四年前的自己有了脱胎换骨般的变化。非常感谢老师、同学们这四年的照顾,我们共同度过了人生中最美好的一段时间。一分耕耘一分收获,在学校的悉心栽培与老师的辛勤教诲下,我才能一步步走向成熟。老师们不光是我们知识的领路人,他们用自己丰富的学识,严谨的治学,无私的奉献,用自己日常的一言一行鼓励着我们不断向前。此外我还要特别的感谢我的指导老师-袁沐春老师。有幸在大三时结识了这位优秀的老师,导师严谨细致、一丝不苟的作风一向是我工作、学习中的榜样。无论是在过去的课堂还是在论文的攥写上,袁老师都是全心全意的在帮助我们。老师在做毕设的期间,给予我们很大的自由度,但是也时时刻刻地盯着我们,关注着我们的论文。在我们遇到问题时,也都会非常及时的给予我们解答。这次完成论文,无论是格式规范还是文章结构,袁老师都不厌其烦的给予了我很大的帮助,让我能顺利的完成这篇论文。我十分敬爱这位热爱生活,有品位,有能力而且乐于帮助学生的导师,能选到她是我的幸运。在此我真诚的感激袁老师,老师您幸苦了。此外我还要感谢我的舍友们,是他们开朗的性格与宽阔的胸襟,让我大学四年过的无忧无虑。同时舍友们的勤学上进,一直是激励我不断前进的动力。虽然大家都快要各自追逐各自的前程了,但青山不改绿水长流,我将永远记得这段精彩的大学时光,希望我们以后有机会再欢聚一堂,也祝你们今后前程似锦!最后,我还要感谢评阅本文的老师,教授和专家,也感谢您抽出宝贵的时间阅读本文。由于个人水平有限,论文存在的种种瑕疵还望不吝指教。

ExcelXP的八则快速输入技巧如果我们在用ExcelXP处理庞大的数据信息时,不注意讲究技巧和方法的话,很可能会花费很大的精力。因此如何巧用ExcelXP,来快速输入信息就成为各个ExcelXP用户非常关心的话题,笔者向大家介绍几则这方面的小技巧。1、快速输入大量含小数点的数字如果我们需要在ExcelXP工作表中输入大量的带有小数位的数字时,按照普通的输入方法,我们可能按照数字原样大小直接输入,例如现在要在单元格中输入0.05这个数字时,我们会把“0.05”原样输入到表格中。不过如果需要输入若干个带有小数点的数字时,我们再按照上面的方法输入的话,每次输入数字时都需要重复输入小数点,这样工作量会变大,输入效率会降低。其实,我们可以使用ExcelXP中的小数点自动定位功能,让所有数字的小数点自动定位,从而快速提高输入速度。在使用小数点自动定位功能时,我们可以先在ExcelXP的编辑界面中,用鼠标依次单击“工具”/“选项”/“编辑”标签,在弹出的对话框中选中“自动设置小数点”复选框,然后在“位数”微调编辑框中键入需要显示在小数点右面的位数就可以了。以后我们再输入带有小数点的数字时,直接输入数字,而小数点将在回车键后自动进行定位。例如,我们要在某单元格中键入0.06的话,可以在上面的设置中,让“位数”选项为2,然后直接在指定单元格中输入6,回车以后,该单元格的数字自动变为“0.06”,怎么样简单吧?2、快速录入文本文件中的内容现在您手边假如有一些以纯文本格式储存的文件,如果此时您需要将这些数据制作成ExcelXP的工作表,那该怎么办呢?重新输入一遍,大概只有头脑有毛病的人才会这样做;将菜单上的数据一个个复制/粘贴到工作表中,也需花很多时间。没关系!您只要在ExcelXP中巧妙使用其中的文本文件导入功能,就可以大大减轻需要重新输入或者需要不断复制、粘贴的巨大工作量了。使用该功能时,您只要在ExcelXP编辑区中,依次用鼠标单击菜单栏中的“数据/获取外部数据/导入文本文件”命令,然后在导入文本会话窗口选择要导入的文本文件,再按下“导入”钮以后,程序会弹出一个文本导入向导对话框,您只要按照向导的提示进行操作,就可以把以文本格式的数据转换成工作表的格式了。3、快速输入大量相同数据如果你希望在不同的单元格中输入大量相同的数据信息,那么你不必逐个单元格一个一个地输入,那样需要花费好长时间,而且还比较容易出错。你可以通过下面的操作方法在多个相邻或不相邻的单元格中快速填充同一个数据,具体方法为:首先同时选中需要填充数据的单元格。若某些单元格不相邻,可在按住Ctrl键的同时,点击鼠标左键,逐个选中;其次输入要填充的某个数据。按住Ctrl键的同时,按回车键,则刚才选中的所有单元格同时填入该数据。4、快速进行中英文输入法切换一张工作表常常会既包含有数字信息,又包含有文字信息,要录入这样一种工作表就需要我们不断地在中英文之间反复切换输入法,非常麻烦,为了方便操作,我们可以用以下方法实现自动切换:首先用鼠标选中需要输入中文的单元格区域,然后在输入法菜单中选择一个合适的中文输入法;接着打开“有效数据”对话框,选中“IME模式”标签,在“模式”框中选择打开,单击“确定”按钮;然后再选中输入数字的单元格区域,在“有效数据”对话框中,单击“IME模式”选项卡,在“模式”框中选择关闭(英文模式);最后单击“确定”按钮,这样用鼠标分别在刚才设定的两列中选中单元格,五笔和英文输入方式就可以相互切换了。5、快速删除工作表中空行删除ExcelXP工作表中的空行,一般的方法是需要将空行都找出来,然后逐行删除,但这样做操作量非常大,很不方便。那么如何才能减轻删除工作表中空行的工作量呢?您可以使用下面的操作方法来进行删除:首先打开要删除空行的工作表,在打开的工作表中用鼠标单击菜单栏中的“插入”菜单项,并从下拉菜单中选择“列”,从而插入一新的列X,在X列中顺序填入整数;然后根据其他任何一列将表中的行排序,使所有空行都集中到表的底部。删去所有空行中X列的数据,以X列重新排序,然后删去X列。按照这样的删除方法,无论工作表中包含多少空行,您就可以很快地删除了。6、快速对不同单元格中字号进行调整在使用ExcelXP编辑文件时,常常需要将某一列的宽度固定,但由于该列各单元格中的字符数目不等,致使有的单元格中的内容不能完全显示在屏幕上,为了让这些单元格中的数据都显示在屏幕上,就不得不对这些单元格重新定义较小的字号。如果依次对这些单元格中的字号调整的话,工作量将会变得很大。其实,您可以采用下面的方法来减轻字号调整的工作量:首先新建或打开一个工作簿,并选中需要ExcelXP根据单元格的宽度调整字号的单元格区域;其次单击用鼠标依次单击菜单栏中的“格式”/“单元格”/“对齐”标签,在“文本控制”下选中“缩小字体填充”复选框,并单击“确定”按钮;此后,当你在这些单元格中输入数据时,如果输入的数据长度超过了单元格的宽度,ExcelXP能够自动缩小字符的大小把数据调整到与列宽一致,以使数据全部显示在单元格中。如果你对这些单元格的列宽进行了更改,则字符可自动增大或缩小字号,以适应新的单元格列宽,但是对这些单元格原设置的字体字号大小则保持不变。7、快速输入多个重复数据在使用ExcelXP工作表的过程中,我们经常要输入大量重复的数据,如果依次输入,无疑工作量是巨大的。现在我们可以借助ExcelXP的“宏”功能,来记录首次输入需要重复输入的数据的命令和过程,然后将这些命令和过程赋值到一个组合键或工具栏的按钮上,当按下组合键时,计算机就会重复所记录的操作。使用宏功能时,我们可以按照以下步骤进行操作:首先打开工作表,在工作表中选中要进行操作的单元格;接着再用鼠标单击菜单栏中的“工具”菜单项,并从弹出的下拉菜单中选择“宏”子菜单项,并从随后弹出的下级菜单中选择“录制新宏”命令;设定好宏后,我们就可以对指定的单元格,进行各种操作,程序将自动对所进行的各方面操作记录复制。8、快速处理多个工作表有时我们需要在ExcelXP中打开多个工作表来进行编辑,但无论打开多少工作表,在某一时刻我们只能对一个工作表进行编辑,编辑好了以后再依次编辑下一个工作表,如果真是这样操作的话,我们倒没有这个必要同时打开多个工作表了,因为我们同时打开多个工作表的目的就是要减轻处理多个工作表的工作量的,那么我们该如何实现这样的操作呢?您可采用以下方法:首先按住“Shift"键或“Ctrl"键并配以鼠标操作,在工作簿底部选择多个彼此相邻或不相邻的工作表标签,然后就可以对其实行多方面的批量处理;接着在选中的工作表标签上按右键弹出快捷菜单,进行插入和删除多个工作表的操作;然后在“文件”菜单中选择“页面设置……”,将选中的多个工作表设成相同的页面模式;再通过“编辑”菜单中的有关选项,在多个工作表范围内进行查找、替换、定位操作;通过“格式”菜单中的有关选项,将选中的多个工作表的行、列、单元格设成相同的样式以及进行一次性全部隐藏操作;接着在“工具”菜单中选择“选项……”,在弹出的菜单中选择“视窗”和“编辑”按钮,将选中的工作表设成相同的视窗样式和单元格编辑属性;最后选中上述工作表集合中任何一个工作表,并在其上完成我们所需要的表格,则其它工作表在相同的位置也同时生成了格式完全相同的表格。高效办公Excel排序方法"集中营"排序是数据处理中的经常性工作,Excel排序有序数计算(类似成绩统计中的名次)和数据重排两类。本文以几个车间的产值和名称为例,介绍Excel2000/XP的数据排序方法。一、数值排序1.RANK函数RANK函数是Excel计算序数的主要工具,它的语法为:RANK(number,ref,order),其中number为参与计算的数字或含有数字的单元格,ref是对参与计算的数字单元格区域的绝对引用,order是用来说明排序方式的数字(如果order为零或省略,则以降序方式给出结果,反之按升序方式)。例如图1中E2、E3、E4单元格存放一季度的总产值,计算各车间产值排名的方法是:在F2单元格内输入公式“=RANK(E2,$E$2:$E$4)”,敲回车即可计算出铸造车间的产值排名是2。再将F2中的公式复制到剪贴板,选中F3、F4单元格按Ctrl+V,就能计算出其余两个车间的产值排名为3和1。如果B1单元格中输入的公式为“=RANK(E2,$E$2:$E$4,1)”,则计算出的序数按升序方式排列,即2、1和3。需要注意的是:相同数值用RANK函数计算得到的序数(名次)相同,但会导致后续数字的序数空缺。假如上例中F2单元格存放的数值与F3相同,则按本法计算出的排名分别是3、3和1(降序时)。2.COUNTIF函数COUNTIF函数可以统计某一区域中符合条件的单元格数目,它的语法为COUNTIF(range,criteria)。其中range为参与统计的单元格区域,criteria是以数字、表达式或文本形式定义的条件。其中数字可以直接写入,表达式和文本必须加引号。仍以图1为例,F2单元格内输入的公式为“=COUNTIF($E$2:$E$4,">"&E2)+1”。计算各车间产值排名的方法同上,结果也完全相同,2、1和3。此公式的计算过程是这样的:首先根据E2单元格内的数值,在连接符&的作用下产生一个逻辑表达式,即“>176.7”、“>167.3”等。COUNTIF函数计算出引用区域内符合条件的单元格数量,该结果加一即可得到该数值的名次。很显然,利用上述方法得到的是降序排列的名次,对重复数据计算得到的结果与RANK3.IF函数Excel自身带有排序功能,可使数据以降序或升序方式重新排列。如果将它与IF函数结合,可以计算出没有空缺的排名。以图1中E2、E3、E4单元格的产值排序为例,具体做法是:选中E2单元格,根据排序需要,单击Excel工具栏中的“降序排序”或“升序排序”按钮,即可使工作表中的所有数据按要求重新排列。假如数据是按产值由大到小(降序)排列的,而您又想赋予每个车间从1到n(n为自然数)的排名。可以在G2单元格中输入1,然后在G3单元格中输入公式“=IF(E3=E2,G3,G3+1)”,只要将公式复制到G4等单元格,就可以计算出其他车间的产值排名。二、文本排序选举等场合需要按姓氏笔划为文本排序,Excel提供了比较好的解决办法。如果您要将图1数据表按车间名称的笔划排序,可以使用以下方法:选中排序关键字所在列(或行)的首个单元格(如图1中的A1),单击Excel“数据”菜单下的“排序”命令,再单击其中的“选项”按钮。选中“排序选项”对话框“方法”下的“笔画排序”,再根据数据排列方向选择“按行排序”或“按列排序”,“确定”后回到“排序”对话框(图2)。如果您的数据带有标题行(如图1中的“单位”之类),则应选中“有标题行”(反之不选),然后打开“主要关键字”下拉列表,选择其中的“单位”,选中排序方式(“升序”或“降序”)后“确定”,表中的所有数据就会据此重新排列。此法稍加变通即可用于“第一名”、“第二名”等文本排序,请读者自行摸索。三、自定义排序如果您要求Excel按照“金工车间”、“铸造车间”和“维修车间”的特定顺序重排工作表数据,前面介绍的几种方法就无能为力了。这类问题可以用定义排序规则的方法解决:首先单击Excel“工具”菜单下的“选项”命令,打开“选项”对话框中的“自定义序列”选项卡(图3)。选中左边“自定义序列”下的“新序列”,光标就会在右边的“输入序列”框内闪动,您就可以输入“金工车间”、“铸造车间”等自定义序列了,输入的每个序列之间要用英文逗号分隔,或者每输入一个序列就敲回车。如果序列已经存在于工作表中,可以选中序列所在的单元格区域单击“导入”,这些序列就会被自动加入“输入序列”框。无论采用以上哪种方法,单击“添加”按钮即可将序列放入“自定义序列”中备用(图3)。使用排序规则排序的具体方法与笔划排序很相似,只是您要打开“排序选项”对话框中的“自定义排序次序”下拉列表,选中前面定义的排序规则,其他选项保持不动。回到“排序”对话框后根据需要选择“升序”或“降序”,“确定”后即可完成数据的自定义排序。需要说明的是:显示在“自定义序列”选项卡中的序列(如一、二、三等),均可按以上方法参与排序,请读者注意Excel提供的自定义序列类型。谈谈Excel输入的技巧在Excel工作表的单元格中,可以使用两种最基本的数据格式:常数和公式。常数是指文字、数字、日期和时间等数据,还可以包括逻辑值和错误值,每种数据都有它特定的格式和输入方法,为了使用户对输入数据有一个明确的认识,有必要来介绍一下在Excel中输入各种类型数据的方法和技巧。一、输入文本Excel单元格中的文本包括任何中西文文字或字母以及数字、空格和非数字字符的组合,每个单元格中最多可容纳32000个字符数。虽然在Excel中输入文本和在其它应用程序中没有什么本质区别,但是还是有一些差异,比如我们在Word、PowerPoint的表格中,当在单元格中输入文本后,按回车键表示一个段落的结束,光标会自动移到本单元格中下一段落的开头,在Excel的单元格中输入文本时,按一下回车键却表示结束当前单元格的输入,光标会自动移到当前单元格的下一个单元格,出现这种情况时,如果你是想在单元格中分行,则必须在单元格中输入硬回车,即按住Alt键的同时按回车键。二、输入分数几乎在所有的文档中,分数格式通常用一道斜杠来分界分子与分母,其格式为“分子/分母”,在Excel中日期的输入方法也是用斜杠来区分年月日的,比如在单元格中输入“1/2”,按回车键则显示“1月2日”,为了避免将输入的分数与日期混淆,我们在单元格中输入分数时,要在分数前输入“0”(零)以示区别,并且在“0”和分子之间要有一个空格隔开,比如我们在输入1/2时,则应该输入“01/2”。如果在单元格中输入“81/2”,则在单元格中显示“81/2”,而在编辑栏中显示“三、输入负数在单元格中输入负数时,可在负数前输入“-”作标识,也可将数字置在()括号内来标识,比如在单元格中输入“(88)”,按一下回车键,则会自动显示为“-88”。四、输入小数在输入小数时,用户可以向平常一样使用小数点,还可以利用逗号分隔千位、百万位等,当输入带有逗号的数字时,在编辑栏并不显示出来,而只在单元格中显示。当你需要输入大量带有固定小数位的数字或带有固定位数的以“0”字符串结尾的数字时,可以采用下面的方法:选择“工具”、“选项”命令,打开“选项”对话框,单击“编辑”标签,选中“自动设置小数点”复选框,并在“位数”微调框中输入或选择要显示在小数点右面的位数,如果要在输入比较大的数字后自动添零,可指定一个负数值作为要添加的零的个数,比如要在单元格中输入“88”后自动添加3个零,变成“88000”,就在“位数”微调框中输入“-3”,相反,如果要在输入“88”后自动添加3位小数,变成“0.088”,则要在“位数”微调框中输入“3”。另外,在完成输入带有小数位或结尾零字符串的数字后,应清除对“自动设置小数点”符选框的选定,以免影响后边的输入;如果只是要暂时取消在“自动设置小数点”中设置的选项,可以在输入数据时自带小数点。五、输入货币值Excel几乎支持所有的货币值,如人民币(¥)、英镑(£)等。欧元出台以后,Excel2000完全支持显示、输入和打印欧元货币符号。用户可以很方便地在单元格中输入各种货币值,Excel会自动套用货币格式,在单元格中显示出来,如果用要输入人民币符号,可以按住Alt键,然后再数字小键盘上按“0165”即可。六、输入日期Excel是将日期和时间视为数字处理的,它能够识别出大部分用普通表示方法输入的日期和时间格式。用户可以用多种格式来输入一个日期,可以用斜杠“/”或者“-”来分隔日期中的年、月、日部分。比如要输入“2001年12月1日”,可以在单元各种输入“2001/12/1”或者“2001-12-1七、输入时间在Excel中输入时间时,用户可以按24小时制输入,也可以按12小时制输入,这两种输入的表示方法是不同的,比如要输入下午2时30分38秒,用24小时制输入格式为:2:30:38,而用12小时制输入时间格式为:2:30:38p,注意字母“p”和时间之间有一个空格。如果要在单元格中插入当前时间,则按Ctrl+Shift+;键。了解Excel公式的错误值经常用Excel的朋友可能都会遇到一些莫名奇妙的错误值信息:#N/A!、#VALUE!、#DIV/O!等等,出现这些错误的原因有很多种,如果公式不能计算正确结果,Excel将显示一个错误值,例如,在需要数字的公式中使用文本、删除了被公式引用的单元格,或者使用了宽度不足以显示结果的单元格。以下是几种常见的错误及其解决方法。1.#####!原因:如果单元格所含的数字、日期或时间比单元格宽,或者单元格的日期时间公式产生了一个负值,就会产生#####!错误。解决方法:如果单元格所含的数字、日期或时间比单元格宽,可以通过拖动列表之间的宽度来修改列宽。如果使用的是1900年的日期系统,那么Excel中的日期和时间必须为正值,用较早的日期或者时间值减去较晚的日期或者时间值就会导致#####!错误。如果公式正确,也可以将单元格的格式改为非日期和时间型来显示该值。2.#VALUE!当使用错误的参数或运算对象类型时,或者当公式自动更正功能不能更正公式时,将产生错误值#VALUE!。原因一:在需要数字或逻辑值时输入了文本,Excel不能将文本转换为正确的数据类型。解决方法:确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如:如果单元格A1包含一个数字,单元格A2包含文本"学籍",则公式"=A1+A2"将返回错误值#VALUE!。可以用SUM工作表函数将这两个值相加(SUM函数忽略文本):=SUM(A1:A2)。原因二:将单元格引用、公式或函数作为数组常量输入。解决方法:确认数组常量不是单元格引用、公式或函数。原因三:赋予需要单一数值的运算符或函数一个数值区域。解决方法:将数值区域改为单一数值。修改数值区域,使其包含公式所在的数据行或列。3.#DIV/O!当公式被零除时,将会产生错误值#DIV/O!。原因一:在公式中,除数使用了指向空单元格或包含零值单元格的单元格引用(在Excel中如果运算对象是空白单元格,Excel将此空值当作零值)。解决方法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。原因二:输入的公式中包含明显的除数零,例如:=5/0。解决方法:将零改为非零值。4.#NAME?在公式中使用了Excel不能识别的文本时将产生错误值#NAME?。原因一:删除了公式中使用的名称,或者使用了不存在的名称。解决方法:确认使用的名称确实存在。选择菜单"插入"|"名称"|"定义"命令,如果所需名称没有被列出,请使用"定义"命令添加相应的名称。原因二:名称的拼写错误。解决方法:修改拼写错误的名称。原因三:在公式中使用标志。解决方法:选择菜单中"工具"|"选项"命令,打开"选项"对话框,然后单击"重新计算"标签,在"工作薄选项"下,选中"接受公式标志"复选框。原因四:在公式中输入文本时没有使用双引号。解决方法:Excel将其解释为名称,而不理会用户准备将其用作文本的想法,将公式中的文本括在双引号中。例如:下面的公式将一段文本"总计:"和单元格B50中的数值合并在一起:="总计:"&B50原因五:在区域的引用中缺少冒号。解决方法:确认公式中,使用的所有区域引用都使用冒号。例如:SUM(A2:B34)。5.#N/A原因:当在函数或公式中没有可用数值时,将产生错误值#N/A。解决方法:如果工作表中某些单元格暂时没有数值,请在这些单元格中输入"#N/A",公式在引用这些单元格时,将不进行数值计算,而是返回#N/A。6.#REF!当单元格引用无效时将产生错误值#REF!。原因:删除了由其他公式引用的单元格,或将移动单元格粘贴到由其他公式引用的单元格中。解决方法:更改公式或者在删除或粘贴单元格之后,立即单击"撤消"按钮,以恢复工作表中的单元格。7.#NUM!当公式或函数中某个数字有问题时将产生错误值#NUM!。原因一:在需要数字参数的函数中使用了不能接受的参数。解决方法:确认函数中使用的参数类型正确无误。原因二:使用了迭代计算的工作表函数,例如:IRR或RATE,并且函数不能产生有效的结果。解决方法:为工作表函数使用不同的初始值。原因三:由公式产生的数字太大或太小,Excel不能表示。解决方法:修改公式,使其结果在有效数字范围之间。8.#NULL!当试图为两个并不相交的区域指定交叉点时将产生错误值#NULL!。原因:使用了不正确的区域运算符或不正确的单元格引用。解决方法:如果要引用两个不相交的区域,请使用联合运算符逗号(,)。公式要对两个区域求和,请确认在引用这两个区域时,使用逗号。如:SUM(A1:A13,D12:D23)。如果没有使用逗号,Excel将试图对同时属于两个区域的单元格求和,但是由于A1:A13和D12:D23并不相交,所以他们没有共同的单元格。在Excel中快速查看所有工作表公式只需一次简单的键盘点击,即可可以显示出工作表中的所有公式,包括Excel用来存放日期的序列值。要想在显示单元格值或单元格公式之间来回切换,只需按下CTRL+`(位于TAB键上方)。EXCEL2000使用技巧十招1、Excel文件的加密与隐藏如果你不愿意自己的Excel文件被别人查看,那么你可以给它设置密码保护,采用在保存文件时用加密的方法就可以实现保护目的,在这里要特别注意的是,自己设定的密码一定要记住,否则自己也将被视为非法入侵者而遭拒绝进入。给文件加密的具体方法为:A、单击“文件”菜单栏中的“保存或者(另存为)”命令后,在弹出的“保存或者(另存为)”的对话框中输入文件名;B、再单击这个对话框中“工具”栏下的“常规选项”按钮,在弹出的“保存选项”的对话框中输入自己的密码;这里要注意,它提供了两层保护,如果你也设置了修改权限密码的话,那么即使文件被打开也还需要输入修改权限的密码才能修改。C、单击“确定”按钮,在弹出的密码确认窗口中重新输入一遍密码,再点击“确认”,最后点“保存”完成文件的加密工作。当重新打开文件时就要求输入密码,如果密码不正确,文件将不能打开。2、对单元格进行读写保护单元格是Excel执行其强大的计算功能最基本的元素,对单元格的读写保护是Excel对数据进行安全管理的基础。对单元格的保护分为写保护和读保护两类,所谓写保护就是对单元格中输入信息加以限制,读保护是对单元格中已经存有信息的浏览和查看加以限制。对单元格的写保护有两种方法:A、对单元格的输入信息进行有效性检测。首先选定要进行有效性检测的单元格或单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论