软件测试第二版 课后习题

软件测试基础

填空题

  1. 软件从“出生”到“消亡”的过程称为__软件的生命周期______。
  2. 引入风险分析的开发模型为____螺旋____模型。
  3. ISO/IEC 9126:1991标准提出的质量模型包括__功能性______、可靠性、___可移植性_____、效率、可维护性、__可使用性______六大特性。
  4. 按照缺陷的严重程度可以将缺陷划分为___严重_____、一般、次要、___建议_____。
  5. 验证软件单元是否符合软件需求与设计的测试称为___单元测试_____。
  6. 对程序的逻辑结构、路径与运行过程进行的测试称为___白盒测试_____。
  7. 有一种测试模型,测试与开发并行进行,这种测试模型称为___w____模型。

判断题

  1. 软件存在缺陷是由于开发人员水平有限引起的,一个非常优秀的程序员可以开发出零缺陷的软件。(× )

注解:软件缺陷可能由多种因素引起,包括但不限于设计错误、需求不明确、环境问题等,即使是非常优秀的程序员也无法保证开发出完全没有缺陷的软件。软件质量保证是一个复杂的过程,需要团队合作和全面的测试。

  1. 软件缺陷都存在于程序代码中。(× )

注解:软件缺陷不仅存在于代码中,还可能存在于设计、需求、配置、文档等其他方面。

  1. 软件测试是为了证明程序无错。(× )

注解:软件测试的目的是发现软件中的错误和缺陷,而不是证明程序无错。实际上,由于资源和时间的限制,完全无错的软件是不存在的。

  1. 软件测试的H模型融入了探索性测试。( )

注解:H模型是指一种将传统的基于规范的测试与探索性测试相结合的测试模型。它强调在测试过程中既要依靠预先设计的测试用例,也要通过探索性测试发现新的测试路径和缺陷,结合两者的优势,提高测试的全面性和有效性。

  1. 软件测试要投入尽可能多的精力以达到100%的覆盖率。(× )

注解:虽然高覆盖率可以增加发现缺陷的机会,但追求100%的覆盖率并不总是可行或必要的。测试应该根据软件的复杂性、风险和成本效益来平衡。在某些情况下,过度的测试可能会导致资源浪费,而不是提高软件质量。

单选题

  1. 下列选项中,不属于软件开发模型的是( )。
  1. V模型 B.快速原型模型 C.螺旋模型 D.敏捷模型

注解:A. V模型:是一种软件开发模型,强调验证和确认过程的每个阶段。

B. 快速原型模型:是一种软件开发模型,通过快速构建原型来帮助理解需求和改进设计。

C. 螺旋模型:是一种软件开发模型,将迭代开发和风险管理结合起来。

D. 敏捷模型:敏捷(Agile)不是一种单一的软件开发模型,而是一种软件开发方法论。敏捷方法论包含了多种开发模型,如Scrum、Kanban等。

  1. 下列选项中,哪一项不是影响软件质量的因素?( )

A.需求模糊 B.缺乏规范的文档指导

C.软件测试要求太严格 D.开发人员技术有限

  1. 下列哪一项不是软件缺陷产生的原因?( )

A.需求不明确  B.测试用例设计不好 C.软件结构复杂 D.项目周期短

  1. 下列选项中,关于软件缺陷的说法错误的是( )。

A.软件缺陷是软件(包括程序和文档)中存在的影响软件正常运行的问题、错误、隐藏的功能缺失或多余

B.按照缺陷的优先级不同可以将缺陷划分为立即解决、高优先级、正常排队、低优先级

C.缺陷报告有统一的模板,该模板是根据IEEE729-1983制定

D.每个缺陷都有一个唯一的编号,这是缺陷的标识

  1. 下列选项中,关于软件测试的说法错误的是( )。

A.在早期的软件开发中,测试就等同于调试。

B.软件测试是使用人工或自动手段来运行或测定某个系统的过程

C.软件测试的目的在于检验软件是否满足规定的需求或弄清楚预期结果与实际结果之间的差异

D.软件测试与软件开发是两个独立、分离的过程

  1. 下列选项中,不属于软件测试原则的是( )。

A.测试应基于用户需求 B.测试越晚进行越好

C.穷尽测试是不可以的 D.软件测试遵循GoodEnough原则

简答题

  1. 请简述软件缺陷的处理流程。

答:软件缺陷的处理流程可以分为7个环节。

(1)提交:测试人员发现缺陷之后,将缺陷提交给测试组长。

(2)分配:测试组长接收到测试人员提交的缺陷之后,将其移交给开发人员。

(3)确认:开发人员接收到移交的缺陷之后,会与团队甚至测试人员一起商议,确定该缺陷是否是一个缺陷。

(4)拒绝:如果经过商议之后,发现的缺陷不是一个真正的缺陷,则拒绝处理此缺陷,对其进行关闭处理。如果经过商议之后,确定其是一个真正的缺陷,则可以根据缺陷的严重程度或优先级等立即处理或延期处理。

(5)处理:开发人员修改缺陷。

(6)复测:开发人员修改好缺陷之后,测试人员重新进行测试(复测),检测缺陷是否已经修改。如果未被正确修改,则重新提交缺陷。

(7)关闭:测试人员重新测试之后,如果缺陷已经被正确修改,则将缺陷关闭,整个缺陷处理完成。

  1. 请简述软件测试的基本流程。

答:软件测试的基本流程具体如下.

(1)分析测试需求

(2)制定测试计划

(3)设计测试用例

(4)执行测试

(5)编写测试报告

黑盒测试方法

填空题

  1. 等价类划分就是将输入数据按照输入需求划分为若干个子集,这些子集称为___等价类_____。
  2. ____边界值分析法____通常作为等价类划分法的补充。
  3. 因果图中的_ _恒等____关系要求程序有一个输入和一个输出,输出与输入保持一致。
  4. 因果图的多个输入之间的约束包括________、________、____唯一____、____约束____共4种。
  5. 决策表通常由___条件桩_____、___条件项_____、____动作桩____、____动作项____共4个部分组成。
  6. 根据用户操作流程的正确性来划分,场景法通常分为____基本流____和___备选流_____。

判断题

  1. 有效等价类可以捕获程序中的缺陷,而无效等价类不能捕获缺陷。(× )

注解:有效等价类和无效等价类都能捕获程序中的缺陷。有效等价类是指满足条件的输入,而无效等价类是指不满足条件的输入。测试时,两种等价类都应被考虑,因为它们都能揭示潜在的错误。

  1. 如果程序要求输入值是一个有限区间的值,可以划分为一个有效等价类和一个无效等价类。( )   

注解:对于一个有限区间的输入值,通常可以划分为多个有效等价类和至少一个无效等价类。有效等价类可能包括区间内的多个子区间,而无效等价类可能包括区间外的值。使用边界值方法测试时,只取边界两个值即可完成边界测试。                                                                                 

  1. 使用边界值方法测试时,只取边界两个值即可完成边界测试。( ×

注解:边界值测试不仅仅是测试边界的两个值,它还应该包括边界值的内侧和外侧的值,以及边界值之间的值,以确保边界条件被充分测试。

  1. 因果图考虑了程序输入、输出之间的各种组合情况。( )

注解:因果图方法是一种考虑输入条件和输出结果之间的组合情况的测试方法,能够帮助发现不同输入组合对输出结果的影响。

  1. 决策表法是由因果图演变而来的。(

注解:决策表法是一种系统化的表示输入条件及其对应输出的工具,通常是由因果图演变而来,能够更直观地展示复杂的条件组合及其对应的操作。

  1. 正交实验设计法比较适用于复杂的大型项目。( )

注解:正交实验设计法是一种有效的测试设计方法,适用于需要对多个因素进行组合测试的复杂项目,能够在测试成本和测试覆盖率之间取得平衡。

单选题

  1. 下列选项中,哪一项不是因果图输入与输出之间的关系?( )

A.恒等 B.或 C.要求 D.唯一

  1. 下列选项中,哪一项是因果图输出之间的约束关系?( )

A.异 B.或 C.强制 D.要求

  1. 下列选项中,哪一项不是正交实验设计法的关键因素?( )。

A.指标 B.因子 C.因子状态 D.正交表

简答题

  1. 请简述等价类划分法的原则。

答:等价类划分的原则具体如下。

(1)如果程序要求输入值是一个有限区间的值,则可以将输入数据划分为一个有效等价类和两个无效等价类,有效等价类为指定的取值区间,两个无效等价类分别为有限区间两边的值。

(2)如果程序要求输入的值是一个“必须成立”的情况,则可以将输入数据划分为一个有效等价类和一个无效等价类。

(3)如果程序要求输入数据是一组可能的值,或者要求输入值必须符合某个条件,则可以将输入数据划分一个有效等价类和一个无效等价类。

(4)如果在某一个等价类中,每个输入数据在程序中的处理方式都不相同,则应将该等价类划分成更小的等价类,并建立等价表。

  1. 请简述决策表条件项的合并规则。

答:在实际测试中,条件桩通常很多,而且每个条件桩都有真、假两个条件项,有n个条件桩的决策表就会有2n条件规则,有些规则的取值对结果并无影响,这个问题就称为无关条件项,无关条件项使用“-”表示,忽略无关条件项,可以将这两条规则进行合并。合并之后的无关条件项(-)包含其他条件项取值,因此具有相同动作的规则还可进一步合并

  1. 请简述正交实验设计法的测试用例设计步骤。

答:使用正交实验设计法设计测试用例时,可以按照以下3个步骤进行。

(1)提取因子,构造因子-状态表。分析软件的需求规格说明得到影响软件功能的因子,确定因子可以有哪些取值,即确定因子的状态。

(2)加权筛选,简化因子-状态表。软件的因子及因子的状态会有很多,每个因子及其状态对软件的作用也大不相同,如果把这些因子及状态都划分到因子-状态表中,最后生成的测试用例会相当庞大,从而影响软件测试的效率。因此需要根据因子及状态的重要程度进行加权筛选,选出重要的因子与状态,简化因子-状态表。

(3)构建正交表,设计测试用例。正交表的表示形式为Ln(tc),其中L表示正交表,n为正交表的行数,正交表的每一行可以设计一个测试用例,因此行数n也表示可以设计的测试用例的数目。c表示正交实验的因子数目,即正交表的列数,因此正交表是一个n行c列的表。t称为水平数,表示每个因子能够取得的最大值,即因子有多少个状态。

 白盒测试方法

填空题

  1. 语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的___执行语句_____。
  2. ____判定覆盖____的作用是使真、假分支均被执行。
  3. ___条件覆盖_____是指判定语句中的每个条件都要取真值、假值各一次。
  4. 对于判定语句if (a>1 and c<1),测试时要保证a>1、c<1两个条件取真值、假值至少一次,同时,判定语句if (a>1 and c<1)取真值、假值也至少一次,这使用了___判定-条件覆盖_____覆盖方法。
  5. ___条件组合覆盖_____要求判定语句中所有条件取值的可能组合至少出现一次。
  6. 在程序插桩法中,插入程序中的测试代码称为___探针_____。

判断题

  1. 语句覆盖无法考虑分支组合情况。( )

注解:语句覆盖(Statement Coverage)只要求测试用例执行代码中的每一个语句,不考虑条件语句中各个分支的组合情况。因此,语句覆盖无法确保所有的分支组合都被测试到。

  1. 目标代码插桩需要重新编译、链接程序。( 

注解:目标代码插桩是在编译后生成的目标代码中插入探针代码,这通常需要重新编译和链接程序以确保插入的探针代码能够正确运行。

  1. 语句覆盖可以测试程序中的逻辑错误。(× )

注解:语句覆盖主要确保代码的每个语句都被执行,但它不能保证逻辑错误被测试到,因为逻辑错误通常与代码执行的路径无关。

  1. 判定-条件覆盖没有考虑判定语句与条件判断的组合情况。(× )

注解:判定-条件覆盖(Decision-Condition Coverage)确保每个判定语句的所有分支都被执行,并且每个条件判断的所有可能结果都被测试到,因此它确实考虑了判定语句与条件判断的组合情况。

  1. 对于源代码插桩,探针具有较好的通用性。(

注解:源代码插桩是在源代码级别插入探针代码,这种方式通常具有较好的通用性,因为它可以应用于不同的编译器和平台,只要插入的探针代码是有效的源代码即可。

  1. 圈复杂度用来衡量一个模块判定结构的复杂程度。( )

注解:圈复杂度(Cyclomatic Complexity)是一个衡量模块的逻辑复杂度的指标,它通过计算模块中的独立路径数目来评估模块的判定结构复杂程度。较高的圈复杂度通常表示模块具有更多的逻辑分支和更复杂的控制流。

单选题

  1. 下列选项中,哪一项不属于逻辑覆盖?( )

A.语句覆盖 B.条件覆盖 C.判定覆盖 D.判定-语句覆盖

注解:A. 语句覆盖:属于逻辑覆盖的一种,要求测试用例执行程序中的每个语句至少一次。

B. 条件覆盖:属于逻辑覆盖的一种,要求每个条件的每个可能结果(真或假)至少被测试一次。

C. 判定覆盖:属于逻辑覆盖的一种,要求每个判定的每个可能结果(真或假)至少被测试一次。

D. 判定-语句覆盖:这一选项是混合术语,实际上不存在这种逻辑覆盖标准。逻辑覆盖标准中没有“判定-语句覆盖”这种术语。常见的逻辑覆盖类型是语句覆盖、分支覆盖(判定覆盖)、条件覆盖、判定/条件覆盖等。

  1. 关于逻辑覆盖,下列说法中错误的是( )。

A.语句覆盖的语句不包括空行、注释等

B.相比于语句覆盖,判定覆盖考虑到了每个判定语句的取值情况

C.条件覆盖考虑到了每个逻辑条件的取值的所有组合情况

D.在逻辑覆盖法中,条件组合覆盖是覆盖率最大的测试方法

注解:条件覆盖并不考虑所有逻辑条件取值的所有组合情况。考虑所有组合情况的是条件组合覆盖(也叫多条件覆盖)。条件覆盖只考虑每个条件的所有可能取值。

  1. 关于程序插桩法,下列说法中错误的是( )。

A.程序插桩法就是往被测试程序中插入测试代码以达到测试目的的方法

B.程序插桩法可分为目标代码插桩和源代码插桩

C.源代码插桩的程序需要经过编译、链接过程,但测试代码不参与编译、链接过程

D.目标代码插桩是往二进制程序中插入测试代码

  1. 关于圈复杂度的计算,下列说法中正确的是( )。

A.圈复杂度的数量等于控制流图中的节点数量

B.使用V(G)=P+1可以计算圈复杂度,其中P表示控制流图中边的数量

C.使用V(G)=E-N+2可以计算圈复杂度,其中E表示控制流图中节点的数量,N表示控制流图中边的数量

D. 圈复杂度的数量等于控制流图中的区域数量

注解:圈复杂度(Cyclomatic Complexity)是根据控制流图的区域数量计算的,即等于控制流图中的独立路径的数量。公式为V(G)=P+1,其中P表示控制流图中边的数量。公式为V(G)=E-N+2,其中E表示边的数量,N表示节点的数量。

简答题

  1. 请简述基本路径法设计测试用例的步骤。

答:使用基本路径法设计测试用例,主要包括4个步骤。

(1)画出流程图:首先需要分析被测程序的源代码,并画出程序的流程图。

(2)画出控制流图:控制流图是描述程序控制流的一种图示方法。控制流图可以由程序流程图转化而来。如果测试的源程序代码简洁,也可以直接通过分析源程序代码画出控制流图。在画程序的控制流图时,使用圆圈表示一条或多条无分支的语句,使用箭头表示控制流方向。

(3)计算程序的圈复杂度:圈复杂度用来衡量一个模块判定结构的复杂程度。通过计算程序的圈复杂度可以得到程序基本的独立路径数目,从而确定测试用例的数目。

(4)设计测试用例:根据计算出的程序圈复杂度导出基本可执行路径集合,从而设计测试用例的输入数据和预期结果。

  1. 请简述逻辑覆盖法的几种方法及它们之间的区别。

答:(1)语句覆盖

语句覆盖是最常见的覆盖方式,语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。

2)判定覆盖

判定覆盖又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。判定覆盖语句一般是由多个逻辑条件组成,如果仅仅判断测试程序执行的最终结果而忽略每个条件的取值,必然会遗漏部分测试路径,因此,判定覆盖也属于弱覆盖。

3)判定-条件覆盖

判定-条件覆盖要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次它弥补了判定覆盖和条件覆盖的不足之处。相比于条件覆盖、判定覆盖,判定-条件覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖扩展,因此判定-条件覆盖在仍旧存在遗漏测试的情况。

4)条件组合覆盖

条件组合指的是设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次。它与判定-条件覆盖的差别是,条件组合覆盖不是简单地要求每个条件都出现真与假两种结果,而是要求让这些结果的所有可能组合都至少出现一次。

  1. 请简述目标代码插桩的3种执行模式。

:目标代码插桩具有以下3种执行模式。

(1)即时模式:原始的二进制或可执行文件没有被修改或执行,将修改部分的二进制代码生成文件副本存储在新的内存区域中,在测试时仅执行修改部分的目标代码。

(2)解释模式:在解释模式中目标代码被视为数据,测试人员插入的测试代码作为目标代码指令的解释语言,每当执行一条目标代码指令,程序就会在测试代码中查找并执行相应的替代指令,测试通过替代指令的执行信息就可以获取程序的运行信息。

(3)探测模式:探测模式使用新指令覆盖旧指令进行测试,这种模式在某些体系结构(如x86体系结构)中比较适用。

 接口测试

填空题

  1. 断言的目的是验证软件开发的___预期结果_____与实际结果是否一致。
  2. 接口测试原理是模拟____客户端____向服务器发送请求。
  3. 参数化常用的数据文件格式有CSV和___JSON_____。
  4. ___HTTP_____是客户端和服务器之间的通信协议。

判断题

  1. 在接口测试中,测试人员只需要关注被测接口之间数据的传递,不需要关注接口之间的逻辑依赖关系。(× )

注解:接口测试不仅需要关注数据的传递,还需要关注接口之间的逻辑依赖关系,因为这些依赖关系可能会影响接口的正确性和性能。

  1. 通过接口测试可以尽早发现一些页面操作难以发现的问题。( )

注解:Postman允许用户设置多组环境变量,并且可以为每个环境配置不同的变量集,同时也支持全局变量的设置。

  1. 在开展接口测试前,需要对接口文档进行解析和评审。( )

注解:Postman允许用户设置多组环境变量,并且可以为每个环境配置不同的变量集,同时也支持全局变量的设置。

  1. 如果没有接口文档,则无法获取接口的相关信息。( × )

注解:即使没有接口文档,也可以通过其他方式获取接口信息,比如通过开发者的口头描述、代码审查、网络抓包工具等。

  1. 在Postman中可以设置多组环境变量,但是只能设置一组全局变量。( )

注解:Postman允许用户设置多组环境变量以适应不同测试环境的需求,但全局变量只能设置一组,全局变量在所有环境中都共享。

  1. POST请求方法用于请求服务器更新指定的资源。(× )

注解:POST请求方法主要用于向服务器提交数据,通常用于创建新资源。用于更新指定资源的方法一般是PUT或PATCH。

选择题

  1. 下列选项中,不属于HTTP请求组成部分的是( )。
  1. 请求行 B.请求体 C.状态行 D.请求头

注解:HTTP请求由请求行、请求头、请求体组成,状态行是HTTP响应的一部分。

  1. 下列关于HTTP响应说法错误的是( )。

A.当服务器成功接收到HTTP请求时,才会产生HTTP响应

B.响应体位于响应头的下方

C.状态行包括协议版本、状态码和状态码描述

D.响应头位于HTTP响应的第1行

注解:HTTP响应由状态行、响应头、响应体组成,状态行通常位于响应的第1行,响应头位于状态行下方,响应体位于响应头下方。

  1. 下列选项中,关于Postman的基本使用说法错误的是( )。

A.使用Postman进行接口测试时不支持导入JSON格式的文件

B.Postman工具中的Status code:Code is 200可以用于响应状态码断言

C.通过设置环境变量或全局变量可以实现接口关联

D.可以对HTTP响应中的某个字符串进行断言

  1. 下列选项中,关于HTTP响应状态码说法错误的是( )。

A.状态码500,表示服务器发生错误

B.状态码400,表示客户端请求的资源不存在

C.状态码503,表示服务器当前不能处理客户端的请求

D.状态码200,表示客户端请求成功

注解:状态码400表示客户端请求有错误,而状态码404表示客户端请求的资源不存在。

  1. 下列选项中,关于HTTP请求体说法正确的是( )。

A.所有的请求方法都有请求体

B.请求体中的数据类型只有text/html

C.通常在POST和PUT请求方法中才有请求体

D.请求体位于HTTP请求的第1行

  1. 下列选项中,关于URL说法错误的是( )。

A.因特网上的每个文件都有一个唯一的URL

B. URL是描述因特网上网页和资源的一种标识方法

C. URL不支持FTP协议

D.每一种传输协议都有默认的端口号,通常可以省略

简答题

  1. 请简述实现接口测试的方式。

答:实现接口测试的方式有两种,分别是通过工具实现和通过代码实现。常用的接口测试工具有Postman、JMeter等,测试人员使用Java、Python等语言编写代码也可以实现接口测试,在使用Java语言编写接口测试的代码时,通常需要结合HttpClient技术;在使用Python语言编写接口测试的代码时,通常需要结合Request框架。虽然通过代码实现接口测试的方式能够让测试人员与开发人员使用相同的技术栈,更好的对接测试流程,但是这种方式要求测试人员具备一定的编程能力,对于编程能力弱的测试人员而言难度较大。

  1. 请简述接口测试的流程。

答:在工作中,测试人员需要按照公司制定的流程开展接口测试,通常,接口测试的流程包括分析接口测试需求、解析与评审接口文档、编写接口测试计划、设计与评审接口测试用例、搭建接口测试环境、编写接口测试脚本、执行接口测试用例、管理与跟踪接口缺陷、整理测试报告。在时间充裕并且公司条件允许的情况下,有时还会进行接口自动化持续集成测试。

性能测试

填空题

  1. 吞吐量是指___单位时间_____内系统能够完成的工作量。
  2. TPS是指系统___每秒钟_____能够处理的事务和交易的数量。
  3. 系统在负载情况下,失败业务的概率称为___错误率_____。
  4. 在JMeter中,一个用户用一个____线程____表示。
  5. JMeter中用于向服务器发送各种请求的组件为___取样器_____。
  6. JMeter中用于查看服务器响应结果的组件为___监听器_____。
  7. 如果一个线程组中的多个请求的IP地址、端口号都相同,可以将请求的IP地址、端口号配置在___HTTP请求默认值_____元件。
  8. 用于判断服务器响应结果是否准确的组件为___断言_____。
  9. 在JMeter中,如果一个请求需要以另一个请求的响应数据作为参数,这种现象称为____关联____。
  10. JMeter中的组件___定时器_____可以让请求延迟一段时间再发送。

判断题

  1. 性能测试只能测试系统是否满足用户需求,无法发现潜在的性能问题。(× )

注解:性能测试不仅可以验证系统是否满足用户需求,还能通过模拟不同的负载条件来发现潜在的性能问题。

  1. 基准测试就是一次功能测试。(× )

注解:基准测试(Benchmarking)是指对系统的性能进行基准评估,不是功能测试。它主要关注系统的性能指标,如响应时间、吞吐量等。

  1. QPS和TPS是等同的。(× )

注解:QPS(Queries Per Second)是每秒查询次数,常用于数据库性能测试;TPS(Transactions Per Second)是每秒事务处理次数,通常用于衡量系统的整体事务处理能力。两者不是等同的。

  1. 响应时间是指系统对用户请求做出响应所需要的时间。(  )

注解:响应时间确实指系统从接收到用户请求到做出响应所需要的时间,这是一个常见的性能指标。

  1. 吞吐量的度量单位是请求数/秒。(  )

注解:吞吐量的度量单位可以是请求数/秒页面数/秒、访问人数/天等。

  1. 点击率是Web应用特有的一个指标。(   )

注解:点击率虽然常用于Web应用中的广告和链接点击统计,但它并不是Web应用特有的指标。点击率也应用于其他数字营销活动,如电子邮件营销和在线广告,因此并不局限于Web应用。书上描述为特有,以书本为答案

  1. 安装JMeter之前,必须要安装JDK。(  )

注解:JMeter是基于Java开发的工具,运行需要Java环境,所以在安装JMeter之前必须安装JDK。

  1. 执行测试结束之后的回收工作可以在tearDown线程组中配置。( × )

注解:在JMeter中,tearDown线程组用于在每个线程执行结束后执行一些清理工作,而不是测试结束后。测试结束后的清理工作通常在测试计划的最后进行。

  1. 其他元件引用用户定义的变量的格式为$[变量名]。( × )

注解:JMeter中,引用用户定义的变量的格式是{变量名},而不是$[变量名]。

  1. 正则表达式提取器可以提取任意格式的响应数据。( )

注解:正则表达式提取器可以根据正则表达式匹配任意格式的响应数据,是一种灵活的数据提取方式。

  1. HTTP请求只能从线程组添加。(× )

注解:HTTP请求可以在JMeter的线程组中添加,也可以通过其他元件如HTTP请求默认值元件来设置,不一定非要直接从线程组添加。

单选题

  1. 下列选项中,可以让系统在强负载情况下,持续运行一段时间(如7´24h)的测试( ).

A.基准测试 B.并发测试 C稳定性测试 D.配置测试

  1. 下列选项中,可以配置测试前的初始化操作的线程组为( )。
  1. setUp线程 B.tearDown线程组 C.线程组 D.以上都不对

注解:setUp线程组用于在测试执行前进行初始化操作,如建立数据库连接等。

  1. 关于性能测试,下列说法中错误的是( )。

A.软件响应慢属于性能问题

B.性能测试是通过性能测试工具模拟正常、峰值及异常负载条件来对系统的各项性能指标进行测试

C.性能测试可以发现软件系统的性能瓶颈

D.性能测试是以验证功能实现完整为目的

  1. 下列选项中,用于控制脚本的执行顺序的组件是( )。

A.取样器 B.前置处理器 C.定时器 D.逻辑控制器

  1. 下列选项中,哪一项不是性能测试指标?( )
  1. 响应时间 B.TPS C.并发进程数 D.吞吐量

注解:并发进程数(Concurrent Processes)通常不是性能测试指标,而是系统资源指标。

  1. 如果发送的HTTP请求中包含请求头,可以使用下列哪个元件进行配置?( )

A.HTTP请求默认值 B.HTTP请求信息头管理器

C.用户参数 D.用户定义的变量

  1. 下列选项中,可以匹配任意字符的符号为( )。

A.         B.+ C.* D.()

  1. 下列选项中,可以瞬间将系统压力加载到最大的性能测试是( )。

A.压力测试 B.负载测试 C.并发测试 D.峰值测试

  1. 下列选项中,可以实现JMeter参数化的组件为( )。

A.配置元件 B.监听器 C.断言 D.取样器

简答题

  1. 请简述性能测试的概念及其主要目的。

答:性能测试是通过性能测试工具模拟正常、峰值及异常负载状态下对系统各项性能指标进行监控的一种测试类型。性能测试能够验证软件系统是否达到了用户期望的性能需求,同时也可以发现系统中可能存在的性能瓶颈及缺陷,从而优化系统的性能。

性能测试的目的主要有以下4方面。

(1)验证系统性能是否满足预期的性能需求,包括系统的执行效率、稳定性、可靠性、安全性等。

(2)分析软件系统在各种负载水平下的运行状态,提高性能调整效率。

(3)识别系统缺陷,寻找系统中可能存在的性能问题,定位系统瓶颈并解决问题。

(4)系统调优,通过重复、长时间的测试,找出系统中存在的隐含问题,改善并优化系统的性能。

  1. 请简述基准测试的概念。

答:从狭义上讲,基准测试是指单用户测试,测试环境确定后,使用单个用户对业务模型中的重要业务做多次单独的测试,观察并记录各项性能指标的变化。

  1. 请简述JMeter中断言的作用。

答:断言用于验证响应结果是否正确,即用一个预设的结果(值、表达式、时间长短等与实际结果进行匹配,匹配成功断言成功,匹配失败就是断言失败。

  1. 请简述JMeter中后置处理器的作用。

答:后置处理器用于响应数据进关联处理,谓关联是请求之间有依赖关系,比如一个请求需要另一个请求的响应数据为参数,则需要先获取另一个请求的响应数据,其响应数据进行处理,再将响应数据作为参数送本次请求。获取一个请求的响应数据就需要用到后置处理器。

  1. 请简述JMeter中线程组的分类及其作用。

答:JMeter中的线程组主要有setUp线程组、tearDown线程组、线程组,这3个线程组的作用分别如下。

(1)setUp线程:一种特殊类型的线程组,于执行测试前的初始化操作。

(2)tearDown线程组:一种特殊类型的线程组,于执行测试结束之后的回收工作。

(3)线程普通线程组,一个线程组可以表示一个虚拟用户组,线程可以设置线程数量,每一个线程都可模拟一个虚拟用户。

Web自动化测试

填空题

  1. 在自动化测试中,常见的技术有__录制与回放技术______、脚本技术和数据驱动技术。
  2. 金字塔策略要求自动化测试从___UI测试____、接口测试、单元测试这3个不同类型、级别的测试进行。
  3. 常见的脚本技术有线性脚本、结构化脚本和___共享脚本_____。
  4. 在unittest框架的基本要素中,___TestCase_____表示测试用例。
  5. 在pytest框架中可以使用___assert_____关键字与表达式进行断言。
  6. ___Fixture____表示测试固件,用于对测试环境的____初始化____和销毁。

判断题

  1. 自动化测试能够完成人工测试无法完成的测试场景。( )

注解:自动化测试能够执行一些人工测试难以完成的测试场景,如大量数据的重复性测试、高频率的压力测试、定时执行的回归测试等。

  1. 软件在升级或者功能发生改变之后不需要进行回归测试,只需要测试改变的部分。(× )

注解:软件升级或功能变更后,进行回归测试是必要的,以确保新变更没有破坏原有功能。

  1. 自动化测试可以达到100%覆盖率。(× )

注解:虽然自动化测试可以提高测试覆盖率,但在实际中很难达到100%的覆盖率。某些复杂场景和边缘情况可能难以通过自动化脚本全面覆盖。

  1. 自动化测试无须人工手动执行,完全由自动化测试工具完成。(× )

注解:自动化测试需要人工编写和维护测试脚本,以及分析测试结果。虽然执行过程可以自动化,但整个自动化测试生命周期中仍需人工干预。

  1. 自动化测试可以提高测试效率,却无法保证测试的有效性。( )

注解:自动化测试可以显著提高测试效率,尤其是对于重复性和大量数据的测试。但自动化测试的有效性取决于测试用例和脚本的设计质量。如果脚本设计不当或测试用例不全面,可能会漏掉一些缺陷。因此,自动化测试需要与人工测试结合,以确保测试的全面性和有效性。

  1. pytest框架是Python标准库中自带的一个单元测试框架。(× )

注解:pytest框架不是Python标准库中自带的,而是一个第三方的Python单元测试框架。

单选题

  1. 下列选项中,关于单元测试、接口测试和UI测试的描述错误的是( ).

A.单元测试主要测试的是函数功能、接口

B.在单元测试中主要使用白盒测试方法

C.接口测试中使用白盒测试和黑盒测试结合的方法进行测试

D.UI测试中不能修改界面布局

  1. 下列选项中,不属于自动化测试缺点的是( )。

A.自动化测试对测试团队的技术有更高的要求

B.自动化测试对于迭代较快的产品来说时间成本高

C.自动化测试具有一致性和重复性的特点

D.自动化测试脚本需要进行开发,并且自动化测试中错误的测试用例会浪费资源

  1. 下列选项中,不属于脚本测试技术的是( )。

A.线性测试

B.结构化测试脚本

C.回归测试脚本

D.共享脚本

注解:回归测试是一种测试类型,不是脚本技术。

  1. 下列选项中,关于selenium元素定位的方法说法错误的是( )

A.find_element_by_id(name)方法表示通过元素name的属性值定位元素

B.find_element_by_name(name)方法表示通过元素name的属性值定位元素

C.通过css选择器定位元素时调用find_element_by_css_selector()方法

D.通过超链接全部文本信息定位元素时调用find_element_by_partial_link_text()方法

  1. 下列选项中,用于输入操作的方法是( )。
  1. click() B.submit() C.send_keys() D.clear()

注解:在Selenium中,send_keys()方法用于模拟键盘输入操作,通常用于向文本框、输入框等元素发送文本。

  1. 下列关于自动化测试的描述正确的是( )。

A.自动化测试能够很好地进行回归测试,从而缩短回归测试时间

B.自动化测试脚本不需要维护,每次测试完成后进行下一次测试需要重新编写测试用例

C.自动化测试只需要熟练掌握自动化测试工具即可

D.自动化测试中测试人员仅仅测试负责的模块,不需要考虑其他干扰因素

  1. 下列选项中,属于pytest框架中Fixture类级别的初始化方法的是( )。

A.setup_method() B.setup_class() C.setup_function() D.setup_module()

简答题

  1. 请简述自动化测试需要满足的条件。

答:使用自动化测试需要满足以下3个条件。

(1)项目需求变动不频繁

(2)项目进度压力不大,时间不紧迫

(3)多种浏览器或平台上可以重复运行相同的测试脚本

  1. 请简述自动化测试的优缺点。

答:自动化测试的优点如下。

(1)提高回归测试效率

(2)提高测试人员利用率

(3)提高测试精确度

(4)提高测试的便捷性

自动化测试的优点如下。

(1)不能提高测试的有效性

(2)发现的缺陷比人工测试少且不容易发现新的缺陷

App测试

填空题

  1. 移动设备常用的系统为iOS系统和___Android_____系统。
  2. App的专项测试包括安装测试、卸载测试、升级测试、___交互性测试_____、弱网测试、耗电量测试。
  3. Appium的测试对象包括__原生应用______、移动Web应用和混合应用。
  4. App的UI测试要点包括导航测试、内容测试和___图形测试_____。
  5. App的特性包括设备多样性、___网络多样性_____、平台多样性。
  6. text属性的作用是___获取元素的text值_____。
  7. 在Appium手势操作中,在程序中通过调用____drag_and_drop()____方法可以实现拖曳操作。

判断题

  1. App是指运行在手机中的应用程序。(

注解:App(应用程序)是指运行在移动设备(如智能手机、平板电脑)中的软件程序。

  1. App使用的网络只能是Wi-Fi。(×

注解:App可以使用各种网络连接,包括Wi-Fi、移动数据网络等

  1. App可接受语音输入。(

注解:许多App可以接受语音输入,尤其是在语音助手、语音搜索和语音识别功能中广泛应用。

  1. App测试的要点可以不考虑系统兼容性。(×

注解:在App测试中,系统兼容性是一个重要的考虑因素,因为不同的操作系统版本、设备型号可能会影响App的运行情况。

  1. Appium使用的是HTTP协议。(

注解:Appium使用的是HTTP协议,通过WebDriver协议(基于HTTP)与被测应用进行通信。

  1. Appium不支持PHP语言。(×

注解:Appium支持多种编程语言的客户端库,包括Java、JavaScript、Python、PHP、Ruby、C#等。因此,Appium是支持PHP语言的。

单选题

  1. 下列选项中,关于App的说法中错误的是( )

A. App使用的网络可能会从Wi-Fi瞬间切换到4G

B. App满足了用户对移动生活、工作的强烈需求

C. App无法接受键盘鼠标输入

D. App屏幕窄小,显示信息有限

  1. 下列选项中,哪一项不属于移动App的UI测试( )

A.图片测试 B.安装测试 C.文字测试 D.颜色测试

  1. 下列选项中的方法或属性,哪一项用于判断元素是否可见( )

A.rect     B.is_selected() C.location D.is_displayed()

  1. 关于Appium手势操作,下列说法中错误的是( )

A.如果模拟手指在屏幕上进行移动操作,则可以调用move_to()方法

B.轻敲、长按、拖曳等都可以称为Appium手势操作

C. swipe()方法和scroll()方法都可以实现滑动操作,其中scroll()方法可以设置滑动的持续时间

D.drag_and_drop()方法与scroll()方法传递的参数都是元素对象,但是drag_and_drop()方法没有惯性

  1. 关于Appium元素定位,下列选项中说法正确的是( )

A. Selenium具有的方法在Appium中无法调用

B. 通过resource-id属性定位时可以调用find_elment_by_accessibility_id()方法

C. 通过uiautomator定位元素可以调用find_element_by_android_uiautomator()方法

D. 调用find_element_by_class_name()方法时可以不验证元素的class属性是否唯一

注解:Appium支持多种元素定位方法,包括但不限于Selenium的方法,以及为Android和iOS平台特定的定位方法。find_element_by_accessibility_id() 是通过辅助功能ID定位元素的方法,find_element_by_class_name() 方法确实可以用来通过类名定位元素,但通常需要验证元素的class属性是否唯一,以确保定位的准确性。

简答题

  1. 请简述App测试与PC端软件测试的区别。

答:App与PC端软件测试的区别主要有如下4点。

(1)页面布局不同

(2)使用场合不同

(3)输入方法不同

(4)操作方式不同

  1. 请简述App专项测试要点。

:App专项测试要点主要有以下6点。

(1)安装测试

(2)卸载测试

(3)升级测试

(4)交互性测试

(5)弱网测试

(6)耗电量测试

  1. 请简述App性能测试要点。

:App性能测试要点主要有以下4点。

(1)边界测试:在各种边界压力下,如电量不足、存储空间不足、网络不稳定时,测试App是否能正确响应和正常运行。

(2)压力测试:对App不断实加压力,如不断增加负载、不断增大数据吞吐量等以确定App的服务瓶颈,获得App能提供的最大服务级别,确定App性能是否满足用户需求。

(3)响应能力测试:响应能力测试实质上也是一种压力测试,在一定条件下App是否可以正确响应,响应时间是否超过了客户需求。

(4)耗能测试:测试App运行时对移动设备的资源占用情况,包括内存、CPU消耗,App长期运行时耗电量、耗流量情况,验证App对资源的消耗量是否满足用户需求。

  • 31
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,作为AI语言模型,我可以用中文回答这个问题。 Java基础案例教程第二课后习题答案,应该是指Java编程基础知识的教程类书籍的第二中,课后练习中的答案。如果您是在学习这本教材,可以在课后习题的答案中得到自己的巩固和检验。如果您还没有这本教材,可以到网上或实体书店购买。祝您学习愉快! ### 回答2: 很抱歉,作为一名AI语言模型,我目前没有本地存储Java基础案例教程第二课后习题答案。但是,作为一名语言模型,在帮助您回答问题的同时能够为您提供一些有用的信息和建议。 针对Java编程初学者,建议在掌握Java基础语法的基础上多注重实践和案例练习,可以通过参考相关书籍的习题答案来加深对于Java编程的理解和运用。 在解答Java基础案例教程第二课后习题时,同样也需要注重思路的拓展和代码的细节分析。建议在每章节的学习中把握好Java语法的基础知识,同时结合实际案例进行练习,并多借助计算机软件等工具进行实验测试。 总的来说,学习Java编程需要掌握不断实践、不断练习的方法,只有通过实际操作和多次练习,才能真正理解和掌握Java编程语言的核心思想和特点。 ### 回答3: 很抱歉,我无法提供该书的课后习题答案。答案应由学生自行完成,以便他们可以通过练习和挑战来深入学习Java编程语言的基础知识。此外,完成习题也有助于学生独立思考和解决问题的能力。建议学生可以借助书中的例题、代码样例和文档资料来辅助完成习题,并可在完成后向老师或同学请教、交流和讨论,从而更好地掌握Java编程技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值