免费智能真题库 > 历年试卷 > 系统架构设计师 > 2009年下半年 系统架构设计师 上午试卷 综合知识
  第44题      
  知识点:   动态测试   黑盒测试   黑盒测试法   软件测试
  关键词:   测试用例   黑盒测试   软件测试   测试   黑盒   用例        章/节:   测试与评审       

 
软件测试是为了发现错误而执行程序的过程。黑盒测试法主要根据(44)来设计测试用例。
 
 
  A.  程序内部逻辑
 
  B.  程序外部功能
 
  C.  程序数据结构
 
  D.  程序流程图
 
 
 

 
  第41题    2011年下半年  
   61%
静态分析通过解析程序文本从而识别出程序语句中可能存在的缺陷和异常之处;静态分析所包含的阶段中,(41)的主要工作是找出输入变..
  第34题    2021年下半年  
   25%
软件测试是保障软件质量的重要手段。(33)是指被测试程序不在机器上运行,而采用人工监测和计算机辅助分析的手段对程序进行监测。..
  第43题    2018年下半年  
   36%
软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括(42)等方法;后者采用人工和计算机辅助静态分..
   知识点讲解    
   · 动态测试    · 黑盒测试    · 黑盒测试法    · 软件测试
 
       动态测试
        动态测试指通过运行程序发现错误,分为黑盒测试法、白盒测试法和灰盒测试法等。
        (1)黑盒法。把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试,使用这种方法,为了做到穷尽测试,至少必须对所有输入数据的各种可能值的排列组合都进行测试。黑盒测试使用所有有效和无效的输入数据来测试程序是不现实的,所以黑盒测试同样不能做到穷尽测试,只能选取少量最有代表性的输入数据,以期用较少的代价暴露出较多的程序错误。常用的黑盒测试用例的设计方法有等价类划分、边界值分析、错误推测和因果图等。
        等价类划分把程序的输入域划分成若干部分,然后从每个部分中选取少数有代表性的数据作为测试用例,每一类代表性数据在测试中的作用等价于这一类中的其他值。划分等价类时,首先把数目极多的输入分成若干个等价类。所谓等价类就是某个输入域的集合,对于一个等价类中的输入值来说,它们揭示程序中错误的作用是等效的。
        边界值分析是一种补充等价类划分的测试用例设计技术,它不选择等价类的任意元素,而选择等价类边界的测试用例。实践证明,为检验边界附近的处理而专门设计测试用例,常常可以取得良好的测试效果。
        错误推测法基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。基本思想是列举出程序中所有可能的错误和容易发生错误的特殊情况,再根据它们选择测试用例。
        因果图法从自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表。
        (2)白盒法。把测试对象看做一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。由于白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。常用的白盒测试用例设计方法有基本路径测试、循环覆盖测试及逻辑覆盖测试等。
        逻辑覆盖以程序内部逻辑为基础的测试技术,常用的有语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正的条件判断覆盖、条件组合覆盖、点覆盖、边覆盖和路径覆盖等。
        循环覆盖是指覆盖程序中所有的循环,包括单循环及嵌套循环。
        基本路径法在程序控制流程图的基础上,通过分析控制结构的环路复杂性导出基本路径集合,然后设计测试用例,保证这些路径都至少通过一次。
        (3)灰盒法。灰盒测试是一种介于白盒测试与黑盒测试之间的测试,它关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒测试那样详细且完整,而只是通过一些表征性的现象、事件及标志来判断程序内部的运行状态。
        灰盒测试结合了白盒测试和黑盒测试的要素,考虑了用户端、特定的系统知识和操作环境,在系统组件的协同性环境中评价应用软件的设计。
 
       黑盒测试
        黑盒测试又称为数据驱动测试、基于规格的测试、输入输出测试或者功能测试。黑盒测试基于产品功能规格说明书,从用户角度针对产品特定的功能和特性进行验证活动,确认每个功能是否得到完整实现,用户能否正常使用这些功能。
        黑盒测试在不知道系统或组件内部结构的情况下进行,不考虑内部逻辑结构,着眼于程序外部结构,在软件接口处进行测试。黑盒测试主要具有如下功能:
        (1)检查程序功能能否按需求规格说明书的规定正常使用,测试各个功能是否有遗漏,检测是否满足性能等特性要求。
        (2)检测人机交互是否错误,检测数据结构或外部数据库访问是否错误,程序是否能适当地接收输入数据而产生正确的输出结果,并保持外部信息(如数据库或文件等)的完整性。
        (3)检测程序初始化和终止方面的错误。
        黑盒测试方法主要有等价类划分、边界值分析、决策表、因果图、错误推测和功能图法等测试方法,本节主要介绍等价类划分、边界值分析、决策表和元素分析法与错误推测法。
               等价类划分
               等价类是指某个输入域的子集合。在该子集合中,测试某等价类的代表值就等于对这一类其他值的测试,对于揭露程序的错误是等效的。因此,将输入的全部数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据取得较好的测试结果。
               等价类划分有两种情况,即有效等价类和无效等价类。
               (1)有效等价类。对于程序的规格说明来说,它是由合理的、有意义的输入数据构成的集合,利用它可检验程序是否实现了规格说明中所规定的功能和性能。
               (2)无效等价类。与有效等价类相反,它是由对程序的规格说明无意义、不合理的输入数据构成的集合。
               测试用例的设计不仅接收合理的数据,也能经受意外的不合理数据的考验,这样才能确保软件具有较高的可靠性。
               分析可能的输入情况,按照如下几条规则对等价类进行划分。
               (1)在输入条件规定了取值范围或值的个数的情况下,确立一个有效等价类和两个无效等价类。
               例如,若输入条件规定了x的取值为1~100的整数,则等价类划分有效等价类1≤x≤100,两个无效等价类分别为x<1或x>100。
               (2)按照数值集合划分。在输入条件规定了输入值的集合或者规定了“必须如何”的条件下,确立一个有效等价类和一个无效等价类。
               例如,输入条件规定了x的取值为偶数,则有效等价类为x的值为偶数,无效等价类为x的值不为偶数的整数。
               (3)输入条件是一个布尔量的情况,确定一个有效等价类和一个无效等价类。
               (4)规定输入数据取一组值(假定n个),并且程序要在对每一个输入值分别处理的情况下,确立n个有效等价类和一个无效等价类。
               例如,分房方案中对教授、副教授、讲师、助教分别计分,则有效类为4个;无效类为1个。
               (5)按照限制条件或规则划分。在规定输入数据必须遵守的规则的情况下,确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
               例如,C程序设计语言的语法规定.每个语句应以“;”结束,则其有效类有1个,而无效类有若干个(如以“,”结束、以“:”结束、以空格结束等)。
               (6)在确知已划分的等价类中各元素在程序处理方式不同的情况下,再将该等价类进一步划分为更小的等价类。
               等价类划分后,形成等价类表,见下表。
               
               等价类表样式
               根据等价类表,确定测试用例。首先,为每一个等价类规定唯一编号;其次,设计新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;最后,设计新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止(通常,程序在执行一个错误后不继续检测其他错误,故每次只测一个无效类)。
               边界值分析
               软件测试实践中,大量的错误往往发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。例如,数组下标、循环控制变量等边界附近往往出现大量错误。因此,作为等价类划分方法的补充,边界值分析方法不是选择等价类的任意元素,而主要是针对各种边界情况设计测试用例。
               常见的边界值一般具有如下情况:
               (1)对16位的整数而言,32767和-32768是边界。
               (2)屏幕上的光标在最左上、最右下位置是边界。
               (3)报表的第一行和最后一行是边界。
               (4)数组元素的第一个和最后一个是边界。
               (5)循环的第0次、第1次和倒数第2次、最后一次是边界。
               边界值分析法应着重测试的情况,一般选取等价类划分的输入和输出的边界正好等于或刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
               边界值分析方法具有如下原则。
               (1)如果输入条件规定了值的范围,则应选取刚达到范围的边界值,以及刚刚超越边界的值作为测试的输入数据。
               (2)如果输入条件规定了值的个数,则用略低于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值和略高于最大值作为测试数据。
               (3)如果程序规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
               决策表
               决策表又称为判定表,用于分析多种逻辑条件下执行不同操作的技术。在程序设计发展的初期,决策表是程序编写的辅助工具。决策表可以把复杂的逻辑关系和多种条件的组合情况表达明确,与高级程序设计语言中的if-else、switch-case等分支结构语句类似,它将条件判断与执行的动作联系起来。但与程序语言中的控制语句不同的是,决策表能将多个独立的条件和多个动作联系清晰地表示出来。
               决策表的组成如下。
               (1)条件桩:列出了问题的所有条件。通常认为,列出的条件次序无关紧要。
               (2)动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。
               (3)条件项:列出了针对条件桩的取值在所有可能情况下的真假值。
               (4)动作项:列出了在条件项的各种取值的有机关联情况下应该采取的动作。
               规则即任何条件组合的特定取值及其相应要执行的操作。在决策表中,贯穿条件项和动作项的列就是规则。显然,决策表中列出多少个条件取值,也就有多少个规则,条件项和动作项就有多少列。
               所有条件都是逻辑结果的决策表称为有限条件决策表。如果条件有多个值,则对应的决策表就叫做扩展条目决策表。决策表用来设计测试用例,条件解释为输入,动作解释为输出。
               决策表适合以下特征的应用程序:
               (1)if-then-else分支逻辑输出。
               (2)输入变量之间存在逻辑关系。
               (3)涉及输入变量子集的计算。
               (4)输入和输出之间存在因果关系。
               (5)很高的圈复杂度。
               构造决策表的步骤:
               ①确定规则的个数。
               有n个条件的决策表有2n个规则(每个条件取真、假值)。
               ②列出所有的条件桩和动作桩。
               ③填入条件项。
               ④填入动作项,得到初始决策表。
               ⑤简化决策表,合并相似规则。
               元素分析法与错误推测法
               元素分析法主要是对测试对象中的各个元素的属性、范围、特点等进行分析,通过对元素的分析,寻找出测试空间和缺陷空间,设计测试用例的方法。
               元素分析法的基本过程如下:
               (1)找出测试对象中的各个元素。
               (2)分析每个元素的特点和属性,确定测试空间与缺陷空间。
               (3)分析元素的组合情况。
               错误推测法是基于经验和直觉的推测,列举出程序中所有可能错误和容易发生错误的特殊情况,有针对性地设计测试用例。
               经验表明,一段程序中已发现的错误数目和尚未发现的错误数目成正比。程序中容易出错的情况如下所示:当输入数据为零时,或者输入或输出的数目允许变化(例如,被检索的或生成的表的项数),或者输入或输出的数目为0和1的情况(例如,表为空或只有一项)等,都较容易发生错误。又如,在单元测试时曾列出许多在模块中常见的错误,以前产品测试中曾经发现的错误等,这些就是经验的总结。
               错误推测法是根据测试人员的经验来确定测试的范围和程度,主要采用如下技术:
               (1)有关软件的设计方法和实现技术。
               (2)有关前期测试阶段结果的知识。
               (3)根据测试类似或相关系统的经验,了解在以前的这些系统中曾在哪些地方出现过缺陷。
               (4)典型的产生错误的情况,如被零除错误等。
               (5)通用的测试经验规则。
 
       黑盒测试法
        黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。进行黑盒测试主要是为了发现以下几类错误:
        (1)是否有错误的功能或遗漏的功能?
        (2)界面是否有误?输入是否正确接收?输出是否正确?
        (3)是否有数据结构或外部数据库访问错误?
        (4)性能是否能够接受?
        (5)是否有初始化或终止性错误?
        常用的黑盒测试技术有等价类划分、边界值分析、错误推测和因果图等。
               等价类划分
               等价类划分法将程序的输入域划分为若干等价类,然后从每个等价类中选取一个代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。这样就可以用少量代表性的测试用例取得较好的测试效果。等价类划分有两种不同的情况:有效等价类和无效等价类。在设计测试用例时,要同时考虑这两种等价类。
               定义等价类的原则如下:
               (1)在输入条件规定了取值范围或值的个数的情况下,可以定义一个有效等价类和两个无效等价类。
               (2)在输入条件规定了输入值的集合或规定了“必须如何”的条件的情况下,可以定义一个有效等价类和一个无效等价类。
               (3)在输入条件是一个布尔量的情况下,可以定义一个有效等价类和一个无效等价类。
               (4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以定义n个有效等价类和一个无效等价类。
               (5)在规定了输入数据必须遵守的规则的情况下,可定义一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
               (6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。
               定义好等价类之后,建立等价类表,并为每个等价类编号。在设计一个新的测试用例时,使其尽可能多地覆盖尚未覆盖的有效等价类,不断重复,最后使得所有有效等价类均被测试用例所覆盖。然后设计一个新的测试用例,使其只覆盖一个无效等价类。
               边界值分析
               输入的边界比中间更加容易发生错误,因此用边界值分析来补充等价类划分的测试用例设计技术。边界值分析选择等价类边界的测试用例,既注重于输入条件边界,又适用于输出域测试用例。
               对边界值设计测试用例应遵循的原则如下:
               (1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
               (2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数据作为测试数据。
               (3)根据规格说明的每个输出条件,使用上述两条原则。
               (4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
               (5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
               (6)分析规格说明,找出其他可能的边界条件。
               错误推测
               错误推测是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。其基本思想是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。
               因果图
               因果图法是从自然语言描述的程序规格说明中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表。
               利用因果图导出测试用例需要经过以下几个步骤:
               (1)分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类,而结果是输出条件。
               (2)分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。
               (3)标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个标准的符号标明约束条件。
               (4)把因果图转换成判定表。
               (5)为判定表中每一列表示的情况设计测试用例。
               这样生成的测试用例(局部,组合关系下的)包括了所有输入数据的取“真”和取“假”的情况,构成的测试用例数据达到最少,且测试用例数据随输入数据数目的增加而增加。
 
       软件测试
        测试是为评价和改进产品质量、识别产品的缺陷和问题而进行的活动。
        软件测试是针对一个程序的行为,在有限测试用例集合上动态验证软件是否达到预期的行为。
        软件测试过程如下:
        (1)拟定测试计划。
        (2)编制测试大纲。
        (3)设计和生成测试用例。
        (4)实施测试。
        (5)生成测试报告。
        软件测试方法:
        .人工测试:采用人工方式进行测试,目的是通过对程序静态结构的检查,找出编译时不能发现的错误。人工测试包括个人复查、抽查和会审等。
        .机器测试:把设计好的测试用例作用于被测程序,比较测试结果和预期结果是否一致。机器测试包括黑盒测试(功能测试)和白盒测试(结构测试)。
        软件测试伴随软件开发和维护过程,通常可以在概念上划分为以下三个阶段:
        .单元测试:也称为模块测试,在模块编写完成且无编译错误后就可以进行。
        .集成测试:也称为组装测试,就是把模块按系统设计说明书的要求组合起来进行测试。
        .系统测试:是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装和确认测试。其目的是通过与系统需求相比较,发现所开发的系统与用户需求不符合的地方。
   题号导航      2009年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第44题    在手机中做本题