第3章 白盒测试

一、填空题

1、语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的_ 执行语句_______。

2、_判定覆盖_______的作用是使真假分支均被执行。

3、__条件覆盖______是指判定语句中的每个条件都要取真假值各一次。

4、对于判定语句if(a>1 AND c<1),测试时要保证a>1、c<1两个条件取“真”、“假”值至少一次,同时,判定语句if(a>1 AND c<1)取“真”、“假”也至少出现一次,这使用了___判定-条件_____覆盖方法。

5、__条件组合______要求判定语句中所有条件取值的可能组合都至少出现一次。

6、在插桩法中,插入到程序中的代码称为___探针_____。

二、判断题

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

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

3、语句覆盖可以测试程序中的逻辑错误。( ×

4、判定-条件覆盖没有考虑判定语句与条件判断的组合情况。(

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

三、单选题

1、下列选项中,哪一项不属于逻辑覆盖。( D )

A、语句覆盖

B、条件覆盖

C、判定覆盖

D、判定-语句覆盖

2、关于逻辑覆盖,下列说法中错误的是。( C )

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

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

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

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

3、关于插桩法,下列说法中错误的是。( C )

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

B、插桩法可分为目标代码插桩和源代码插桩。

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

D、目标代码插桩是往二进制程序中插桩代码。

四、简答题

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

(1)语句覆盖

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

(2)判定覆盖

        判定覆盖又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。

        判定覆盖语句一般是由多个逻辑条件组成,如果仅仅判断测试程序执行的最终结果而忽略每个条件的取值,必然会遗漏部分测试路径,因此,判定覆盖也属于弱覆盖。

(3)判定-条件覆盖

        判定-条件覆盖要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次,例如,对于判定语句if(a>1 AND c<1),该判定语句有a>1、c<1两个条件,则在设计测试用例时,要保证a>1、c<1两个条件取“真”、“假”值至少一次,同时,判定语句if(a>1 AND c<1)取“真”、“假”也至少出现一次。这就是判定-条件覆盖,它弥补了判定覆盖和条件覆盖的不足之处。

        相比于条件覆盖、判定覆盖,判定-条件覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖扩展,因此判定-条件覆盖在仍旧存在遗漏测试的情况。

(4)条件组合覆盖

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

2、请简述一下目标代码插桩的三种执行模式。

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

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

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

第4章 性能测试

一、填空题

1、吞吐量是指__单位时间______内系统能够完成的工作量。

2、TPS是指系统___每秒钟_____能够处理的事务和交易的数量。

3、__负载测试______确定在满足系统性能指标的情况下,系统所能够承受的最大负载量。

4、点击率是指用户每秒向Web服务器提交的___HTTP_____请求数。

5、___容量测试_____通常与数据库、系统资源有关,用于规划将来需求增长时,对数据库和系统资源的优化。

6、LoadRunner工具主要由__VuGen______、__Controller______、__Analysis______三部分组成。

二、判断题

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

2、吞吐量的度量单位是请求数/秒。( ×

3、并发数量增大可能会导致系统响应变慢。(  )

4、点击率是Web应用特有的一个指标。(

5、压力测试是给系统加压直至系统崩溃,以此来确定系统最大负载能力。(  )

6、峰值测试与压力测试是同一个概念。( ×

三、单选题

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

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

B、性能测试就是通过性能测试工具模拟正常、峰值及异常负载状态下对系统的各项性能指标进行测试的活动。

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

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

2、下列选项中,哪一项不是性能测试指标。( C )

A、响应时间

B、TPS

C、DPH

D、吞吐量

3、下列选项中,哪一项是瞬间将系统压力加载到最大的性能测试。( D )

A、压力测试

B、负载测试

C、并发测试

D、峰值测试

4、关于性能测试流程,下列说法中错误的是。( A )

A、性能测试比较特殊,它并不遵循一般测试流程。

B、性能测试需求分析中,测试人员首先要明确测试目标。

C、在制定性能测试计划时,一个非常重要的任务就是设计场景。

D、性能测试通常需要对测试过程执行监控。

5、关于LoadRunner与JMeter,下列说法中错误的是。( C )

A、LoadRunner是收费的,JMeter是开源的。

B、LoadRunner广泛支持业界标准协议。

C、JMeter使用监听器记录服务器的响应。

D、JMeterJMeter报表较少,其测试报告不如LoadRunner详尽。

四、简答题

1、请简述一下常用的性能测试指标。

(1)响应时间

        响应时间是指系统对用户请求作出响应所需要的时间。这个时间是指用户从软件客户端发出请求到用户接收到返回数据的整个过程所需要的时间,包括各种中间件(如服务器、数据库等)的处理时间。

(2)吞吐量

        吞吐量是指单位时间内系统能够完成的工作量,它衡量的是软件系统服务器的处理能力。吞吐量的度量单位可以是请求数/秒、页面数/秒、访问人数/天、处理业务数/小时等。

(3)并发用户数

        并发用户数是指同一时间请求和访问的用户数量。例如对于某一软件,同时有100个用户请求登录,则其并发用户数就是100。并发用户数量越大,对系统的性能影响越大,并发用户数量较大可能会导致系统响应变慢、系统不稳定等。软件系统在设计时必须要考虑并发访问的情况,测试工程师在进行性能测试时也必须进行并发访问的测试。

(4)TPS

        TPS是指系统每秒钟能够处理的事务和交易的数量,它是衡量系统处理能力的重要指标。

(5)点击率

        点击率是指用户每秒向Web服务器提交的HTTP请求数,这个指标是Web应用特有的一个性能指标,通过点击率可以评估用户产生的负载量,并且可以判断系统是否稳定。点击率只是一个参考指标,帮助衡量Web服务器的性能。

(6)资源利用率

        资源利用率是指软件对系统资源的使用情况,包括CPU利用率、内存利用率、磁盘利用率等,资源利用率是分析软件性能瓶颈的重要参数。

2、请简述一下常见的性能测试种类。

(1)负载测试

        负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量。

(2)压力测试

        压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃,从而确定系统所能承受的最大压力。

(3)峰值测试

        性能测试中还有一种压力测试叫作峰值测试,它是指瞬间(不是逐步加压)将系统压力加载到最大,使测试软件系统在极限压力下的运行情况。

(4)配置测试

        配置测试是指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则。配置测试不改变代码,只改变软硬件配置,例如安装版本更高的数据库、配置性能更好的CPU、内存等,通过更改外部配置来提高软件的性能。

(5)可靠性测试

        可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如7*24h),测试系统在这种条件下是否能够稳定运行。由于加载有业务压力且运行时间较长,因此可靠性测试通常可以检测出系统是否有内存泄露等问题。

(6)容量测试

        容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等。容量测试通常与数据库、系统资源(如CPU、内存、磁盘等)有关,用于规划将来需求增长(如用户增长、业务量增加等)时,对数据库和系统资源的优化。

3、请简述一下LoadRunner的组成部分及其作用。

(1)VuGen

        LoadRunner是通过多个虚拟用户在系统中同时工作或访问系统的环境来进行性能测试的,虚拟用户进行的操作通常被记录在虚拟用户脚本中,而VuGen就是用于创建虚拟用户脚本的工具,因此它也称为虚拟用户脚本生成器。

        在创建脚本时,VuGen会生成多个函数用于记录虚拟用户所执行的操作,并将这些函数插入到VuGen编辑器生成基本的虚拟用户脚本,这个创建脚本的过程也叫作录制脚本。

(2)Controller

        Controller用于创建和控制LoadRunner场景,场景负责定义每次测试中发生的事件,包括模拟的用户数、用户执行的操作以及测试要监控的性能指标等。

(3)Analysis

        Analysis是LoadRunner的数据分析工具,它可以收集性能测试中的各种数据,对其进行分析并生成图表和报告供测试人员查看。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐