软件测试重点试题及答案 联系客服

发布时间 : 星期一 文章软件测试重点试题及答案更新完毕开始阅读1353eb5e284ac850ac024291

程序员所做的测试工作并非真正意义上的软件测试,从本质上来说,应该称作“调试“。 调试就是,在已知错误的情况下,对软件程序代码作出一系列检查,校正的过程。而软件测试则是在未知错误的情况下,检查程序代码是否有问题的过程。 1.2.2 软件测试的定义

a. 软件是一个集合,包括三部分:程序代码,文档,数据。

b. 软件测试就是为了发现错误而审查软件文档、检查软件数据和执行程序代码的过程,其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷,最后交付一个高质量的软件给用户。

c. 从广义上讲,软件测试是指软件产品生存周期内的所有检查、评审和确认活动。如设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等。

d. 软件测试中称找缺陷的过程为找Bug。Bug表示电脑系统或程序中隐藏的错误、缺陷和问题。

一切不完美的地方,我们都可以认为其实一个Bug。 1.2.3 软件测试分类

(1)一般的,我们将软件测试活动分为以下几类:黑盒测试、白盒测试、灰盒测试、静态测试、动态测试、手动测试、自动测试等。 1)黑盒测试

黑盒测试又叫做功能测试、数据驱动测试或基于需求规格说明书的功能测试。该测试类型注重于测试软件的功能性需求。

测试工程师无需了解程序代码内部结构,完全模拟软件产品的最终用户使用该软件,检查软件产品是否达到了用户的需求。 2)白盒测试

白盒测试又称为结构测试、逻辑驱动测试或基于程序代码内部构成的测试。 测试工程师将深入考察程序代码的内部结构,逻辑设计等。 3)灰盒测试

灰盒测试是前两种测试的集合,一方面考虑程序代码的功能性表现,另一方面又要考虑程序代码内部结构。

像我们的功能测试,自动化功能测试就采用了灰盒测试的方法。 4)静态测试

静态测试,顾名思义,就是静态的、不执行被测对象程序代码而寻找缺陷的过程。通俗的讲,静态测试就是用眼睛看,阅读程序代码、文档资料等,与需求规格说明书中的客户需求进行比较,找出程序代码中设计不合理以及文档资料有错误的地方。

一般在企业、公司里召开正规的评审会,通过评审的方式,找出文档资料、程序代码中存在缺陷的地方,并加以修改。

在进行代码静态测试时,可以使用代码走查工具,如QA C++、C++Test等。 5)动态测试

动态测试即为实际的执行被测试对象代码,输入事先设计好的测试用例,检查程序代码运行的结果与测试用例中设计的预期结果之间是否有差异,判定实际结果与预期结果是否一致,从而检查程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能状况。

动态测试由四部分组成:设计测试用例、执行测试用例、分析比较输出结果、输出测试报告。

6)手动测试

手动测试是最传统的测试方法。它是测试人员设计测试用例并且执行测试用例,然后根据实际的结果去和预期的结果相比较并记录测试结果,最终输出测试报告的测试活动。 7)自动化测试

随着测试技术的不断更新,出现了很多自动化测试工具,如HP的QuickTest Professional、LoadRunner,微软的WAS,IBM的Rational等。

所谓的自动化测试就是利用一些测试工具,模拟用户的业务使用流程,让它们自动运行来查找缺陷。也可以编写一些代码,设定特定的测试场景,来自动寻找缺陷。

自动化测试的优点是能够很快、很广泛的查找缺陷,同时可以做很多重复性的工作,在回归测试阶段,可以利用QuickTest Professional自动化功能测试工具进行。

有时候我们常常需要做一种压力测试,需要几万甚至几十万个用户同时访问某个站点,以保证网站的服务器不回出现死机或者崩溃的现象。一般来说,找几万人同时打开网页是不现实的,就算能够找到那么多的测试者,成本也很高。但是,利用测试工具,比如LoadRunner,就可以非常容易得做到,并且测试工具还可以自动判断浏览结果是否正确。 1.3 软件测试流程

测试计划的编写从分析和设计阶段就开始了。

在实际工作中,测试环节可分为明显的、同等重要的几个阶段:需求测试、单元测试、集成测试(又称组装测试)和系统测试。第六阶段是验收测试阶段,验收测试无论是在规模上或性质上都和系统测试很相似,它们的根本区别在于:前者是内部的,而后者是手“客户“控制的。

软件测试流程图

单元测试:是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。她是软件动态测试的最基本部分,也是最重要部分,其目的是检验软件基本组成单位的正确性。

8、既可以用于黑盒测试,也可以用于白盒测试的方法的是()

A. 逻辑覆盖法 B. 边界值法 C. 基本路径法 D. 正交试验设计法

逻辑覆盖法和基本路径测试是白盒测试的大分类;

正交实验设计法:也是不涉及代码内部结构的典型的黑盒测试方法;

边界值法在黑盒测试中,我们可以不涉及代码来取边界值;但是也可以在设计代码时,比如在条件覆盖等白盒测试方法中取到边界值,因为往往边界值的位置容易出错。。。所以是两种测试都可以用

9、验收测试是由最终用户来实施的。请判断这句话的正确与否。 A. T B. F

Acceptance testing(验收测试),系统开发生命周期方法论的一个阶段,这时相关的用户和/或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制。

验收测试有alpha和beta两种,且都由用户来实施,区别在于是否为最终用户

alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部用户在模拟实际操作环境进行的受控测试

beta测试是由软件的多个用户在一个或多个实际使用环境下进行的测试 验收测试有alpha和beta两种,且都由用户来实施,区别在于是否为最终用户

alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部用户在模拟实际操作环境进行的受控测试

beta测试是由软件的多个用户在一个或多个实际使用环境下进行的测试

10、如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的判定覆盖

11、在下面说列举的逻辑测试覆盖中,测试覆盖最强的是?

A. 条件覆盖 B. 条件组合覆盖 C. 语句覆盖

D. 判定/条件覆盖

条件覆盖CC(Condition Coverage),设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%[1] 条件覆盖的缺点:只考虑到每个判定语句中的每个表达式,没有考虑到各个条件分支(或者涉及不到全部分支),即不能够满足判定覆盖.

条件组合覆盖,也称多条件覆盖MCC (Multiple Condition Coverage),设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)。这种方法包含了“分支覆盖”和“条件覆盖”的各种要求。满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖。条件组合覆盖率的公式:条件组合覆盖率=被评价到的条件取值组合的数量/条件取值组合的总数条件组合覆盖的缺点:判定语句较多时,条件组合值比较多。

语句覆盖 SC(Statement Coverage),就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖在测试中主要发现缺陷或错误语句。

判定条件覆盖CDC(Condition/ Decision Coverage),设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。[1] 判定条件覆盖率的公式:条件判定覆盖率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数).判定条件覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。 正确答案:B

解析:逻辑测试覆盖是白盒测试法常用的技术。主要的覆盖标准有6种,强度由弱到强依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖 12、[不定项选择题]

有关\测试驱动开发\,下列说法正确的有?

A. TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码

B. TDD的基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测

试工作,而是把需求分析,设计,质量控制量化的过程。 C. TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在

开发过程中帮助客户和程序员去除模棱两可的需求。 D. TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能

的过程和接口进行设计,而测试框架可以持续进行验证。

测试驱动开发,英文全称Test-Driven Development,简称 TDD ,是一种不同于传统 软件开发流程 的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。

测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。