发明内容
本发明的目的在于克服现有技术的不足,提供一种实现手机计算器自动化测试的方法,能自动进行手机计算器稳定性能进行测试,且对测试结果进行校对,测试方便快捷,效率高。
为了达到上述目的,本发明采用的技术方案是,一种实现手机计算器自动化测试的方法,其步骤如下:
步骤1、将计算器测试界面分为基本面板界面、高级面板界面,总结测试用例;
步骤2、将基本面板分为数据显示栏、计算面板及Menu目录,对测试用例进行分解;
数据显示栏分为显示计算结果、显示输入内容和显示历史记录,
计算面板分为0~9和小数点加减乘除及等号按键、删除键与清除键、横向滑动屏幕,
Menu目录分为清除历史记录和进入基本面板
步骤3、将高级面板分为数据显示栏、计算面板及Menu目录,对测试用例进行分解;
数据显示栏分为显示计算结果、显示输入内容和显示历史记录,
计算面板分为各高级运算符、横向滑动屏幕,
Menu目录分为清除历史记录和进入高级面板的测试;
步骤4、对步骤2、3中对应的各项功能调用Robotium中的solo方法进行顺序编码,并将编码集成,然后编译成可执行脚本;
步骤5、点击面板测试,并启动自动测试程序;
步骤6、根据预期对各项功能的测试设置关键点;
步骤7、在测试时调用截屏函数对关键点的测试屏幕进行截屏;
步骤8、将截屏结果与正确结果进行对比验证;
步骤9、测试结果与正确结果一致则进行下一项测试,否则发出出错报告。
所述的自动化测试包括计算器面板按键测试、数据显示栏测试、删除功能测试、清除功能测试、基本运算测试、Menu功能测试、高级面板计算测试、特殊运算测试。
与现有技术相比,本发明的有益效果是:第一、在手机侧运行可执行自动化测试,无需连接其他设备;第二、自动化过程完全可控,使测试有针对性;第三、测试强度可以控制,只需简单调节代码参数;第四、可以自动记录测试结果,在发生严重错误时,自动断言,记录出错现场;第五、生成可执行文件,测试人员只需根据说明运行程序,即可执行整个测试,操作简单方便,安全可靠,效率高。
具体实施方式
本发明的主旨在于克服现有技术的不足,提供一种实现手机计算器自动化测试的方法,将计算器的各种功能进行集中顺序编码,并生成可执行文件脚本,在测试时,只需要一台带有计算器功能的android手机进行手机计算器稳定性的自动化测试,包括计算器特殊计算结果的校正对比,测试过程中,程序会尽可能多的找出bug漏洞,对于错误信息的获取尤为重要。
对于测试过程中计算器界面跳转是否成功的验证,通过调用截屏函数来实现,一般每一步操作都可以通过自动获取当前屏幕来进行结果的验证,但如果图片过多加重了测试的工作量,因此本发明的自动化测试方法只是在某些关键点才调用截屏函数。通过logcat来获取出错的信息,这主要是针对死机情况而言。
下面结合实施例参照附图进行详细说明,以便对本发明的技术特征及优点进行更深入的诠释。
本发明方法的流程图如图1所示,一种实现手机计算器自动化测试的方法,其步骤如下:
步骤1、将计算器测试界面分为基本面板界面、高级面板界面,总结测试用例;
步骤2、将基本面板分为数据显示栏、计算面板及Menu目录,对测试用例进行分解;
数据显示栏分为显示计算结果、显示输入内容和显示历史记录,
计算面板分为0~9和小数点加减乘除及等号按键、删除键与清除键、横向滑动屏幕,
Menu目录分为清除历史记录和进入基本面板的测试
步骤3、将高级面板分为数据显示栏、计算面板及Menu目录,对测试用例进行分解;
数据显示栏分为显示计算结果、显示输入内容和显示历史记录,
计算面板分为各高级运算符、横向滑动屏幕,
Menu目录分为清除历史记录和进入高级面板;
步骤4、对步骤2、3中对应的各项功能调用Robotium中的solo方法进行顺序编码,并将编码集成,然后编译成可执行脚本;
步骤5、点击面板测试,并启动自动测试程序;
步骤6、根据预期对各项功能的测试设置关键点;
步骤7、在测试时调用截屏函数对关键点的测试屏幕进行截屏;
步骤8、将截屏结果与正确结果进行对比验证;
步骤9、测试结果与正确结果一致则进行下一项测试,否则发出出错报告。
所述的自动化测试包括计算器面板按键测试、数据显示栏测试、删除功能测试、清除功能测试、基本运算测试、Menu功能测试、高级面板计算测试、特殊运算测试。
所述的自动化测试内容包括删除键的点击、长按;清除键的点击、长按;数据显示栏的数据显示、左右滑动、上下滑动;基本面板和高级面板的相互切换:左右滑动屏幕、Menu目录;加减乘除及科学计算的结果验证;计算器特殊运算产生的特殊结果的校正;测试结果的记录、读取与比较。
基本面板的结构示意图如图2所示,基本面板分为数据显示栏、计算面板及Menu目录;数据显示栏分为显示计算结果、显示输入内容和显示历史记录;计算面板分为0~9和小数点加减乘除及等号按键、删除键与清除键、横向滑动屏幕; Menu目录分为清除历史记录和进入基本面板的测试。
计算器面板按键测试的目的是测试计算器各按键功能是否能有效的现实,为后续测试提供根本保证。依次点击计算器面板上的各个按键,每次按下一个键就进行一次比较。如果比较结果正确,则继续点击下一个按键,如果比较结果错误,则通过Eclipse自带的Failure Trace可精确定位到出错的按键,并终止所在的测试。出错信息也在可以在log日志中查看。
计算器面板按键测试的流程图如图3所示,其步骤如下:
步骤1.1、进入面板按键测试程序;
步骤1.2、判断是否进入计算器;
步骤1.3、未进入计算器则结束程序,进入计算器则点击计算器的按键;
步骤1.4、判断测试结果与实际结果是否相等;
步骤1.5、结果不等则结束测试程序,结果相等则判断循环是否结束;
步骤1.6、循环结束则结束测试程序,否则继续点击计算器按钮并循环判断。
在测试过程中,需要注意一下几点:第一、Eclipse自带的logcat信息大致指明了出现错误的原因,部分信息更是指出了错误所在的具体代码行;第二、加减乘除及等号的比较通过具体运算来验证按键的有效性与正确性;第三、对各步操作结果还可以通过调用截屏函数来拍照验证。
数据显示栏功能测试目的是验证数据显示栏的各项功能是否正确。数据显示栏包括显示当前数据和历史记录数据。在测试时,进入计算器,任意点击计算器面板,点击的数据将在数据显示栏显示。当输入的数据超出九位时,隐藏先前输入的数据,显示最新输入的数据。要查看当前数据显示栏隐藏的数据,可对数据显示栏进行左右拖动,要查看历史数据,可上下滑动数据显示栏。
删除功能测试的目的为验证计算器删除键的点击和长按功能是否正确。在测试时,在数据显示栏输入多个数据,点击删除键,删除一个数字或符号,长按删除键,快速连续删除数据显示栏的数据,在点击和长按的每一个操作步骤之后都安排有比较函数,来验证每步操作的正确性。长按删除键后,删除了数据显示栏显示的数据,通过获取数据显示栏数据与空字符串“”进行比较,相等则通过,不相等则发出错误报告。长按删除键后比较结果,不管对错都结束所在的测试。如果比较结果正确,则无任何发出错误报告信息,若果结果出错,有相关错误提示,可以根据log信息来进行分析。
删除功能测试的流程图如图4所示,其步骤如下:
步骤2.1、删除功能测试程序开始;
步骤2.2、判断是否进入计算器;
步骤2.3、未进入计算器则结束程序,进入计算器则点击计算器的删除键;
步骤2.4、判断测试结果与实际结果是否相等;
步骤2.5、结果不等则结束测试程序,结果相等则长按删除键;
步骤2.6、获取结果并再次比较,测试程序结束。
清除功能测试目的在于验证计算器清除键的点击和长按功能是否正确。测试的前提条件是数据显示栏当前显示有数据以及存在历史数据记录。点击清除键C,有效清除数据显示栏当前显示的数据,然后进行结果比较的操作,比较结果出错,终止所在的测试,反之可以继续运行长按操作。长按清除键C,有效的清除了所有的历史记录的数据,此时比较函数主要是通过上下滑动屏幕来验证结果的正确性,通过断言和截屏来实现。
清除功能测试的流程图如图5步骤如下:
步骤3.1、清除功能测试程序开始;
步骤3.2、判断是否进入计算器;
步骤3.3、未进入计算器则结束程序,进入计算器则点击计算器的清除键;
步骤3.4、判断测试结果与实际结果是否相等;
步骤3.5、结果不等则结束测试程序,结果相等则长按清除键;
步骤3.6、获取结果并再次比较,测试程序结束。
基本运算功能测试目的在于验证计算器的基本运算功能:加减乘除及其四则混合运算。加减乘除是计算器的基本运算功能,也是使用频率最多的功能。通过比较基本运算得到的结果,可以有效的验证加、减、乘和除四个运算符号及等号的正确性。
每个基本运算占用一个测试程序,每个测试程序均含有比较函数,比较结果相等则通过,比较结果不相等则发出错误报告,错误提示可精确到具体运算的代码行。减法运算有四个表达式,因此过程略有差别,就是在比较通过的情况下还有两次循环过程,其中只要有一个出现错误,测试程序就会终止。以下每个运算表达式仅作为代表列出,实际编程中可进行适当的修改:
加法运算:1234+5678=9999;
减法运算:减法运算又有减数大于、小于和等于被减数三种情况,如:2-1=1,2-2=0,2-3=-1,附加小数运算8.03-7.96=0.07;
乘法运算:123*456=56088;
除法运算:除法运算有被除数为0和非0两种情况,如:1/0=无穷大,9/3=3;
混合运算:99999900+99-9999999/3333333*33=99999900。
基本运算测试的流程图如图6所示,其步骤如下:
步骤4.1、删除功能测试程序开始;
步骤4.2、判断是否进入计算器;
步骤4.3、未进入计算器则结束程序,进入计算器则输入计算表达式,并点击等号;
步骤4.4、获取计算结果;
步骤4.5、判断计算结果与实际结果是否相等,结果不等则系统发出错误报告并结束程序,结果相等则显示测试通过并结束程序。
Menu功能测试的流程图如图7所示,Menu测试的目的在于测试计算器的Menu功能是否正确。测试时在主菜单或待机桌面点击计算器图标,进入了计算器的基本面板,在基本面板点击Menu键,弹出清除历史记录和高级面板选项。点击清除历史记录,功能和长按清除键功能一样,清除了所有历史记录,点击高级面板即可进入计算器的高级面板,进行科学计算。同样,在高级面板点击Menu键,同样弹出清除历史记录和基本面板,清除历史记录功能和基本面的清除历史记录功能一样,点击基本面板则回到计算器的基本面板。在测试过程中,判断是否从基本界面进入了高级界面或者从高级界面进入了基本界面,可以调用截屏函数通过截取图片来进行判断,另外历史记录是否已经被清除干净,可以通过上下滑动数据显示栏和截图的方法来进行验证。
高级面板计算测试目的在于验证高级面上各科学计算符的有效性。高级面板的自动化测试目前在存在一定的困难,主要问题就在于高级面板的所有科学计算只能放在一个测试程序中进行测试。如果将各个科学计算分别放在单个测试程序中进行测试,那么在第二个测试程序进入高级面板的时候,计算器会自动退出计算器回到桌面。进入高级面板有两种方式:左右滑动屏幕和Menu选项的高级面板。高级面板运算符号有sin、cos、tan,ln、log、!、^和√。
高级面板计算测试的流程图如图8所示,其步骤如下:
步骤5.1、程序开始;
步骤5.2、判断是否进入计算器;
步骤5.3、否则结束程序,进入计算器则点击Menu目录,进入高级面板;
步骤5.4、判断是否进入高级面板,否则发出出错报告,进入高级面板则进行科学运算,并获取运算结果;
步骤5.5、判断获取的运算结果是否与实际结果一致;
步骤5.6、一致则结束程序,否则发出出错报告。
特殊运算测试目的在于验证计算器的特殊计算功能,一般都是结果为无穷或者出错的情况。测试要求为:第一、计算器基本面板上的除法运算,当被除数为零时,计算结果应该显示为“出错”,否则应该视为计算错误;第二、高级面板tan运算,当计算(±∏/2)的tan值时,这是没有意义的计算,根据用户体验的定义,计算器的计算正确结果应该显示为“出错”;第三、进行对数运算时,正常情况下真数应该大于零,当真数等于零 时,正确结果应该为负无穷大,当真数小于零时,计算结果应该显示“出错”;第四、关于开方运算,根号下的数应该大于或等于零,小于零时计算结果也应该显示“出错”;第四、对于上述的特殊运算,每个运算符都置于一个单独的测试程序中,同时通过调用比较函数来比较计算器,如果计算器计算的结果和我们预置的正确结果不相等,则会有相应的错误信息提示,否则直接通过。
特殊计算有图如下:
在测试时,因为高级面板上的运算有很多特殊的情况,比如tan(±∏/2),ln(负数),log(负数),负数的阶乘及开方,这些运算结果都应该显示为出错,在结果比较中也应该与“出错”进行比较,相等则通过,不相等则显示相应的错误。
在对计算器进行自动化测试编码之前,需要对计算器利用层级分析器来了解计算器上的各按键属性,然后再选择适当的solo方法进行编程。
所有按键的点击都可以采用solo.clickOnButton(index)来实现;所有滑动都可以采用solo.drag(fromx,tox,fromy,toy,stepcount)来实现。坐标的获取也可精确的获取,至于屏幕上的左右拖动,为了不影响程序的扩展,先获取整个计算器框架的坐标,然后在此基础上获取框架左右两边的坐标,由此即可确定左右拖动的始终坐标点,从而实现屏幕之间的切换。
英文模式测试,在上述测试中,所涉及到的均是手机在中文模式下的测试,也是目前最常规的测试。但随着产品质量的提高,手机也将被越来越多的人士所青睐。由于智能机暂时只支持中文和英文两种语言,因此对于在英文模式下的测试也是必不可少的。
对于计算器来说,英文模式下的计算界面并没有发生变化,唯一发生变化的一点就是Menu功能文字的变化,因此必须保证Menu文字的正确性与功能的有效性。在基本面板上,点击Menu键,弹出的功能键是Clear history与Advanced panel,分别对应的是清除历史记录与高级面板;在高级面板上,点击点击Menu键,弹出的功能键是Clear history与Basic panel,分别对应的是清除历史记录与基本面板。
因此,英文模式下的计算器测试程序,相比中文模式基本不变,只需要将solo.clickOnMenuItem(String text)中的text内容改变成中文即可(如果使用的是pressMenuItem(int index),则不需要任何改变)。至于英文模式下的测试流程与中文模式下的测试流程一样,在这里就不详细说明。
尽管本发明通过具体实例对如何实现手机计算器自动化测试的方法作出了清晰而完成的描述,但是本发明不仅仅限于所述实施例,通过简单的改变程序来达到相同目的是可能发生的并且都包括在本发明之中。