什么是自动化测试
- 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
- 自动化测试的成本包括自动测试开发成本、自动测试运行成本、自动测试维护成本和其他相关任务带来的成本(付费的开发工具、相关工具的开发成本)
为什么要进行测试自动化
• 自动化测试的优点:
- 能执行更多、更频繁的测试,使某些测试任务的执行比手动方式更高效
- 自动化测试能完成一些手工测试不能完成或者比较难以完成的任务,比如:疲劳测试,压力测试
- 自动测试具有一致性和可重复性的特点,而且测试更客观,提高了软件的信任度。
- 自动化测试可以充分利用资源,只要有机器资源自动化脚本可以日夜不停地跑。这样可以缩短测试周期,进而缩短交付周期。
自动化测试的局限
- 一开始的自动化脚本开发成本投入大:开始会觉得开发一个测试脚本的时间可以执行case几十遍甚至一百多遍
- 自动化测试需要测试人员具有更高的技术能力
- 测试脚本的运行和维护需要额外的投入
- 测试执行结果需要人工分析,大部分测试失败原因是测试脚本不稳定和产品功能出现变动(后面会讨论如何让测试脚本更稳定)
- 自动化测试不够智能,还不能完全代替人的劳动。诸如界面布局,易用性等测试,自动化测试还不能代替人工测试
自动化测试包括哪些部分
• 准备部分:环境和数据准备
• 用例步骤执行部分:测试步骤的实现
• 清理部分:数据的清理和环境的还原
自动化测试脚本的执行
• 除了开发测试脚本,还需要保证测试脚本的能自动的周期性的运行:比如说在一个产品开发周期结束,需要运行全面的回归测试。在测试脚本准备好的情况下,可以去执行这些测试脚本。试想下该如何去执行这些脚本?
- 一个个手动执行?
- 借助测试工具,执行指定的用例
- Batch程序批量运行
- 持续集成工具(Jenkins)
测试用例是测试脚本的基础
• 测试脚本实现哪些功能是由测试用例决定的
• 不要去实现额外功能
• 如果需要实现额外的功能,要先修改测试用例
测试代码评审和版本控制
• 测试代码经过评审后才能加到Check in代码库
- 代码要遵守统一的规范,比如说标识符按照驼峰式命名,具体可参考谷歌代码规范https://github.com/google/styleguide
- 代码评审可以发现测试代码中的错误
- 经过评审后的代码更易于维护
• 测试代码,编程语言,测试工具,集成开发环境(IDE)版本控制 - 在Java中测试工具会以一系列Jar文件的形式提供,这些文件会依赖于Java的JDK。 假如我们一开始是在JDK1.8下开发的测试代码,如果不经测试换成JDK9就很可能导致我们的测试代码运行失败
- 版本控制可以帮助我们更好的定位问题
测试框架的选择
• 接口测试:
- SOAPUI
- Postman
- JMeter
单元测试
- Junit
- TestNG
- NUnit
- Pytest
• UI Automation
- Selenium(Web UI):支持Java,python,ruby,C#
- CodedUI(WinForm)
- QTP
- Appium(移动端自动化测试)
• 性能测试
- Jmeter
- LoadRunner
• 选择最适合自己的测试框架
- 开源的
- 用户量多的:遇到问题容易找到解决方案
- 适合自己测试类型的