- 按测试技术,可分为黑盒测试、白盒测试、灰盒测试;
- 按测试方法,可分为:静态测试、动态测试;
- 按测试执行方式,可分为:手工测试、自动化测试;
- 按测试阶段,可分为:单元测试、集成测试、系统测试、验收测试;
- 按测试实施组织,可分为:开发方测试、用户方测试、第三方测试;
- 按软件质量特征分类:
功能测试、安全测试、性能测试、可靠性测试、压力测试、安装测试、用户界面测试、兼容性测试 - 其他测试方法:回归测试、冒烟测试、monkey测试、A/B测试
一、黑盒测试
1、定义
在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为功能测试或者数据驱动测试。它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
2、黑盒测试优缺点
优点:1、容易实施,不需要关注程序内部的实现;2、更贴近用户的使用角度;
缺点:1、测试覆盖率较低,一般只能覆盖到代码量的40%;2、针对黑盒的自动化测试,复用率较低,维护成本较高。
3、黑盒测试主要测试内容
- 是否有不正确或遗漏的功能;
- 在接口上,输入是否能正确的接受?能否输出正确的结果;
- 是否有数据结构错误或外部信息访问错误?
- 性能上是否能够满足要求?
4、黑盒测试的主要设计方法
- 流程分析法
- 等价类划分法
- 边界值分析法
- 错误推测法
- 因果图法
- 正交试验分析法
- 状态迁移图法
- 流程分析法
二、白盒测试
1、定义
要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。也被称为结构测试或逻辑驱动测试。
2、主要逻辑单位
语句、条件、条件组合、分支、路径
3、白盒测试的优缺点
优点:
1、迫使测试人员去仔细思考软件的实现,理解原理
2、可以检测代码中的每条分支和路径
3、揭示隐藏在代码中问题
4、对代码的测试比较彻底
缺点:
1、代价有些高,需要测试人员有编程能力
2、无法检测代码中遗漏的路径和数据敏感性错误
3、不能直接验证需求的正确性
三、灰盒测试
介于黑盒测试与白盒测试之间的测试,既要像黑盒测试那样关注输出对于输入的正确性,同时也关注内容表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志判断内部的运行状态。
四、静态测试
1、定义
静态测试是指无需执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率
2、其形式有程序员互查、小组组织查找、召开正式评审会审查
五、动态测试
动态测试是指通过运行被测程序,检查运行结果和预期结果的差异,并分析运行效率,正确性和健壮性等。也就是通过实际运行情况来评价程序的性能。
六、手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。
更适用针对深度的测试和强调主观判断的测试。比如:众包测试和探索式测试
七、自动化测试
1、定义
适用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
2、手工测试和自动化测试的区别
手工测试 | 自动化测试 |
---|---|
易发现缺陷 | 高效率、速度快 |
容易实施 | 高复用性 |
创造性、灵活性 | 覆盖率容易度量 |
覆盖量化难 | 准确、可靠 |
重复测试效率低 | 不知疲劳 |
不一致性、可靠性低 | 机械、发现缺陷率低 |
人力资源依赖 | 一次性投入较大 |
八、功能测试
根据产品特性,操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。针对的问题主要是功能错误/遗漏,界面问题,性能错误,数据以及访问错误,初始化及终止错误。这里性能错误指的是软件本身的性能问题。
功能自动化测试主要的工具:QTP(基于关键字驱动),silkTest,Rational robot,selenium(开源针对web应用),Watir,sikuli(基于截图)
九、性能测试
验证软件系统的性能能够满足需求所需求的性能指标。性能测试一般分为负载测试,压力测试,稳定性测试。性能指标包括并发用户数(VU),每秒事物数(TPS),系统相应时间,设备性能。
性能测试工具:loadrunner,silkperformer,Jmeter,WebLoad等
web应用性能测试重点:静态性能评估,开发web应用时,基于一系列web应有页面性能优化的最佳实践对Web应用的页面进行静态分析,并给出评估结果的性能分析方法。业内有YSlow和PageSpeed两种主流的评判标准/工具,都是浏览器插件。
应用性能管理(APM)主要是提供给系统的实时监控以实现性能管理,故障管理的解决方案。
十、安全测试
对软件产品进行测试以保证软件符合产品安全需求和质量标准。渗透测试通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试,是取得用户一种授权的一种攻击测试。
开放的web应用安全项目OWASP:http://www.owasp.org
安全测试工具:Appscan针对web应用的漏洞扫描工具,Webinspect,Nessus针对服务器主机类的漏洞扫描工具,Nmap端口嗅探的工具,MetaSploit攻击框架,Fortify针对白盒测试
十一、兼容性测试
软件本身的兼容性,对历史版本的功能和数据进行兼容;不同平台的兼容,可能在多个平台上运行,需要考虑多个平台的验证;软件对运行设备的兼容性,不同的设备不同的软件表现;软件的互操作性,同一个厂商的不同软件在同一台设备可能会有相互操作。对于web应用,不同的浏览器之间的兼容,IE,FireFox,Chrome,Opera
兼容性的测试工具:BrowserShots,BrowserSandbox
十二、回归测试
在软件功能修改后,对软件进行重新测试以确认修改没有引入新的错误或者导致其他部分产生错误,最适合实施自动化测试。可以针对模块进行回归测试。
十三、冒险测试
用于确认代码中的更改会按照预期运行,且不会破坏整个版本的稳定性。针对全流程的一个关键业务的流程的验证。
十四、monkey测试
用一些随机,稀奇古怪的方式来操作软件,以测试系统的健壮性和稳定性。andriod的sdk就有monkey测试的接口。
十五、A/B测试
用于互联网行业,通过页面提供两个版本给用户使用并记录相关的用户行为数据,来确定更优化设计的一种测试方案。实施要点:多个方案并行实施,并用户数量达到一定的数量级;每次改动仅改动一个变量;按照某种规则进行优胜劣汰。