本文是关于精读书籍《软件测试的艺术》的一些学习笔记和分享
本书共有九章包括测试思想(心理,经济),代码检查,测试用例设计,模块测试,更高级别的测试,调试,极限测试和因特尔应用系统的测试。
本文主要介绍了一些介绍了一些测试方法和测试用例的设计,并结合《软件测试》这本书对黑盒测试和白盒测试一些常用的测试方法和测试用例设计方法进行了一些总结。
动态黑盒测试:
在《软件测试》这本书中,主要将黑盒测试分为了等价类划分,数据测试,状态测试和其他黑盒测试。其中,《软件测试的艺术》对数据测试进行了一些总结划分。具体的情况见上图。
等价类划分:
- 确定等价类是选取每一个输入条件(通常是规格说明中的一个句子或短语)并 将其划分为两个或更多的组。通常可以根据外部条件划分为有效等价类和无效等价类。
- 生成测试用例
- 为每个等价类设置一个不同的编号。
- 编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,直到 所有的有效等价类都被测试用例所覆盖(包含进去)。
- 编写新的用例,覆盖一个且仅一个尚未被覆盖的无效等价类,直到所有的 无效等价类都被测试用例所覆盖。
数据测试:
边界分析:
主要是对输入的条件的边界进行分析或者软件的内部边界。
- 如果输入条件规定了一个输入值范围,那么应针对范围的边界设计测试用例,针对刚刚越界的情况设计无效输入测试用例。举例来说,如果输入值的有效范围是-1.0 至+l.0,那么应针对-1.0、1.0、-1.001 和1.001 的情况设计测试用例。
- 如果输入条件规定了输入值的数量,那么应针对最小数量输入值、最大数量输入值,以及比最小数量少一个、比最大数量多一个的情况设计测试用例。举例来说,如果某个输入文件可容纳l~255 条记录,那么应根据0、l、255 和256条记录的情况设计测试用例。
次边界条件:
内部边界值条件主要有下面几种:数值的边界值检验和符的边界值检验。
- 数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。
- 符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。如下列出了一些常用字符对应的ASCII码值。
错误猜测:
错误猜测就是对于在程序设计时容易被忽视的一些特殊情况。主要的情况就是输入的条件是默认,空白,空值,零或者无的情况,或者是一些垃圾数据和错误数据等。
状态测试
状态测试通过验证程序的逻辑流程。主要的方法有状态转换图《软件测试第二版》和因果图分析《软件测试的艺术》。
状态转换图:
- 软件可能进入的每一种独立状态
- 从一种状态转入另一种状态所需的输入和条件
- 进入或者退出模中状态时的设置条件及输出结果
因果图分析:
- 将规格说明分解为可执行的片段。
- 确定规格说明中的因果关系。注:“因”是指一个明确的输入条件或输入条件的等价类。“果”,是指一个输出条件或系统转换(输入对程序或系统状态的延续影响)。
- 分析规格说明的语义内容,并将其转换为连接因果关系的布尔图。这就是所谓的因果图。
- 给图加上注解符号,说明由于语法或环境的限制而不能联系起来的“因”和“果”。
- 通过仔细地跟踪图中的状态变化情况,将因果图转换成一个有限项的判定表。表中的每一列代表一个测试用例。
失败状态检测:
失败状态检测就是找到使测试软件失败的案例。其主要就是竞争条件、重复、压迫和重负。
动态白盒测试
动态白盒测试的主要方法有分段测试,数据覆盖《软件测试》和代码覆盖《软件测试的艺术》。其中分段测试主要将要在下一章进行具体的分析。这里主要会介绍数据覆盖和代码覆盖的技术和其测试用例的编写。
数据覆盖
数据覆盖的主要是考虑数据。数据主要包括所有的变量、常数、数组和数据结构、键盘和鼠标输入、文件、屏幕输入/输出,以及调制解调器、网络等其他设备的输入和输出。
- 数据流方法主要是监控跟踪和见识一批数据。通过动态白盒测试,在程序运行期间检查变脸的中间值。
- 次边界就是黑盒测试的相似。在程序内部运行期间,数据可能会变成不同的类型来进行处理,要检测在处理过程中的次边界问题。
- 公式和等式主要会关注在公式中的一些限制比如说是否有除零的情况出现。
- 错误强制是通过一些强制赋值来迫使软件中的所有错误提示信息显示出来。
代码覆盖
代码覆盖就是对每一行代码,进入软件每一条逻辑和决策分支。
总结:
所以在对软件的基本测试方法: