免费智能真题库 > 历年试卷 > 网络工程师 > 2020年下半年 网络工程师 上午试卷 综合知识
  第6题      
  知识点:   软件测试的方法   白盒测试
  章/节:   系统开发基础知识       

 
使用白盒测试时,确定测试数据应根据( )指定覆盖准则。
 
 
  A.  程序的内部逻辑
 
  B.  程序的复杂程度
 
  C.  使用说明书
 
  D.  程序的功能
 
 
 

 
  第4题    2010年上半年  
   34%
使用白盒测试方法时,应根据(4)和指定的覆盖标准确定测试数据。
  第3题    2021年下半年  
   47%
软件测试时,白盒测试不能发现()。
 
   知识点讲解    
   · 软件测试的方法    · 白盒测试
 
       软件测试的方法
        软件测试的关键是测试用例的设计。软件测试的种类大致可分为人工测试和动态测试,动态测试方法中又根据测试用例的设计方法不同,分为白盒测试和黑盒测试。
        1)白盒测试
        白盒测试法需要了解程序内部的结构,测试用例是根据程序的内部逻辑来设计的。白盒测试法主要用于软件的单元测试。
        白盒测试的基本原则如下。
        (1)保证所测模块中每一个独立路径至少执行一次。
        (2)保证所测模块所有判断的每一个分支至少执行一次。
        (3)保证所测模块每一个循环都在边界条件和一般条件至少执行一次。
        (4)验证所有内部数据结构的有效性。
        白盒测试法常用的技术是逻辑覆盖。主要的覆盖标准有6种,强度由低到高依次是语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
        2)黑盒测试
        黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。黑盒测试法主要用软件的确认测试。
        测试方法有以下几种。
        (1)等价类划分:把输入数据划分成若干个有效等价类和若干个无效等价类,然后设计测试用例覆盖这些等价类。
        (2)边界值分析:对各种输入、输出范围的边界情况设计测试用例的方法。这是因为程序中在处理边界情况时出错的概率比较大。
        (3)错误猜测:根据经验或直觉推测程序中可能存在的各种错误。
        (4)因果图:根据输入条件与输出结果之间的因果关系来设计测试用例。
 
       白盒测试
        白盒测试方法一般包括控制流测试(语句覆盖测试、分支覆盖测试、条件覆盖测试、修订的条件/判定覆盖MC/DC、条件组合覆盖测试、路径覆盖测试)、数据流测试、程序变异、程序插桩、域测试和符号求值等。
               控制流测试
               控制流测试依据控制流程图产生测试用例,通过对不同控制结构成分的测试验证程序的控制结构。所谓验证某种控制结构即指使这种控制结构在程序运行中得到执行,也称这一过程为覆盖。以下介绍几种覆盖:
               (1)语句覆盖。语句覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每一条语句至少被遍历,语句覆盖在测试中主要发现错误语句。
               (2)分支覆盖。分支覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每个真值分支和假值分支至少执行一次,分支覆盖也称判定覆盖。
               (3)条件覆盖。条件覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判断中的每个条件的可能取值至少满足一次。
               (4)修订的条件/判定覆盖(MC/DC——Modified Condition/Decision Coverage)。修订的条件/判定覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判定中的每个条件都曾独立的影响判定的结果至少一次(独立影响意思是在其他的条件不变的情况下,只改变一个条件,就可影响整个判定的值)。
               对安全性要求比较高的软件,一般采用此覆盖要求。此覆盖要求在测试用例的效率和数量之间较为平衡。
               (5)条件组合覆盖。条件组合覆盖要求设计适当数量的测试用例,运行被测程序,使得每个判断中条件的各种组合至少出现一次,这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。
               (6)路径覆盖。路径覆盖要求设计适当数量的测试用例,运行被测程序,使得程序沿所有可能的路径执行,较大程序的路径可能很多,所以在设计测试用例时,要简化循环次数。
               以上各种覆盖的控制流测试步骤如下:
               (1)将程序流程图转换成控制流图。
               (2)经过语法分析求得路径表达式。
               (3)生成路径树。
               (4)进行路径编码。
               (5)经过译码得到执行的路径。
               (6)通过路径枚举产生特定路径的测试用例。
               控制流图是描述程序控制流的一种图示方式,它由结点和定向边构成。控制流图的结点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列单个条件的嵌套的判断。控制流图的基本结构如下图所示。
               
               控制流图基本结构
               数据流测试
               数据流测试是用控制流程图对变量的定义和引用进行分析,查找出未定义的变量或定义了而未使用的变量,这些变量可能是拼错的变量、变量混淆或丢失了语句。数据流测试一般使用工具进行。
               数据流测试通过一定的覆盖准则,检查程序中每个数据对象的每次定义、使用和消除的情况。
               数据流测试步骤:
               (1)将程序流程图转换成控制流图。
               (2)在每个链路上标注对有关变量的数据操作的操作符号或符号序列。
               (3)选定数据流测试策略。
               (4)根据测试策略得到测试路径。
               (5)根据路径可以获得测试输入数据和测试用例。
               动态数据流异常检查在程序运行时执行,获得的是对数据对象的真实操作序列,克服了静态分析检查的局限,但动态方式检查是沿与测试输入有关的一部分路径进行的,检查的全面性和程序结构覆盖有关。
               程序变异
               程序变异是一种错误驱动测试,是为了查出被测软件在做过其他测试后还剩余一些的小错误。本方法应用于测试工具。
               程序插装
               程序插装是向被测程序中插入操作以实现测试目的方法。程序插装不应该影响被测程序的运行过程和功能。
               有很多的工具有程序插装功能。由于数据记录量大,手工进行将是一件很烦琐的事。
               域测试
               域测试是要判别程序对输入空间的划分是否正确。该方法限制太多,使用不方便,供有特殊要求的测试使用。
               符号求值
               符号求值是允许数值变量取“符号值”以及数值。符号求值可以检查公式的执行结果是否达到程序预期的目的;也可以通过程序的符号执行,产生出程序的路径,用于产生测试数据。符号求值最好使用工具,在公式分支较少时手工推导也是可行的。
   题号导航      2020年下半年 网络工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第6题    在手机中做本题