软件测试-白盒测试:程序插装和程序变异

程序插装

  • 方法简介
    程序插装方法简单地说是通过往被测程序中插入操作来实现测试目的的方法。
    插装后的求最大公约数程序流程图
    需要考虑的问题
    a. 探测哪些信息
    b. 在程序的什么部位设置探测点
    c. 需要设置多少个探测点
  • 断言语句
    在程序中的特定部位插入某些用以判断变量特性的语句(类型、数值)

程序变异

与前面提到的结构测试和功能测试都不一样,它是一种错误驱动测试。(针对某类特定程序错误)
找出程序中所有的错误几乎是不可能的。解决办法是将错误的搜索范围尽可能地缩小,便于集中目标于对软件危害最大的可能错误。

  • 程序强变异
    当程序被开发并经过简单测试后,残留在程序中的错误是一些难以发现的小错误。
    程序变异的目标就是查出这些简单的错误及其组合。
    程序变异意味着对测试数据集中的每一元素,都要对程序P及其变异因子进行测试,所以要求测试数据集D和变异因子集m(P)都需精心挑选。这是强变异方法成功的关键
    m(P)是对P进行微小改动得到的,也是一个程序,称为P的变异因子。假设P有测试数据集D,若P在D上是正确的,可以找出P的变异因子的某一集合 M = M ( P ) ∣ M ( P ) 是 P 的 变 异 因 子 M={M(P)|M(P)是P的变异因子} M=M(P)M(P)P,若M中每一元素在D上都存在错误,则认为程序的正确程度较高。
    通俗来讲:就是程序P在测试集D上均正确,而变异因子集M在测试集D上均错误,则认为程序的正确程度较高。
    若M中某些元素在D上不存在错误,则可能存在三种情况:
    a. 这些变异因子与P在功能上是等价的。(极力避免)
    b. 现有的测试数据不足以找出P与其变异因子间的差别。(增加测试数据)
    c. P可能含有错误,而其某些变异因子却是正确的。
    Budd曾列出了一些变异运算,因为太多了,在此省略。
    程序变异的弱点:
    a. 要运行所有的变异因子,从而成倍地提高了测试的成本。
    b. 决定程序与其变异因子是否等价是一个递归不可解问题。
  • 弱程序变异
    只是对被测程序进行测试的变异方法称为弱变异,并不产生变异因子。
    5种最基本的程序组成部分:
    a. 变量引用:变量值的使用。
    b. 变量定义:给变量赋以新值。
    c. 算术表达式:表达式与正确表达式相差一个常数;表达式是正确表达式的常数倍;表达式的系数有错误。
    d. 关系表达式:关系运算符错与相差一个常数的错误。
    e. 布尔表达式:算术关系用NOT、AND和OR三个逻辑运算符连接起来的复杂关系。 B = L ( E 1 , E 2 , … , E n ) B = L(E_1, E_2, …, E_n) B=L(E1,E2,,En),采用不同的测试集,使得 ( E 1 , E 2 , … , E n ) (E_1, E_2, …, E_n) (E1,E2,,En)是各种不同的真值组合。

猜你喜欢

转载自blog.csdn.net/Bat_Reality/article/details/123952694