1.在软件测试过程中,应该遵循的原则
原则1:测试用例中一个必须部分是对预期输出或结果的定义。
原则2:程序员应当避免测试自己编写的程序。
原则3:编写软件的组织不应当测试自己编写的软件。
原则4:应当彻底检查每个测试的执行结果。
原则5:测试用例的编写不仅应当根据有效和预料到的输入结果,而且也应当根据无效和未预料的输入结果。
原则6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了不该做的”。
原则7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件。
原则8:计划测试工作时不应默许假定不会发现错误。
原则9:程序某部分存在更多错误的可能性,与该部分已发现的的错误数量成正比。
原则10:软件测试是一项极富创造性、极具智力挑战性的工作。
(不同教材对于测试的基本原则有所不同)
2.测试用例的设计
好的测试用例的特征
- 可以最大程度地找出软件隐藏的缺陷
- 可以最高效率的找出软件缺陷
- 可以最大程度地满足测试覆盖要求
- 既不过分复杂、也不能过分简单
- 使软件缺陷的表现可以清楚的判定
- 测试用例包含期望的正确的结果
- 待查的输出结果或文件必须尽量简单明了
- 不包含重复的测试用例
- 测试用例内容清晰、格式一致、分类组织
测试用例的4性
测试用例的4性是指代表性、针对性、可判定性、可重现性:
代表性: 能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。
针对性: 对程序中的可能存在的错误有针对性地测试
可判定性: 测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果
可重现性: 对同样的测试用例,系统的执行结果应当是相同的。
3.测试用例的原则
- 利用成熟的测试用例设计方法来指导设计
- 测试用例的针对性
- 测试用例的代表性
- 测试用例的可判定性
- 测试用例的可重现性
- 足够详细、准确和清晰的步骤
- 测试用例必须符合内部的规范的要求
4.常用到的软件质量模型
Jim McCall模型(1977年)
Boehm模型(1978年)
FURPS模型
Dromey模型
ISO9126模型
5.软件测试计划
测试计划并非一成不变,而是随着项目的发展不断完善。测试计划需要按照国家标准或者行业标准的格式和内容来写。
6.制定软件测试的计划的原则
- 制定的测试计划应尽早开始
- 保持测试计划简洁和易读
- 尽可能争取多渠道评审测试计划
- 计划测试的投入
7.制定软件测试的计划的步骤
- 分析和测试软件的需求
- 定义测试策略
- 定义测试环境
- 定义测试管理
- 编写计划文档
8.静态测试、动态测试
- 静态测试(static testing),是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
- 动态测试(dynamic testing):是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
9.白盒测试、黑盒测试以及二者的关系
白盒测试
又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试全面了解程序内部结构、对所有逻辑路径进行测试。白盒测试是穷举路径测试,测试人员必须了解程序的内部结构,从检查程序的逻辑出手,从而得到测试数据。白盒测试必须遵循以下规则:
- 一个模块所有的独立路径都需至少得到一次测试。
- 所有的逻辑值的真与假情况都需要被测试到。
- 为了保证程序结构的有效性,需要检查程序的内部逻辑结构。
- 在程序的上、下边界与可操作范围内能保证循环的顺利运行。
黑盒测试
黑盒测试是一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。黑盒测试的基本观点:任何程序都能看作是输入定义域到输出值域的映射。在测试过程中,因为无法看到盒子里面的内容,所以只关心程序输出的结果。
测试人员使用黑盒测试的时候,唯一使用的信息就是软件的规格说明。黑盒测试是从用户观点出发的测试,它需要尽可能发现程序的外部错误,在已知的软件产品功能的基础上进行功能、交互、性能等方面的检测。
黑盒测试由两个重要的优点:
- 黑盒测试与软件的具体实现无关,因此软件实现方式如果发什么变更、修改但功能测试不变的话,仍可以使用原来的测试用例。
- 在软件开发的同时,也可以进行黑盒测试用例的设计,这样可以节省时间成本。
但是如果希望利用黑盒测试检测出所有的软件错误,只能采用穷举法,但这是不现实的,也不合理。
常见的黑盒测试方法有等价类划分、边界值设计、因果图分析和正交实验法等。
白盒测试与黑盒测试的区别
- 已知产品因素
- 黑盒测试:已知程序的功能需求、设计规格,可以通过测试验证程序需要的功能是否已被实现,是否符合要求。
- 白盒测试:已知程序的内部工作结构,可以通过测试验证程序的内部结构是否符合要求,是否含有缺陷。
- 检查测试的主要内容
- 黑盒测试主要检查的内容包括但不限于:
功能是否都满足需求;是否有功能出现缺陷。
接口上是否能正确接受输入;输入结果是否正确。
是否有数据结构信息或者外部信息访问错误。
是否有初始化或终止性错误。 - 白盒测试主要检查的内容包括但不限于:
所有的程序模块的独立路径等都需要至少被测试一遍
所有的逻辑判定的正值与假值都需要至少被测试一遍。
在运行的界限内和循环的边界上执行循环体。
测试内部的数据结构是否有效。
- 黑盒测试主要检查的内容包括但不限于: