
第1章 自动化测试概述
1.1 自动化测试的定义和分类
自动化测试通俗地讲就是使用软件A自动执行测试用例来测试软件B。软件A既可以是现有的自动化测试工具,也可以是自己编写的测试脚本。软件B就是待测试软件。
自动化测试的分类维度如下。
1.根据测试阶段划分
(1)单元自动化测试
单元自动化测试是指通过自动化手段对软件最小可测单元(模块)进行的测试。一个最小可测单元通常为一个方法或函数。单元自动化测试常用的工具(框架)有JUnit、TestNG、Jtest、unittest和Pytest等。
(2)集成自动化测试
集成自动化测试是指通过自动化手段把软件的模块组合起来测试。集成测试分为增量测试和非增量测试两种,这两种测试在手工或自动化的集成测试中都可以采用。
①增量测试。
在增量测试中,如果增量方式是自顶向下的,那么测试的过程需要桩﹔如果增量方式是自底向上的,那么测试的过程需要驱动。在实际项目中,经常涉及的“打桩”概念就来自于增量测试。
②非增量测试。
非增量测试不像增量测试那样有严格的增量顺序,因此在非增量测试过程中,可能同时需要桩和驱动,也可能只需要其中一个,或者两者都不需要。
集成自动化测试的主要表现之一为接口自动化测试,用于接口自动化测试的常用工具(框架)有JMeter、HttpClient、requests、SoapUI和Postman等。
(3)系统自动化测试
系统自动化测试是指通过自动化手段,将软件、硬件、操作人员当成一个整体进行测试。系统自动化测试又可分为功能自动化测试、性能自动化测试、安全(渗透)自动化测试和兼容性自动化测试等。系统自动化测试常用的工具(框架)有很多,比如Testin云测平台就提供了兼容性自动化测试功能,它可以测试App在各种手机上运行是否正常。
2.根据测试类型划分
(1)功能自动化测试
功能自动化测试是指通过自动化手段检查软件能否达到预期功能的测试。主要表现为Web应用、移动应用和桌面应用等软件的界面测试。界面自动化测试的常用工具(框架)有Selenium、Appium、Robot Framework、UFT/QTP和AutoIt等。
(2)性能自动化测试
性能自动化测试是指通过自动化手段模拟各种正常、峰值和异常负载条件,从而对系统的各项性能指标进行测试。在性能自动化测试中,JMeter和LoadRunner占据了绝对的统治地位。
(3)安全(渗透)自动化测试
安全(渗透)自动化测试可理解为通过自动化手段检查软件是否有安全漏洞。安全(渗透)自动化测试包含前期交互、信息收集、威胁建模、漏洞分析、渗透攻击、后渗透攻击和测试报告7个阶段。安全(渗透)自动化测试常用工具(框架)有Metasploit、Burp Suite、Nessus、NMap、sqlmap、Synopsys Defensics和Peach Fuzzer等。
3.根据静态和动态划分
(1)静态自动化测试
静态自动化测试是指通过自动化手段不实际运行软件的测试,比如代码审查、文档测试等。根据编程语言不同,代码审查自动化测试工具(框架)的差异很大。对Java而言,常用的有FindBugs、PMD等。
(2)动态自动化测试
动态自动化测试是指通过自动化手段实际运行软件的测试,即通常所说的“软件测试”。动态自动化测试(框架)前面已经介绍很多,这里不再赘述。
从狭义来讲,自动化测试主要指动态的功能自动化测试。