软件测试分类
按照测试阶段分类
- 单元测试
- 集成测试
- 系统测试(包括确认测试)
- 验收测试
单元测试
- 单元测试又称为模块测试,是最小单位测试
- 单元测试是在软件开发过程中要进行的最低级别的测试活动
- 类、文件、窗口、函数、菜单、报表或一个存储过程都可以作为一个单元进行测试
- 其依据是详细设计文档
集成测试
在单元测试的基础上将已经通过测试的单元模块按照设计要求组装成系统或子系统,再进行测试。目的是找出被测试系统组件之间关系和接口中的错误。
- 非增式集成
- 增式集成
- 自顶向下增式测试
- 自底向上增式测试(最常使用的方法)
自底向上集成测试
确认测试
由集成测试进入系统测试之前,需要对软件是否可以进入系统测试进行评价,这个过程成为确认测试
确认测试需要做的工作包括:有效性测试、软件配置审查。
系统测试
系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖。
验收测试
- Alpha testing (α测试),是由用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,可由程序员或测试员指导或辅助。
- Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
按阶段分类
测试类型 | 对象 | 目的 | 测试依据 | 测试方法 |
---|---|---|---|---|
单元测试 | 模块内部的程序错误 | 消除局部模块的逻辑和功能上的错误和缺陷 | 模块逻辑设计,模块外部说明 | 大量采用白盒测试方法 |
集成测试 | 模块间的集成和调用关系 | 找出与软件设计相关的程序结构,模块调用关系,模块间接口方面的问题 | 程序结构设计 | 结合使用白盒与黑盒测试方法,较多采用黑盒方法和构造测试用例 |
系统测试 | 整个系统,包括系统中的软硬件 | 对整个系统进行一系列的整体、有效性测试 | 系统结构设计,目标说明书,需求说明书 | 黑盒测试 |
按照测试方法分类
静态测试
静态测试是不运行被测试本身而寻找程序代码中可能存在的错误或评估程序代码的过程。静态测试通过分析或者监察源程序的语法、结构、过程、接口等来检查程序的正确性,找出问题
动态测试
动态是运行被测试程序,输入相应的测试数据,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
黑盒测试
黑盒测试(Black-box Testing):不考虑程序内部结构和内部特性,只检查程序功能是否按照需求规格说明书的规定正常使用及程序能否适当接收输入数据而产生正确的输出信息。
灰盒测试
灰盒测试是介于黑盒测试与白盒测试之间的测试方法。在执行白盒测试的时候考虑黑盒测试的方法。
白盒测试
白盒测试(White-box Testing):又称结构测试、逻辑驱动测试或基于程序本身的测试
冒烟测试Smoke testing
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。
回归测试 Regression Testing
在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,对软件的任何新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再现,并确认曾经通过的功能不会出现问题。
功能测试
功能测试(Functional testing),根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求
性能测试
性能测试(Performance testing),评价一个产品或组件与性能需求是否符合的测试。包括负载测试、强度测试、数据库容量测试、基准测试等类型
压力测试Stress Testing
获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确执行的能力。
负载测试 Load Testing
用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力最高能达到什么程度。
易用性测试
主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。在保证足够详细的程度下,用户界面要便于使用,对输入的响应时间和响应方式合理,输出有意义、正确,出错信息能够引导用户去解决问题,文档全面、确切等。易用性测试多数情况下没有一个量化的指标,主观性较强。
安装测试
安装测试(Installing testing),确保该软件在正常情况和异常情况的不同条件下 能够正确安装
界面测试
指测试用户界面的风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等等
文档测试 Document Testing
主要检查文档的正确性、完备性和可理解性
兼容性测试 Compatibility Testing
测试软件是否和系统的其它与之交互的元素之间兼容
安全性测试
检查系统对非法浸入的防范能力,检查系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞
随机测试
没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查
手工测试
是采用手工的方式执行测试
自动化测试
自动化测试(Automated Testing),使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试中用得较多
通过测试
是使用满足需求的数据测试系统的过程。
失败测试
是使用不满足需求的数据测试系统的过程。
错误测试
错误猜测试是通过经验发现程序中的错误和缺陷的能力。