免费智能真题库 > 历年试卷 > 程序员 > 2017年下半年 程序员 上午试卷 综合知识
  第51题      
  知识点:   软件测试方法   白盒测试   白盒测试法   输入和输出
  关键词:   白盒测试   测试用例   流程图   算法   语句覆盖   白盒   测试   用例        章/节:   程序测试基础知识       

 
若采用白盒测试法对下面流程图所示算法进行测试,且要满足语句覆盖,则至少需要(51)个测试用例,若表示输入和输出的测试用例格式为(A,B,X;X),则满足语句覆盖的测试用例是(52)。
 
 
  A.  1
 
  B.  2
 
  C.  3
 
  D.  4
 
 
 

 
  第51题    2010年上半年  
   50%
测试用例由测试输入数据和与之对应的预期输出结果组成。人们常用白盒法和黑盒法设计测试用例,其中白盒法主要是为了检査(51<..
  第52题    2020年下半年  
   34%
在白盒测试中,( )覆盖是指设计若干个测试用例,运行被测程序,使得程序中的每条语句至少执行一次。
  第53题    2018年上半年  
   29%
在设计白盒测试用例时,(52)是最弱的逻辑覆盖。在下图所示流程中,至少需要(53)个测试用例才可以实现路径覆盖。
 
  第49题    2012年上半年  
   61%
在设计白盒测试用例时,(49)是最弱的覆盖准则。下图至少需要(50)个测试用例才可以进行路径覆盖。
  第51题    2016年下半年  
   52%
对下面流程图用白盒测试方法进行测试,要满足路径覆盖,至少需要(51)个测试用例。白盒测试方法主要用于(52)。

..
  第52题    2018年上半年  
   51%
在设计白盒测试用例时,(52)是最弱的逻辑覆盖。在下图所示流程中,至少需要(53)个测试用例才可以实现路径覆盖。
   知识点讲解    
   · 软件测试方法    · 白盒测试    · 白盒测试法    · 输入和输出
 
       软件测试方法
               静态测试
               静态测试又称代码审查。采用人工检测和计算机辅助静态分析的方式进行测试,目的是通过对程序静态结构的检查,找出编译时不能发现的错误。
               动态测试
               动态测试通过运行程序来发现错误。动态测试主要有白盒测试和黑盒测试。
               .白盒测试(或称结构测试)是把程序看成装在一只透明的白盒子里,测试者完全了解程序的内部结构和处理过程,它根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。
               .黑盒测试(或称功能测试)是把程序看成一只黑盒子,测试者完全不考虑程序的内部结构和处理过程,测试软件的外部特性。
 
       白盒测试
        白盒测试方法一般包括控制流测试(语句覆盖测试、分支覆盖测试、条件覆盖测试、修订的条件/判定覆盖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)根据路径可以获得测试输入数据和测试用例。
               动态数据流异常检查在程序运行时执行,获得的是对数据对象的真实操作序列,克服了静态分析检查的局限,但动态方式检查是沿与测试输入有关的一部分路径进行的,检查的全面性和程序结构覆盖有关。
               程序变异
               程序变异是一种错误驱动测试,是为了查出被测软件在做过其他测试后还剩余一些的小错误。本方法应用于测试工具。
               程序插装
               程序插装是向被测程序中插入操作以实现测试目的方法。程序插装不应该影响被测程序的运行过程和功能。
               有很多的工具有程序插装功能。由于数据记录量大,手工进行将是一件很烦琐的事。
               域测试
               域测试是要判别程序对输入空间的划分是否正确。该方法限制太多,使用不方便,供有特殊要求的测试使用。
               符号求值
               符号求值是允许数值变量取“符号值”以及数值。符号求值可以检查公式的执行结果是否达到程序预期的目的;也可以通过程序的符号执行,产生出程序的路径,用于产生测试数据。符号求值最好使用工具,在公式分支较少时手工推导也是可行的。
 
       白盒测试法
        白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。
        白盒测试的原则如下:
        (1)程序模块中的所有独立路径至少执行一次。
        (2)在所有的逻辑判断中,取“真”和取“假”的两种情况至少都能执行一次。
        (3)每个循环都应在边界条件和一般条件下各执行一次。
        (4)测试程序内部数据结构的有效性等。
        白盒测试常用的技术是逻辑覆盖、循环覆盖和基本路径测试。
               逻辑覆盖
               逻辑覆盖考察用测试数据运行被测程序时对程序逻辑的覆盖程度。主要的逻辑覆盖标准有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖6种。
               (1)语句覆盖。语句覆盖是指选择足够的测试数据,使被测试程序中每条语句至少执行一次。语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。
               (2)判定覆盖。判定覆盖是指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,即程序中的每一个取“真”分支和取“假”分支至少都通过一次,因此判定覆盖也称为分支覆盖。判定覆盖要比语句覆盖更强一些。
               (3)条件覆盖。条件覆盖是指构造一组测试用例,使得每一判定语句中每个逻辑条件的各种可能的值至少满足一次。
               (4)判定/条件覆盖。判定/条件覆盖是指设计足够的测试用例,使得判定中每个条件的所有可能取值(真/假)至少出现一次,并使每个判定本身的判定结果(真/假)也至少出现一次。
               (5)条件组合覆盖。条件组合覆盖是指设计足够的测试用例,使得每个判定中条件的各种可能值的组合都至少出现一次。满足条件组合覆盖的测试用例是一定满足判定覆盖、条件覆盖和判定/条件覆盖的。
               (6)路径覆盖。路径覆盖是指覆盖被测试程序中所有可能的路径。
               循环覆盖
               执行足够的测试用例,使得循环中的每个条件都得到验证。
               基本路径测试
               基本路径测试法是在程序控制流图的基础上,通过分析控制流图的环路复杂性,导出基本可执行路径集合,从而设计测试用例。设计出的测试用例要保证在测试中程序的每一条独立路径都执行过,即程序中的每条可执行语句至少执行一次。此外,所有条件语句的真值状态和假值状态都测试过。路径测试的起点是程序控制流图。程序控制流图中的节点代表包含一个或多个无分支的语句序列,边代表控制流。
 
       输入和输出
        输入和输出信息是与用户的使用直接相关的。输入和输出的方式及格式应当尽可能方便用户的使用。因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。
        不论是批处理的输入输出方式,还是交互式的输入输出方式,在设计和程序编码时都应考虑下列原则:
        (1)对所有的输入数据都进行检验,从而识别错误的输入,以保证每个数据的有效性。
        (2)检查输入项的各种重要组合的合理性,必要时报告输入状态信息。
        (3)使得输入的步骤和操作尽可能简单,并保持简单的输入格式。
        (4)输入数据时,应允许使用自由格式输入。
        (5)应允许缺省值。
        (6)输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目。
        (7)在以交互式输入输出方式进行输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时,在数据输入的过程中和输入结束时,也要在屏幕上给出状态信息。
        (8)当程序设计语言对输入输出格式有严格要求时,应保持输入格式与输入语句的要求的一致性。
        (9)给所有的输出加注解,并设计输出报表格式。
        输入输出风格还受到许多其他因素的影响。如输入输出设备(例如终端的类型,图形设备,数字化转换设备等)、用户的熟练程度以及通信环境等。
        Wasserman为“用户软件工程及交互系统的设计”提供了一组指导性原则,可供软件设计和编程参考。
        (1)把计算机系统的内部特性隐蔽起来不让用户看到。
        (2)有完备的输入出错检查和出错恢复措施,在程序执行过程中尽量排除由于用户的原因而造成程序出错的可能性。
        (3)如果用户的请求有了结果,应随时通知用户。
        (4)充分利用联机帮助手段,对于不熟练的用户,提供对话式服务;对于熟练的用户,提供较高级的系统服务,改善输入输出的能力。
        (5)使输入格式和操作要求与用户的技术水平相适应。对于不熟练的用户,充分利用菜单系统逐步引导用户操作;对于熟练的用户,允许绕过菜单,直接使用命令方式进行操作。
        (6)按照输出设备的速度设计信息输出过程。
        (7)区别不同类型的用户,分别进行设计和编码。
        (8)保持始终如一的响应时间。
        (9)在出现错误时应尽量减少用户的额外工作。
        在交互式系统中,这些要求应成为软件需求的一部分,并通过设计和编码,在用户和系统之间建立良好的通信接口。
   题号导航      2017年下半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第51题    在手机中做本题