基于Android平台自动化测试.docx
《基于Android平台自动化测试.docx》由会员分享,可在线阅读,更多相关《基于Android平台自动化测试.docx(15页珍藏版)》请在冰点文库上搜索。
基于Android平台自动化测试
基于Android平台的自动化测试方法研究与实现
摘要
软件自动化测试技术与手动测试相比在效率和缺陷查找准确度方面有明显的优势,越来越多的团队在软件测试中使用自动化测试方法代替手动测试。
软件测试已成长了数十年,自动化测试也被更多的人熟练使用,但是之前的自动化测试大多是用在PC机上,对基于Android平台的自动化测试现在还出于初步阶段。
随着Android技术的不断发展,如何保证应用软件的准确性和可靠性成为一个重要的课题;另外由于手机软件平台设计的封闭性特点,对于终端的测试都是使用的手动测试。
但是随着产品设计周期的不断缩短,设计成本的不断压缩,更凸显了手动测试耗时等缺点以及自动化测试的优势。
本文首先对自动化测试的基本概念进行了阐述;在后续章节中重点介绍了嵌入式系统的特点并分析了嵌入式软件测试流程。
通过对Android系统的分析Android系统分为两层:
一层是基于Java的应用层;另一层是基于Linux的底层操作系统。
因此,本文选择在Java层利用Java灵活多变的特性实现Android系统自动化测试。
在JavaSE6中Instrumentation包被赋予了强大的功能,它可以在应用程序运行期间改变Android基本元素的生命周期;检测应用程序与系统间的交互等;同时在Java白盒测试中通常使用JUnit框架,Android同时也继承了JUnit测试框架并在JUnit框架的基础上进行了补充如ActivityInstrumentationTestCase2——用于多个Activity的功能测试,可以利用它创建意图并方便的在各个activities间切换。
通过对Android系统和Java特性的研究本文选择基于Instrumentation+JUnit框架的方法实现Android系统自动化测试。
本文进一步研究了Android自动化测试流程并重点研究了测试脚本的编写,在Android自动化测试中选取了Robotium作为功能测试工具,选用Monkey作为性能测试工具。
在文章结尾部分对文中分析的Android系统自动化测试方法针对实际项目进行了实践应用,并得到了较好的使用效果,但由于Android自动化测试还处于早期研究阶段还有很多需要改进的地方,文章最后也对需进一步研究的方面做了总结。
关键词:
软件测试、嵌入式测试、Android系统、自动化测试、InstrumentationII
ABSTRACT
Automatedtestingtechnologyhasobviousadvantagesovermanualtestinginefficiencyandindefectsearchforaccuracy,somoreandmoreteamsintestingusetheautomatedtestinginsteadofmanualtesting.Softwaretestinghasadevelopmenthistoryfordecades,andmoreandmorepeoplearealsofamiliarwiththeautomatedtesting.Nonetheless,thepreviousautomatedtestingismostlyusedinPCS,andthetestautomationbasedontheAndroidplatformisstillontheinitialstage.WiththecontinuousdevelopmentoftheAndroidtechnology,howtoguaranteetheveracityandreliabilityofapplyingsoftwarebecomesanimportantsubject.Inaddition,duetotheclosurecharacterofthedesignofthecellphonesoftwareplatform,manualtestisusedforterminaltesting.However,withtheproductdesigncyclecontinuouslyshorteninganddesigncostsceaselesslycompressing,itismoreprominenttohighlightshortcomingsofthemanualtest,forexampletimeconsuming,andadvantagesoftheautomatedtest.
Thispaperfirstdescribedthebasicconceptoftheautomatedtesting;andthesubsequentchaptersfocusedonthecharacteristicsofembeddedsystemsandanalyzedtheembeddedsoftwaretestingprocess.ThroughtheanalysisoftheAndroidsystem,theembeddedsystems‘structureisintroduced,theAndroidsystemwasdividedintotwolayers:
oneisthelayerofJava-basedapplication;theotheristhelayeroftheunderlyingLinux-basedoperatingsystem.Therefore,thispapermadethemostoftheflexibilityofJavainJavalayertoachieveourautomatedtesting.IntheJavaSE6theInstrumentationpackagewasgiventhemostpowerfulfunction,itcouldchangethecycleofthebasicelementsofAndroid,anddetecttheinteractionbetweenapplicationsandsystemsduringtheapplicationrunning;meanwhilewhentestingtheJavawhitebox,weusuallyusetheJUnitframework,andAndroidalsoinheritedtheJUnittestingframeworkandsupplementedsuchasActivityInstrumentationTestCase2-formorethanoneActivityoffunctionaltesting,itcouldbeusedtocreateintentandconvenientlyswitchamongthevariousactivitiesbasedontheJUnitframework.AftertheresearchofthefeaturesofAndroidandJavathepaperhavechosentheInstrumentationofJUnitframework-basedapproachtoachievetheautomatedtestingoftheAndroidsystem.ThepaperhadafurtherstudyoftheAndroidautomatedtestingprocessandpaidmoreattentiontothepreparationoftestscripts,,andintheAndroidautomatedtestingweselectedRobotiumasafunctionaltestingtool,andregardedtheMonkeyasaperformancetestingtool.III
Attheendofthearticle,theactualprojectsareputintopracticeaccordingtotheautomationtestingmethodsoftheAndroidsystemanalyzedinthispaper,andpreferableusingeffectshavebeenachieved.Whereas,sinceAndroidautomatedtestisonitsearlyresearchstageandhasalottoimprove,theauthormakesasummaryforfurtherresearchesinthelastpart.
Keywords:
SoftwareTesting,EmbeddedTesting,AndroidSystem,AutomatedTesting,InstrumentationIV
目录
摘要......................................................I
ABSTRACT...................................................II
1概述.....................................................1
1.1论文研究背景及意义............................................1
1.2研究现状及发展................................................2
1.3论文的主要工作................................................2
1.4论文结构......................................................3
2自动化测试.................................................5
2.1自动化测试概念................................................5
2.2手工测试与自动化测试..........................................6
2.2.1手工测试的局限性..........................................6
2.2.2自动化测试的优势..........................................6
2.3正确认识自动化测试............................................7
2.4自动化测试流程................................................8
2.4.1能够实施自动化测试的前提条件..............................8
2.4.2选取测试工具..............................................9
2.4.3自动化测试框架...........................................11
2.4.4编写脚本.................................................12
2.4本章小结.....................................................12
3嵌入式软件测试............................................14
3.1嵌入式系统简介...............................................14
3.1.1嵌入式系统的基本概念.....................................14
3.1.2嵌入式系统的不同点.......................................15
3.1.3嵌入式系统软件开发流程及模式.............................17
3.2嵌入式系统测试..............................................18
3.2.1嵌入式系统测试概述.......................................18
3.2.2嵌入式测试的特点.........................................19
3.2.3评测方法.................................................19
3.3本章小结.....................................................21V
4Android系统及可测试性研究..................................22
4.1Android系统简介.............................................22
4.2Android可测试性分析.........................................23
4.3Hierarchyviewer捕获组件.....................................25
4.4Instrumentation在测试中的应用...............................27
4.4.1Instrumentation简介......................................27
4.4.2TestingAPI...............................................29
4.5本章小结.....................................................30
5Android自动化测试实例.....................................32
5.1被测项目介绍及可测性分析.....................................32
5.2制定被测项目测试计划.........................................34
5.3设计项目测试用例.............................................40
5.3.1项目功能测试用例.........................................40
5.3.2项目性能测试用例.........................................43
5.4制作项目测试脚本.............................................45
5.5分析项目测试结果.............................................48
5.6本章小结.....................................................49
6总结与展望................................................50
6.1本文工作总结.................................................50
6.2进一步研究工作展望...........................................51
参考文献................................................52
致谢.....................................................55第1页
1概述
1.1论文研究背景及意义
智能手机正在被越来越多的人接受及使用,它的普及已经是一个不可扭转的趋势,Android系统的出现更是加快了智能手机的发展速度,Android系统的开源性以及google在开发层面的强势推动更是加快了Android系统的发展,据统计现在已经有1亿台Android系统被激活,而且以每天40万台的速度在增长,根据美国市场研究发布的数据得知Android系统在美国的市场占有量达到44%,且已经超过了苹果的占有率。
而在中国Android手机数量也在飞速增加,虽没有确切的数据统计但从我们身边不难发现处处可见Android系统智能手机。
正是Android终端在全球的占有量的持续增进,Android应用程序开发商也在频频试水,这也加快了基于Android平台应用软件的飞速发展。
为迎合市场需求越来越多的Android应用服务开发商加快了软件开发进程,并争分夺秒的抢占市场商机。
怎样能更快的得到稳定、正确、良好用户体验的应用程序成为开发商重点考虑的问题。
正是众多应用软件的出现用户对应用软件的要求也就更加苛刻,总是希望有一种产品能够满足所有业务需求。
与此同时,用户的需求也是随着时间而不断改变着,以至于很多应用软件都需要跟家特定用户以及特定使用环境而特别定制[1]。
但是怎样才能在最短的时间提供满足客户需求的软件呢?
于是开发经理总是在想尽办法缩短工期,以用最少的资源、资金创造最优异的软件,必不可少的繁冗、复杂、费时的手动测试被简洁、省时的自动化测试所替代。
自动化测试在节省劳动成本、提高效率等方面存在明显的优势,主要体现在:
1、更便于对已修复的缺陷进行回归测试,这一点在软件测试中是非常重要的,往往在缺陷修改后通过手动测试很难确保在回归测试中执行过程和最初发现缺陷时的执行过程完全一致,而使用自动化测试只要在执行时不改变测试脚本就可以确保测试过程相同,而且使用自动化测试进行回归测试可以确保回归的准确性,并提高测试效率。
2、自动化测试可以执行更繁琐且重复度较高的测试,并且执行速度较快,因此可以代替测试人员实施大量重复性工作。
3、利用自动化测试可以对软件实施手动测试可望而不可及的测试内容,例如:
压力测试,压力测试需要模拟大量用户同时操作,用户数量甚至要求达到亿数量级,这对于手工测试来说是不可能实现的,但是使用自动化测试可以轻松地设定在线使用用户数量,工具会自动模拟大量用户同时使用的情况从而检测系统在大量用户使用的情况下的反应情况。
4、可以更好的合理分配资源,例如:
使用手动测试要将大量的第2页
测试人员放在无创造力且重复性高的点击工作中,而使用自动化测试可以使用工具代替测试人员来做一些重复性的工作,而将人员放在更有价值的工作中这也同时提高了团队的创造性以及工作效率。
5、自动化测试的可重复性强,很多情况缺陷是有偶发性的,为了能再现发现的缺陷可能要大量的重复操作,而且要求执行过程的一致性,而使用自动化测试可以确保测试过程的一致性以及可重复性。
6、测试用例的复用性标志着测试执行效率的高低,对于自动化测试测试人员可以根据录制的脚本,在原始脚本的基础上根据需求进行改动,这同时也提高了测试脚本的复用性。
7、测试过程的确定性,自动化测试中整个测试过程都是由工具自动完成的。
因此它不存在手工测试中出现的漏洞、疏忽等情况,确保了测试过程的确定性[2]。
1.2研究现状及发展
随着越来越多的人关注Android系统自动化测试,用于Android自动化测试的方法、框架也随之增加,目前常用的自动化测试框架有ActivityInstrumentation、MonkeyRunner、Robotium等。
Android系统对activity的生命周期控制是完全由系统控制的,因此测试人员无法在应用程序中加入测试程序——控制应用程序按照预设的方法运行。
因此,如何控制activity的生命周期成为完成自动化测试首先要解决的问题。
Instrumentation框架为Android系统自动化测试带来了可能,由于Instrumentation内含有大量用来控制activity等Android基本元素生命周期的方法。
Instrumentation可以充当系统与应用程序间的控制器,它不仅可以控制Android元素的生命周期还可以检测应用程序的运行情况等[3]。
在Java单元测试中通常使用JUnit,Android同时也继承了JUnit测试框架并在JUnit框架的基础上进行了补充。
同时Android测试框架还提供了很多功能及性能测试工具如MonkeyRunner——可运行由Python语言编写的测试用例,主要用来对Android系统进行功能测试;Monkey——自动生成伪随机数并模拟用户点击,点击可以在屏幕任意地方发生,并可以设定点击数量及点击事件发生的间隔时间,是一款很好的压力测试工具。
Robotium是一款基于Instrumentation的测试框架并在此基础上将Instrumentation框架进行了完善,它允许测试开发人员实现横跨多个activity的测试,并且可以在没有源代码只有SPK的情况下实现测试。
1.3论文的主要工作
通过分析自动化测试现有理论方法及其特点,将其应用到Android自动化测试,实现Android平台的自动化测试。
第3页
论文研究内容:
1.手工测试的不足以及自动化测试在节省时间、资源等方面的特点,并重点介绍了如何看待自动化测试。
2.手工测试与自动化测试测试的不同,并研究自动化测试在提高软件质量和工作效率等方面所具有的优点;项目开发模式在什么条件下适合使用自动化测试,以及注意事项,测试用例的编写等。
3.嵌入式系统的特点以及对嵌入式系统进行自动化测试所存在的困难,嵌入式系统自动化测试评测方法等。
4.Android测试属于嵌入式测试,因此不能使用普通软件测试中已有的成熟的测试工具像QTP,LoadRunner等,分析其差异性并得到相应的解决方法。
5.研究java中instrumentation的特点以及使用方法,利用Android自带的JUnit框架结合instrumentation框架实现Android系统自动化测试。
针对项目的特点选择合适的自动化测试工具。
拟