本文内容:Android自动化测试框架初探
版权声明:本文为原创文章,未经允许不得转载
博客地址:http://blog.csdn.net/kevindgk
Android自动化测试框架从2007年发展至今时今日日趋成熟,从早期官方提供的半自动化工具逐步演变到现在的全自动化框架,包括支持跨应用、WebView等,其功能越来越强大,并融合库思想、数据驱动、模块化、函数桩等先进的自动化测试思想和理念,使得测试更加方便。尤其是在使用敏捷开发的团队中,自动化测试显得尤为重要。
Android自动化测试框架,从狭义上讲就是通常提起的自动化测试工具,比如Robotium、Appium、Selenium等,广义上除了这些自动化测试工具,还有测试管理平台,包含测试中对测试用例的管理、报告输出、数据统一存储等综合管理平台。
注意,本文档中指的自动化测试,一般值得均是Android端的自动化测试。
自动化测试是把以人为驱动的测试行为转化为机器执 行的一种过程。通常,在设计了测试用例并通过评审之后,由测 试人员根据测试用例中描述的规程一步步执行测试,得到实际结 果与期望结果的比较。在此过程中,为了节省人力、时间或硬件 资源,提高测试效率,便引入了自动化测试的概念。
本质:编程测试,即 编写一个程序测试另一个程序。
过程:录制脚本>修改录制脚本>回放脚本>查看报告。
小编作为一名Android开发,更关心的是自动化测试框架能够给我们开发人员以及整个项目带来什么益处。
所以说,我们不能够为了使用自动化测试框架而强行使用,也不能由于对自动化测试的不了解而趋之若鹜。我们应该根据自己的项目情况,在合适的开发阶段,选择合适的自动化测试工具,来帮助提高整个团队的开发效率。作为一个leader,也会会比较关心在团队中引入自动化测试的优势和缺点,但是作为一个敲代码的同学来讲,应该更喜欢贴一万行代码直接将核心知识,接下来就是小编对目前了解到的Android自动化测试框架的整理。
应用场景 | 测试内容 | 特点 |
---|---|---|
性能测试 | 流畅度、速度、流量、耗电量、内存、CPU等 | 模拟正常、峰值和异常情况,监控应用的性能数据。测试重复性强,指标固定,并且需要测试数据的横向和纵向对比,形成庞大的测试矩阵,非常适合使用自动化测试 |
稳定性测试 | ANR、Crash、闪退等 | 模拟用户的长时间操作,测试应用的稳定性,通常使用Monkey做测试 |
功能测试 | 业务需求测试、回归测试等 | 由于目前产品快速迭代,造成了脚本实现和维护等成本大,需要不断的磨合,常常需要结合使用多种测试工具进行开发,开发难度较大 |
兼容性测试 | 适配不同的手机 | 常用方法就是使用业界比较成熟的测试平台:阿里云测、腾讯优测、百度MTC、Testin等 |
接口测试 | 重要的API测试 | 和PC端的接口测试思路一样,通过脚本去遍历所有重要的API,非常适合使用自动化测试去实现,脚本相对稳定而且效果明显 |
安全测试 | 静态扫描代码、权限等发现安全隐患 | 目前各大平台提供的安全测试都是一些基本的检测,远远比不上专门的安全测试 |
单元测试 | Android Junit | 开发同学自行完成,作用并不是很大,可以直接参考robotium的白盒测试 |
线上监控 | 对线上数据监控 | 不属于传统的自动化测试范畴,主要是对线上的数据监控,然后利用数据分析发现问题,可以非常直接的提升产品的质量 |
当逐渐深入的了解自动化测试,越发觉得自动化测试包含的内容十分庞大,涉及到前端、后台、UI等各个部分,而且需要掌握的知识点很多,需要使用的工具很多,需要学习的语言也很多,另人望而生畏。然后,随着慢慢的整理和分析,才对整个自动化测试有了一个初步的完整性的了解。
通用的基础框架一般都会包含三个核心部分:
下面的介绍都是截至到当前时间,在实际开发中比较常用的自动化测试工具,但是由于近几年自动化测试发展十分迅速,很有可能几个月或者几年之后,会使用了新的技术,或者下面工具的特点也会做出一些改变,所以接下来的介绍目的就是让大家有个初步的了解。各个工具的使用方式以及优缺点还需要去各自的官方网站上进行查看,小编对于新的技术或者工具的首要态度就是一切依官方为准!
Web端:
Android端:
IOS:
。。。
Android端:
Web端:
Android系统自带的稳定性测试的小工具,主要通过adb命令来启动monkey测试,monkey在运行时会根据命令行参数的配置,生成伪随机的事件流,并在Android设备上执行该事件流,同时对测试系统进行检测。
优点:
缺点:
Android官方支持的自动化测试框架,>=API 17,Android 4.2
语言:Java
优点:
缺点:
基于Instrumentation
语言:Java
优点:
缺点:
Android:
IOS:
语言:Java/Python/Ruby/C#
优点:
缺点:
只有在各个工具都使用过之后,才能真正体会到他们的优缺点,基本上都是对google官方的工具进行二次封装,使得使用起来更加便捷,所以我们需要对底层的几种框架有一个基本的了解,那么再学类似的工具就十分简单了。
随着性能测试、兼容性测试的需求日益增加,越来越多测厂商开始推广云测试平台,比如:
阿里云测
官方地址
腾讯优测
官方地址
Testin
官方地址
这些云测试平台大同小异,与Google的Cloud Test Lab功能基本相同,包含:
a.兼容性测试:通过大量真机覆盖大部分机型
b.压力测试:通过脚本实现压力测试
c.缺陷分析:通过代码静态扫描和测试中发生的ANR、Crash等提供应用的缺陷分析
d.性能测试:在测试中监控应用性能等数据
e.远程真机租用:用户可以远程访问DeviceLab中的真机,并通过远程控制的方式进行使用。
使用云测平台在一定程度上解决了很多公司的测试问题,特别是一些付费的服务,可以进行一些”深度测试和分析”,让公司享受到更好的测试服务。例如可以帮助测试人员进行分析、录制脚本和回放等功能,对于一些初创企业来说,目前算是一种比较好的测试与优化手段。
关键点:可持续集成
难点:对自动化框架的搭建、工具的二次开发
其实自动化框架只是日常测试中的一个辅助手段,说白了它就是利用自动化测试框架以及工具能理解的程序去代替人去完成测试,通过比较执行的结果来判断测试是否通过然后生成报告。它的又是很明显,无论多么复杂的操作,即使反复执行成千上万遍,只要程序没有问题,它都会快速的执行完毕,比手工要轻松的多;但劣势也很明显,最大的缺点就是工具是人工思考后的一个固话程序,它不会变通,是按照人的旨意来完成相应的任务。所以测试人员对工具的应用和改造能力显得尤为重要,通过对被测应用的深入认识和思考,转化成可以实现的测试需求,再配合这些工具和写代码的同事进行封装,就可以完成测试中各个领域的人工代替工作。
1.《腾讯Android自动化测试实战》 丁入敏 盛娟等著 机械工业出版社
2.《深入理解Android自动化测试》 许奔著
3.安卓APP自动化测试(kevin公开课专辑)
4.《Android 群英传 之 神兵利器》 徐宜生著
微信: