软件测试的方法和技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2.1 程序插桩
在软件动态测试中,程序插桩是一种基 本的测试手段,有着广泛的应用。
1.方法简介
程序插桩方法是借助往被测程序中插入 操作,来实现测试目的的方法。
如果我们想要了解一个程序在某次运 行中所有可执行语句被覆盖的情况,或是 每个语句的实际执行次数,最好的办法是 利用插桩技术。这里仅以计算整数X和整 数Y的最大公约数程序为例,说明插桩方 法的要点。图3-3给出了这一程序的流程图。
图 插 入 断 言 后 的 迭 代 程 序
3-6
3.2.2 逻辑覆盖
逻辑覆盖是以程序内部的逻辑结构为 基础的设计测试用例的技术,是通过对程 序逻辑结构的遍历实现程序的覆盖,它是 一系列测试过程的总称,这组测试过程逐 渐进行越来越完整的通路测试。这一方法 要求测试人员对程序的逻辑结构有清楚的 了解,甚至要能掌握源程序的所有细节。 它属于动态测试。
Hale Waihona Puke Baidu
白盒测试的动态测试要根据程序的控制 结构设计测试用例,其原则是: (1)保证一个模块中的所有独立路径至少 被使用一次; (2)对所有逻辑值均需测试true和false; (3)在上下边界及可操作范围内运行所有 循环; (4)检查内部数据结构以确保其有效性。
下面将介绍几种实用的白盒测试用例设 计方法,包括程序插桩、逻辑覆盖、基本 路径测试等。
图 计 算 非 负 数 之 商 的 迭 代 程 序
3-5
procedure DIVIDE(NUM,DEN,E,Q) *E is the accuracy required.E≥0.Q is both * * the result at exit and at any interim stage. * *A.B and W are the other elements of the program vector.* Q:=0 A:=0 B:=DEN/2 W:=1 @ K:=0 until W<E loop @ assert W=1/2**K @ assert A=DEN*Q @ assert B=DEN*W/2 @ assert NUM/DEN W<Q and Q≤NUM/DEN if(NUM A B)≥0 then Q:=Q+W/2 A:=A+B endif B:=B/2 W:=W/2 @ K:=K+1 endloop @ assert NUM/DEN W<Q and Q≤NUM/DEN end
3.2 白 盒 测 试
白盒测试也称为结构测试或逻辑驱动 测试,前提是知道产品内部工作过程,可 通过测试来检测产品内部动作是否按照规 格说明书的规定正常进行,按照程序内部 的结构测试程序,检验程序中的每条通路 是否都能够按预定要求正确工作,而不管 产品的功能,主要用于软件验证。
白盒测试方法又可分为静态测试和动态 测试。静态测试是一种不通过执行程序而 进行测试的技术,其关键功能是检查软件 的表示和描述是否一致,没有冲突或者没 有歧义。它瞄准的是纠正软件系统在描述、 表示和规格上的错误,是任何进一步测试 的前提。而动态测试需要软件的执行,当 软件系统在模拟的或真实的环境中执行之 前、之中和之后,对软件系统行为的分析 是动态测试的主要特点。它显示了一个系 统在检查状态下是正确还是不正确。
③ 需要设置多少个探测点。
2.断言语句
在程序中特定部位插入某些用以判断变 量特性的语句,使得程序执行中这些语句 得以证实,从而使程序的运行特性得到证 实。我们把插入的这些语句称为断言。这 一做法是程序正确性证明的基本步骤,尽 管算不上严格的证明,但方法本身仍然是 很实用的。下面以求两个非负数 NUM 和 DEN 之商的 Wensley 迭代算法为例,对断 言语句的作用做一简要说明。
从覆盖源程序语句的详细程度分析,逻 辑覆盖标准有语句覆盖、判定覆盖、条件 覆盖、条件判定组合覆盖、多条件覆盖和 修正条件判定覆盖。 为便于理解,使用如下所示的程序, 图3-7所示的是其流程图。
开始
图 参 考 例 子 流 程 图
3-7
x=0
T
(a) AND (b OR c)
F
x=1
结束
int function1(bool a,bool b,bool c) { int x; x=0; if(a&&(b||c)) x=1; return x; }
入口
图 插 桩 后 求 最 大 公 约 数 程 序 的 流 程 图
3-3
C(1)=C(1)+1
Q=X
R=Y
C(2)=C(2)+1
Q≠R C(4)=C(4)+1 C(3)=C(3)+1
Q≠R C(5)=C(5)+1 C(6)=C(6)+1
出口
Q=Q–R
R=R–Q
设计插桩程序时需要考虑的问题包括: ① 探测哪些信息; ② 在程序的什么部位设置探测点;
3.1 软件测试方法概述
软件测试的种类大致可分为人工测试 和基于计算机的测试。而基于计算机的测 试又可分为黑盒测试和白盒测试。
1.黑盒测试
黑盒测试是根据软件产品的功能设计 规格,在计算机上进行测试,以证实每个 已经实现的功能是否符合要求。黑盒测试 意味着测试要在软件的接口处进行。
2.白盒测试
白盒测试是根据软件产品的内部工作 过程,在计算机上进行测试,以证实每种 内部操作是否符合设计规格要求,所有内 部成分是否已经过检查。白盒测试把测试 对象看做一个打开的盒子,允许测试人员 利用程序内部的逻辑结构及有关信息,设 计或选择测试用例,对程序所有逻辑路径 进行测试。通过在不同点检查程序的状态, 确定实际的状态是否与预期的状态一致。
procedure DIVIDE(NUM,DEN,E,Q) *E is the accuracy required.E≥0.Q is both * * the result at exit and at any interim stage. * *A.B and W are the other elements of the program vector.* Q:=0 A:=0 B:=DEN/2 W:=1 until W<E loop if(NUM–A–B)≥0 then Q:=Q+W/2 A:=A+B endif B:=B/2 W:=W/2 endloop end
相关文档
最新文档