自动化测试简介及主流测试工具选择
1.自动化测试简介
1.1 什么是自动化测试
测试自动化就是充分利用市场已有的或自行开发的测试工具,全部或部分替代手工测试、完成手工测试无法完成的测试任务,以及相关的测试数据的记录和测试报告的生成等。
相对于手工测试而言,测试自动化通常具有速度快、执行效率高、执行过程受外界因素干扰小、测试结果准确等优点,缺点是前期投入较大,所以在采用测试自动化之前应当做好相应的评估工作。
自动化测试的目的是通过自动执行测试脚本,使测试人员在更短的时间内能够更快地完成更多的软件测试,并提供以更高的频率执行测试的能力,从而有效降低测试成本、提高测试效率。
1.2 自动化测试的前提
- 测试人员的编程能力;
- 重用测试脚本的设计;
- 人机交互界面的早期冻结;
- 测试脚本开发的投入;
- 测试人员对测试工具的熟练程度。
1.3 自动化测试的优势
- 对新版本执行回归测试:对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。
- 更多更频繁的测试:在回归测试阶段,如果是每天 / 每 2天都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,手工测试将是非常的耗时和繁琐,而且非常的枯燥,这样必然会使测试效率低下。完善的自动化测试可以替代测试人员的手工测试。
- 一致性和可重复性:由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,人是很难做到的。由于自动化测试的一致性,很容易发现被测软件的任何改变。
1.4 自动化测试的局限
- 自动化测试的目的在于确认旧有的功能有没有受新改动的影响,而手工测试的目的在于发现新缺陷:事实证明新缺陷越多,自动化测试失败的几率就越大。发现更多的新缺陷应该是手工测试的主要目的。
- 技术问题、组织问题、脚本维护:自动化测试的推行,有很多阻力,比如组织是否重视,是否成立这样的测试团队,是否有这样的技术水平,对于测试脚本的维护工作量也挺大的,是否值得维护等等问题都必须考虑。
2.自动化测试框架及工具的选择
2.1 主流自动化测试框架及工具介绍
目前市面上主流的自动化测试框架或工具如下:
1.通用自动化测试框架:
- Robot Framework(支持Python、Java、C语言,开源)
- Cucumber(支持Java、Ruby、JavaScript语言,开源)
2.功能自动化测试工具:
- WinRunner(无语言要求,软件太古老)
- QTP(使用VB语言,付费)
- Rational Function Tester(支持Java、VB、C#语言,付费)
3.Web自动化工具:
- QTP(使用VB语言,付费)
- Selenium(支持Java、Python、Ruby、PHP、C#、JavaScript等语言,开源)
- Watir(使用Ruby语言,开源)
4.性能测试工具:
- LoadRunner(使用C语言,付费)
- Jmeter(使用Java语言,开源)
5.Web安全测试工具:
- Appscan(无语言要求,付费,但有破解版)
- Wapiti(使用Python语言,开源)
6.App自动化测试工具:
- Appium(支持Java、Python、Ruby、PHP、C#、JavaScript等语言,开源,支持IOS和Android)
- Instruments(使用Java语言,开源,只支持IOS)
- Monkey Runner(使用Python语言,开源,只支持Android)
7.白盒测试工具(只考虑Java的):
- Jtest(付费)
- Junit(开源,社区活跃,技术支持丰富)
- TestNG(开源,基于Junit但添加了更强大的功能,比Junit灵活)
2.2 自动化测试框架及工具的分析与选择
1.从公司产品架构角度:公司产品主要是B/S架构,以及APP端(IOS+Android),所以要排除针对C/S架构的工具
2.从工具功能和学习成本角度,最好选择功能更强大,上手更快的工具
3.从技术栈角度,最好选择支持Java和Python的工具(我们公司)
4.从成本角度,最好选择开源的免费工具
5.从市场占有率角度,选择最流行的工具
6.从资料以及技术支持角度,最好选择社区活跃,官网文档以及工具版本更新及时的工具
7.最好可以和Jenkins结合,进行持续集成