自动化测试:指通过自动化测试工具或者轮子模拟手工测试并验证其结果完成整个测试过程。本文章介绍自动化测试的基本概念。
Quick Guide
为什么要进行自动化测试
- 自动化测试节约人力和时间成本:版本迭代的回归测试
- 有些测试项目手工很难实现:例如性能测试
- 项目质量流程和持续集成的需要
自动化测试的优缺点
- 优点
- 避免测试人员因重复劳动产生厌倦
- 提高测试效率
- 保证每次测试地一致性和可重复性
- 更好的利用无人值守时间
- 进行一些手工无法进行的测试
- 缺点
- 维护成本相对比较高
- 测试时间不一定能缩短
- 没有手工测试发现缺陷多
- UI 层面显示问题不容易发现
什么样的项目适合做自动化测试
- 功能变动少
- 周期长
- 项目测试资源足够
自动化测试
- 掌握一门开发语言:
- 与开发技术栈一致
- 推荐:java/python/go
- 熟悉被测系统
- web测试 :js+css+html
- 移动端测试:Android 和iOS开发基础
- C/S测试:TCP、IP协议
- 掌握一套自动化测试框架
- python
- Robot Framework:关键字驱动测试(高级封装 类配置化)
- 优点
- 需要的基础低,易学易写
- 支持多重封装,可以使用python封装方法
- 拥有庞大的生态系统,丰富的第三方扩展库
- 缺点
- 用例庞大,用例管理加载时间很久
- 业务逻辑比较复杂和特殊,封装成本较大
- 控制语句只有if/for,不支持多层嵌套
- 应用
- 接口:HTTP library (livetest)、HTTP library (Requests)等。
- web: SeleniumLibrary,Selenium2Library,Selenium2Library for Java、watir-robot 等。
- Windows GUI:AutoItLibrary
- 移动端:Android library、iOS library、AppiumLibrary 等。
- 数据库测试:Database Library (Java)、Database Library (Python)、MongoDB library 等。
- 文件对比测试:Diff Library。
- 用例管理:wxPython、 RIDE
- 并发测试:pabot
- 分布式测试:selenium grid
- 优点
- UnitTest:Python自带的一个单元测试框架
- 优点
- 开发人员不需要安装任何其他模块。
- Unittest是xUnit的衍生产品,其工作原理与其他xUnit框架类似。 没有强大 Python背景的人也容易使用。
- 您可以以更简单的方式运行单个测试用例。 您需要做的就是在终端上指定名称。 输出也很简洁,使得框架在执行测试用例时更加灵活。
- 测试报告在几毫秒内生成。
- 缺点
- 通常,snake_case用于命名python代码。 但是由于这个框架受到Junit的启发,传统的camelCase命名方法仍然存在。 这可能很混乱。
- 要求一定的python基础
- 需要较多的代码
- 应用
- 接口:requests
- web:selenium
- window GUI:pywinauto
- window进程:win32api
- 移动端 GUI:appium
- 数据库:hbase(thrift hbase-thrift)、mysql(pymysql)、redis 、hive(sasl thrift thrift-sasl pyhive)、implala
- 优点
- Pytest:基于unittest的扩展框架,比unittest更简洁高效
- 优点
- pytest可以直接运行unittest模式的测试用例
- 能够支持简单的单元测试和复杂的功能测试,支持xfail
- pytest具有很多第三方插件,并且可以自定义扩展
- 缺点
- 要求一定的python基础
- 应用
- 测试报告: pytest-html
- web:pytest-selenium
- 失败用例重试: pytest-rerunfailures
- 多CPU分发:pytest-xdist
- 优点
- Behave:与SpecFlow和Cucumber非常相似,常被用于执行自动化测试。
- 优点
- 系统行为由半正式语言和域词汇表表达,以保持组织中的行为一致。
- 正在协调处理具有类似功能的不同模块的开发团队。
- 构建块总是可以执行各种测试用例。
- 细节中有推理和思考,从而产生更好的产品规格。
- 由于规范的格式相似,利益相关者或管理者对QAs和Devs的输出有更好的清晰度。
- 缺点
- 只适用于黑盒测试。
- 优点
- Lettuce:基于Cucumber和Python的行为驱动类自动化工具
- 优点
- 好吧,就像任何其他BDD测试框架一样,Lettuce使开发人员能够创建多个场景并用简单的自然语言描述这些功能。
- Dev和QA团队得到了适当的协调,因为规格格式相似。
- 对于黑盒测试,Lettuce对于运行行为驱动的测试用例非常有用。
- 缺点
- 只适用于黑盒测试。
- 优点
- Robot Framework:关键字驱动测试(高级封装 类配置化)
- java
- JUnit
- 优点
- 庞大的社区
- 缺点
- 无法执行依赖性测试
- 优点
- TestNG
- 优点
- JUnit升级版
- 缺点
- 用户需要一些时间来设置TestNG
- 优点
- JBehave:一种通过Selenium WebDriver来针对BDD开展Java测试的框架。
- Serenity:种能被用于行为驱动测试的开源库。该框架可帮助您编写出各种结构良好、且易于维护的验收标准。它在一定程度上扩展了JUnit和WebDriver的功能。
- Selenide:由Selenium提供的Selenide,可用作为Java应用程序编写稳定、精确且具有友好UI的测试用例。
- JUnit
- go
- python