1.在软件测试过程中,应该遵循的原则
原则1:测试用例中一个必须部分是对预期输出或结果的定义。 原则2:程序员应当避免测试自己编写的程序。 原则3:编写软件的组织不应当测试自己编写的软件。 原则4:应当彻底检查每个测试的执行结果。 原则5:测试用例的编写不仅应当根据有效和预料到的输入结果,而且也应当更具无效和未预料的输入结果。 原则6:检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了不该做的”。 原则7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件。 原则8:计划测试工作时不应默许假定不会发现错误。 原则9:程序某部分存在更多错误的可能性,与该部分已发现的的错误数量成正比。 原则10:软件测试是一项极富创造性、极具智力挑战性的工作。 (不同教材对于测试的基本原则有所不同)
2.测试用例的设计
好的测试用例的特征
- 可以最大程度地找出软件隐藏的缺陷
- 可以最高效率的找出软件缺陷
- 可以最大程度地满足测试覆盖要求
- 既不过分复杂、也不能过分简单
- 使软件缺陷的表现可以清楚的判定
- 测试用例包含期望的正确的结果
- 待查的输出结果或文件必须尽量简单明了
- 不包含重复的测试用例
- 测试用例内容清晰、格式一致、分类组织
测试用例的4性
测试用例的4性是指代表性、针对性、可判定性、可重现性: 代表性: 能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。 针对性: 对程序中的可能存在的错误有针对性地测试 可判定性: 测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果 可重现性: 对同样的测试用例,系统的执行结果应当是相同的。
3.测试用例的原则
- 利用成熟的测试用例设计方法来指导设计
- 测试用例的针对性
- 测试用例的代表性
- 测试用例的可判定性
- 测试用例的可重现性
- 足够详细、准确和清晰的步骤
- 测试用例必须符合内部的规范的要求
4.常用到的软件质量模型
ISO软件质量度量模型 包含以下特性:
- 功能性:在当前软件指定条件下,软件产品满足明确和隐含要求的能力。
- 可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。
- 可使用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。
- 效率:在规定条件下,相对于所用资源数量,软件产品可提供相应性能的能力。
- 可维护性:指在软件产品可被修改的能力,修改可能包括修正、改进或软件适应环境、需求和功能说明中的变化。
- 可移植性:指软件产品从一个环境迁移到另一个环境的能力。
5.软件测试计划
测试计划并非一成不变,而是随着项目的发展不断完善。测试计划需要按照国家标准或者行业标准的格式和内容来写。
6.制定软件测试的计划的原则
- 为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的对象、范围、方法、进度和预期结果。
- 为项目实时建立一个组织模型,并定义测试项目中每个角色的责任和工作内容。
- 开发有效的测试模型,能正确地验证正在开发的软件系统。
- 开发有效的测试模型,能正确地验证正在开发的软件系统。
- 确立每个测试阶段测试完成,以及测试成功的标准、要实现的目标。
- 识别出测试活动中各种风险,并消除可能存在的风险,降低由不可能消除的风险所带来的损失。
7.制定软件测试的计划的步骤
- 测试策略的确立:定义项目的测试目标和实现方法。
- 测试计划的要点:明确不同子系统以及系统各部分的测试强度,合理分配时间
8.静态测试、动态测试
- 静态测试(static testing),是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
- 动态测试(dynamic testing):是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
9.白盒测试、黑盒测试以及二者的关系
白盒测试
又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试全面了解程序内部结构、对所有逻辑路径进行测试。白盒测试是穷举路径测试,测试人员必须了解程序的内部结构,从检查程序的逻辑出手,从而得到测试数据。白盒测试必须遵循一下规则:
- 一个模块所有的独立路径都需至少得到一次测试。
- 所有的逻辑值的真与假情况都需要被测试到。
- 为了保证程序结构的有效性,需要检查程序的内部逻辑结构。
- 在程序的上、下边界与可操作范围内能保证循环的顺利运行。
黑盒测试
黑盒测试是一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。黑盒测试的基本观点:任何程序都能看作是输入定义域到输出值域的映射。在测试过程中,因为无法看到盒子里面的内容,所以只关心程序输出的结果。
测试人员使用黑盒测试的时候,唯一使用的信息就是软件的规格说明。黑盒测试是从用户观点出发的测试,它需要尽可能发现程序的外部错误,在已知的软件产品功能的基础上进行功能、交互、性能等方面的检测。 黑盒测试由两个重要的优点:
- 黑盒测试与软件的具体实现无关,因此软件实现方式如果发什么变更、修改但功能测试不变的话,仍可以使用原来的测试用例。
- 在软件开发的同时,也可以进行黑盒测试用例的设计,这样可以节省时间成本。
但是如果希望利用黑盒测试检测出所有的软件错误,只能采用穷举法,但这是不现实的,也不合理。 常见的黑盒测试方法有等价类划分、边界值设计、因果图分析和正交实验法等。
白盒测试与黑盒测试的区别
- 已知产品因素
- 黑盒测试:已知程序的功能需求、设计规格,可以通过测试验证程序需要的功能是否已被实现,是否符合要求。
- 白盒测试:已知程序的内部工作结构,可以通过测试验证程序的内部结构是否符合要求,是否含有缺陷。
- 检查测试的主要内容
- 黑盒测试主要检查的内容包括但不限于:
功能是否都满足需求;是否有功能出现缺陷。 接口上是否能正确接受输入;输入结果是否正确。 是否有数据结构信息或者外部信息访问错误。 是否有初始化或终止性错误。 - 白盒测试主要检查的内容包括但不限于:
所有的程序模块的独立路径等都需要至少被测试一遍 所有的逻辑判定的正值与假值都需要至少被测试一遍。 在运行的界限内和循环的边界上执行循环体。 测试内部的数据结构是否有效。
10.软件测试与软件开发的过程的关系
测试的尽早介入是软件测试的一个基本准则。软件测试是质量保证的重要手段之一,它是贯穿整个软件开发周期的。
软件测试在开发各阶段的作用:
- 项目规划阶段:负责监控整个测试。
- 需求分析阶段:确定测试需求分析,同时制定系统测试计划。
- 概要设计和详细设计阶段:制定集成计划和单元测试计划。
- 程序编写阶段:开发相应的测试代码和测试脚本。
- 测试阶段:实时测试,并提交相应的测试报告。
11.白盒测试的覆盖准则
- 一个模块所有的独立路径都需至少得到一次测试。
- 所有的逻辑值的真与假情况都需要被测试到。
- 为了保证程序结构的有效性,需要检查程序的内部逻辑结构。
- 在程序的上、下边界与可操作范围内能保证循环的顺利运行。
12. 白盒测试的常用工具,各适用于什么
- Jtest:是一个代码分析和动态类、组件测试工具,是一个集成的、易于使用的和自动化的Java单元测试工具。
- Jcontract:在系统级验证类/部件是否正确工作并被正确使用。
- C++Test:自动测试C和C++类、函数或组件
- CodeWizard:是一个代码静态分析工具,先进的C/C++源代码分析工具,但是不能检查到代码结构。
- Insure++:是一个基于C/C++的自动化内存错误、内存泄漏的精确检测工具,能够可视化内存操作,准确检测出内存泄漏产生的根源,还能覆盖性分析,指示那些代码被已经测试过。
持续更新中…
|