# 一、软件测试
# 测试的目标或定义
测试是为了发现程序中的错误而执行程序的过程。
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
成功的测试是发现了迄今为止尚未发现的错误。
# 二、测试阶段周期
测试步骤:
- 单元测试
- 集成测试
- 系统测试
- 确认测试(验收测试)
- 回归测试
# 2.1 单元测试
单元测试主要使用白盒测试技术,而且对多个模块的测试可以并行地进行。
# 2.2 系统测试
从一个系统整体的视角进行测试。包括有目的的进行各种功能组合配置和实际系统应用场景的模拟测试。
# 2.3 确认测试(验收测试)
确认测试也称为验收测试,它的目标是验证软件的有效性。
以用户为主进行,通常采用黑盒测试。
# 2.4 回归测试
回归测试是在有新功能版本发布时,对已经稳定的功能进行的测试。确保增加模块之后,没有引入新的错误或导致其他模块产生错误。
# 三、测试分类
- 黑盒测试
- 白盒测试
- 静态测试
- 动态测试
- 压力测试
- 冒烟测试
- 自动化测试
- 安全测试
- Alpha测试
- Beta测试
# 3.1 黑盒测试(功能测试)
Black-box Testing 黑盒测试、功能测试
黑盒测试,又称为功能测试。
数据驱动测试或给予需求规格说明书的功能测试。这种测试注重于测试软件的功能性需求。
采用这种测试方法,测试工程师把测试对象看作一个黑盒子,不需要考虑程序内部的逻辑结构和特性,只需要依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
黑盒测试能更好更真实的从用户角度来考察被测系统的功能性需求实现情况。
在软件测试的各个阶段,如单元测试、集成测试、系统测试及确认测试等阶段都发挥着重要作用。尤其在系统测试和确认测试中,其作用是其他测试方法无法取代的。
对于黑盒测试,较为知名的测试方法有:
- 等价类划分法
- 边界值分析法
- 因果图分析法
- 错误猜测法(错误推断法)
# 3.2 白盒测试(结构测试)
White-box Testing 白盒测试、结构测试
白盒测试,又称为结构测试。
逻辑驱动测试或基于程序代码内部结构的测试。
此时,需要深入考察程序代码的内部结构、逻辑设计等等。白盒测试需要测试工程师具备很深的软件开发功底,精通相应的开发语言,一般的软件测试工程师难以胜任该工作。
对于白盒测试,常用的测试方法有:
- 语句覆盖
- 判定(分支)覆盖
- 条件覆盖
- 判定/条件覆盖
- 多重条件覆盖。
# 3.3 静态测试
静态测试,顾名思义,就是静态的、不执行被测对象程序代码而寻找缺陷的过程。
通俗地讲,静态测试就是用眼睛看,阅读程序代码,文档资料等,与需求规格说明书中的需求进行比较,找出程序代码中设计的不合理,以及文档资料中的错误。
# 3.4 动态测试
动态测试即为实际的执行被测对象的程序代码,输入事先设计好的测试用例,检查程序代码运行的结果与测试用例中设计的预期结果之间是否差异,判定实际结果与预期结果是否一致,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能状况。
动态测试结合使用白盒测试和黑盒测试。
动态测试由四部分组成:
- 设计测试用例
- 执行测试用例
- 分析比较输出结果
- 输出测试报告
# 3.5 压力测试
压力测试是用于验证某个功能或整个产品,能否在达到极限或超过极限的情况下,依然能够进行正常运行,并且保证性能和功能不出现异常。
# 3.6 冒烟测试
Smoke Test,ST 冒烟测试
冒烟测试是在开始一个新功能版本测试前,可以先选择部分测试点进行验证,如果出现的bug太多,则证明该版本还不具备进行全面测试的前提条件。
该方案可以帮助测试人员避免将时间和精力浪费在一些质量很差的版本中。
# 3.7 自动化测试
自动化测试是让部分回归测试从重复的手工操作中解放出来,场景设计进行自动化测试。它可以提高回归测试的效率和准确性。
所以,自动化测试主要用于回归测试,是回归测试的一种技术手段。
# 3.8 安全测试
安全测试是对产品进行安全保护的测试,保证产品的安全性。
系统安全管理包括物理系统安全、数据加密和信息隐藏、操作系统安全、网络安全、数据库安全和非技术性安全。
# 3.9 Alpha测试
由用户在开发者环场所,在开发者指导下进行测试。即在受控环境中进行测试。
# 3.10 Beta测试
用户在一个或多个用户场所进行测试,开发者不在场。即在不受控环境中进行测试。