问答题 阅读以下说明,根据要求回答问题。
[说明]
某电子商务应用系统项目已由承建单位完成了开发工作。为了保证系统上线后业务的顺畅运行,目前正在开展验收前的各项测试工作。
问答题 被测软件系统研制方提出,为节约成本,由软件开发人员对所开发的软件进行测试,第三方测评机构仅仅进行测试结果确认,并按第三方测评机构规定编写各种测试文档并出具证明。此提议遭到第三方测评机构的反对。 软件研制方认为: 1.自己编写的程序,结构熟悉,需求清楚,易发现问题; 2.自己测试后,又经过第三方的确认,是可行的; 3.知识产权可受保护。 第三方测评机构反驳: 1.程序不能由编写者自己测试,就像不能既当运动员又当裁判员一样; 2.自己测试,有弄虚作假的嫌疑; 3.软件测试不能丧失独立性,仅由测评机构确认,损害测评机构声誉,不行。 针对上述情况,应该由______进行软件系统测试工作。软件研制方的3条理由中,正确的有______条,错误的有______条;第三方测评机构的观点中,正确的有______条,错误的有______条。
【正确答案】第三方测评机构 0 3 3 0
【答案解析】为了保证被测软件系统的质量,最好由独立的测试部门进行测试,在本试题中为独立的机构——第三方测评机构。由第三方测评机构进行软件测试更容易发现开发人员的习惯性错误,更可靠,且开发方的知识产权受合同或委托的约束也会得到很好的保护。因此,软件研制方的3条理由都是错误的,而第三方测评机构反驳的3条理由都是正确的。
问答题 白盒测试是很重要的一种测试方法。在白盒测试用例设计中,有语句覆盖、判定覆盖、路径覆盖、条件覆盖、条件组合覆盖、判定/条件覆盖等几种常见的覆盖测试策略,其中______是最强的覆盖准则。
假设该电子商务应用系统某功能模块使用C语言编写的部分程序代码如图1所示,其中x,y是两个已定义的整型变量。
[*]

图1 某功能模拟的部分程序代码

对该程序段进行覆盖测试时,必须适当地选取测试数据组。表1给出了可供选择的4组测试数据组,则实现语句覆盖至少应采用的测试数据组是______;实现条件覆盖至少应采用的测试数据组是______;实现路径覆盖至少应采用的测试数据组是______或______。
表1 测试数据
变量 测试数据组Ⅰ 测试数据组Ⅱ 测试数据组Ⅲ 测试数据组Ⅳ
x 0 1 -1 3
y 3 2 2 1
A.Ⅰ和Ⅱ组 B.Ⅱ和Ⅲ组 C.Ⅲ和Ⅳ组
D.Ⅰ和Ⅲ组 E.Ⅱ和Ⅳ组 F.Ⅰ、Ⅱ和Ⅲ组
G.Ⅰ、Ⅲ和Ⅳ组 H.Ⅰ、Ⅱ和Ⅳ组 I.Ⅱ、Ⅲ和Ⅳ组
【正确答案】路径覆盖 A G F H
【答案解析】白盒测试是很重要的一种测试方法,测试人员可以很清楚已经有多少代码被检查过了。而且通过测试结果,可以准确地预测出系统中的程序设计错误的数量规模。
覆盖测试是一种白盒测试方法,通常应用在软件测试的早期,即单元测试阶段。其基本思路是以程序的内部结构为基础来设计测试用例,以覆盖尽可能多的程序内部逻辑结构,发现其中的错误和问题。测试人员必须事先拥有被测程序的规格说明书和程序清单。
在白盒测试用例设计中,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等几种常见的覆盖测试策略,这些策略的相关描述及发现错误的能力如表2所示。从表中可得知,试题中所罗列的6种覆盖测试的策略中路径覆盖是最强的覆盖准则,因此(6)空缺处可填入“路径覆盖”。
[*]
可以先画出图1所给程序段的程序流程图,如图2所示。
[*]

图2 某功能模块的部分程序流程图

结合表2中给出的语句覆盖测试策略的描述,选择足够多的测试用例数据,使被测程序中每条语句都至少执行1次。对于本案例的程序段,可选择测试数据组Ⅰ(x=0,y=3),满足“(x=0) and (y>2)”的判断条件,使A语句被执行1次;可选择测试数据组Ⅱ(x=1,y=2),不满足“(x<1) or (y=1)”的判断条件,使B语句被执行1次。因此(7)空缺处应选择选项A(Ⅰ和Ⅱ组)。
结合表2中给出的判定覆盖测试策略的描述,选择足够多的测试用例数据,使得程序中每个判定都获得1次“真”值和“假”值,或者说使程序中每1个取“真”分支和取“假”分支都至少通过1次。对于本案例的程序段,可选择测试数据组Ⅰ(x=0,y=3),使判断条件“(x=0) and (y>2)”的“真”分支执行1次;可选择测试数据组Ⅱ(x=1,y=2),使判断条件“(x<1) or (y=1)”的“假”分支执行1次;可选择测试数据组Ⅲ(x=-1,y=2)或选择测试数据组Ⅳ(x=3,y=1),使判断条件“(x<1) or (y=1)”的“真”分支执行1次。
条件覆盖测试策略的本质是:构造一组测试用例数据,使被测程序中每一个判定语句的每个逻辑条件的可能取值至少满足1次。对于本案例的程序段要实施条件覆盖测试,可选择测试数据组Ⅰ(x=0,y=3),以同时满足判断条件“(x=0) and (y>2)”中x=0和y>2的取值条件;可选择测试数据组Ⅲ(x=-1,y=2),满足判断条件“(x<1) or (y=1)”中x<1的取值条件;可选择测试数据组Ⅳ(x=3,y=1),满足判断条件“(x<1) or (y=1)”中(y=1)的取值条件。因此(8)空缺处应选择选项G(Ⅰ、Ⅲ和Ⅳ组)。
结合表2中给出的判定/条件覆盖测试策略的描述,构造一组测试用例数据,使得判定中的每个逻辑条件取得各种可能的值,并且使得每个判定取得各种可能的判定结果。结合以上分析结论,可知对于本案例的程序段,选择测试数据组Ⅰ(x=0,y=3),同时满足判断条件“(x=0)and (y>2)”中(x=0)和(y>2)的取值条件,且使得该判断条件的“真”分支执行1次。
选择测试数据组Ⅱ(x=1,y=2),使判断条件“(x=0) and (y>2)”的“假”分支执行1次;同时不满足“(x<1) or (y=1)”的取值条件,且使判断条件“(x<1) or (y=1)”的“假”分支执行1次。
选择测试数据组Ⅲ(x=-1,y=2),满足判断条件“(x<1) or (y=1)”中(x<1)的取值条件,且使得使该判断条件的“真”分支执行1次,使判断条件“(x=0) and (y>2)”的“假”分支执行1次。
也可选择测试数据组Ⅳ(x=3,y=1),满足判断条件“(x<1) or (y=1)”中(y=1)的取值条件,且使得使该判断条件的“真”分支执行1次,使判断条件“(x=0) and (y>2)”的“假”分支执行1次。
对于条件组合覆盖测试策略,其含义是选择足够多的测试用例数据,使被测程序中每个判定中逻辑条件的各种组合都至少出现1次。对于本案例的程序段,要实现条件组合覆盖测试工作所需的测试用例见表3。
{{B}}表3 条件组合覆盖测试的测试用例{{/B}}
逻辑条件 测试数据组 逻辑条件 测试数据组
x=0 y>2 x y x<1 y=1 x y
F F 1 1 F F 1 2
F T 1 3 F T 3 1
T F 0 1 T F -1 2
T T 0 3 T T -1 1
结合表2中给出的路径覆盖测试策略的描述,选择足够多的测试用例数据,使被测程序中每一条可能的路径至少执行1次。对于本案例的程序段主要有3条路径:①执行判断条件“(x=0) and (y>2)”“真”分支的路径;②执行判断条件“(x=0) and (y>2)”“真”分支的路径;③执行判断条件“(x=0) and (y>2)”“假”分支的路径。
选择测试数据组Ⅰ(x=0,y=3),同时满足判断条件“(x=0) and (y>2)”中(x=0)和(y>2)的取值条件,使得该判断条件的“真”分支路径被执行1次。
选择测试数据组Ⅱ(x=1,y=2),同时不满足判断条件“(x<1) or (y=1)”中(x<1)和(y=1)的取值条件,使得该判断条件的“假”分支路径被执行1次。
选择测试数据组Ⅲ(x=-1,y=2),满足判断条件“(x<1) or (y=1)”中(x<1)的取值条件,或者选择测试数据组Ⅳ(x=3,y=1),满足判断条件“(x<1) or (y=1)”中(y=1)的取值条件,使得使该判断条件的“真”分支路径被执行1次。
由以上分析可知,(9)、(10)空缺处可分别填入选项F(Ⅰ、Ⅱ和Ⅲ组)、选项H(Ⅰ、Ⅱ和Ⅳ组)。
问答题 针对电子商务平台的运行特性,测试小组进行了基于Web的系统测试,主要完成了以下工作: A.测试Web应用系统能允许多少个用户同时在线; B.测试Web应用系统上有没有孤立页面; C.检查日志文件能否记录所有的事务处理; D.检查是否可以不登录而直接浏览某个页面; E.检验cookies所统计的次数是否正确。 其中,______是功能测试,______是性能测试,______是安全测试。(请使用字母编号回答问题,不定项选项)
【正确答案】B、E A C、D
【答案解析】依题意,“测试Web应用系统能允许多少个用户同时在线”属于性能测试中的负载测试;“测试Web应用系统上有没有孤立页面”属于功能测试中的链接测试;“检验cookies所统计的次数是否正确”属于功能测试中的cookies测试;“检查日志文件能否记录所有的事务处理”属于安全测试中的日志信息测试;“检查是否可以不登录(即不输入相应的用户名和密码)而直接浏览某个页面”属于安全测试中的用户名与密码测试。