软件测试的N个例题

来源:互联网 发布:辽宁省房产税算法 编辑:程序博客网 时间:2024/06/14 15:39

Hello,本博客主要是软件测试选择题和概念。
一、例题:
1、自底向上集成需要测试员编写驱动程序。 正确

自底向上集成是从最低层的模块开始集成,因测试到较高层模块时,所需求的下层模块功能均已具备,所以不再需要桩模块,测试用例的设计也相对简单,缺点是程序最后一个查勘块加入时才具有整体形象.

自底向上集成测试的步骤为:
{
  1.把低层模块组织成实现某个子功能的模块群;
   2.开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;
   3.对每个模块群进行测试;
   4.删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群.
}

2、软件测试的对象包括:程序(源程序、目标程序),数据,文档

3、测试人员对待软件缺陷态度
缺陷分两种:
*1、完全影响软件的正常运行或者影响客户的正常体验。 这种当然不能予以通过
*2、不影响产品运行及客户正常体验且此软件急于使用。 以公司利益为出发,应予以通过。但在时间不紧急的情况下应不予通过。
一个好的测试人员应该有很好的情况分析能力,要有担当

4、测试完整性&测试效率
(1)缺陷放大理论,在单元测试阶段发现的bug会在系统测试阶段被放大80%。

(2)如果我们可以通过覆盖率检测来判断我们是否对所有的路径进行了测试,但是仍然可能存在未被检测出来的缺陷:
because 程序可能因为缺某些路径而存在问题;
穷举路径的测试可能不好暴露数据敏感的错误;
就算穷举路径测试也不能保证程序符合要求。

5、软件测试一般分α、β、λ三个阶段,α是第一阶段,一般只供内部测试使用;β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

6、软件测试方法中(人工检测)属于静态测试方法。
静态测试包括:代码检查、静态结构分析、代码质量度等。 可以由人工进行,充分发挥人的逻辑思维优势,也可借助软件工具自动进行。
人工测试技术主要包含3种静态测试技术,分别是走查、审查和正式评审。

软件的静态测试不要求在计算机上实际执行所测程序,主要以人工的模拟技术对软件进行分析和测试;
软件的动态测试通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。

7 软件测试的过程分为: 单元测试  集成测试  确认测试   系统测试
* 单元测试的测试用例主要根据:详细设计的结果来设计(单元测试是最小的测试模块,故会涉及详细的文档)

8 接口测试属于集成测试阶段
集成测试与系统测试会使用到黑盒测试;
黑盒测试在设计测试用例时,主要研究:需求规格说明和概要说明

9 边界值分析法
(1)既可以用于黑盒测试,也可以用于白盒测试的方法:边界值法
边界值法再黑盒测试中,我们可以不涉及代码来取边界值;但是也可以在设计代码时,比如在条件覆盖等白盒测试方法中取到边界值,因为往往边界值的位置容易出错。  所以边界值法对于黑盒测试和白盒测试都可使用。
(2)用边界值分析法,假定X(X>1&&X<10),那么X在测试中应取的边界值是:
X=1,X=2,X=9,X=10

10 (1)测试设计员的职责有 BC
A 制定测试计划
B 设计测试用例
C 设计测试过程、脚本
D 评估测试活动
测试设计人员主要负责设计测试用例以及设计测试过程、脚本
制定测试计划是测试经理来做的;
评估测试活动测试经理召集开发和测试相关人员来做。

(2)下面叙述错误的是  A
A 软件测试目的是发现并改正错误
B 对被调试的程序进行“错误定位”是程序调试的必要步骤
C 程序调试通常也称为debug
D 软件测试应严格执行测试计划,排除测试的随意性

软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误。
程序调试的基本步骤:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。
程序调试通常称为debug,排错。
软件测试基本准则:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试机换等文件。

11 测试驱动开发
(1)关于测试驱动开发,描述错误的是:C
A 测试驱动考法式是一种敏捷开发方法
B TDD需求开发人员学习测试相关知识
C 测试驱动开发不适合使用CMM/CMMI方法
D 测试驱动开发可以和结对编程结合使用

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

CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。此外还是化妆品的名字。CMMI(Capability Maturity Model Integration,能力成熟度模型集成)将各种能力成熟度模型(即:Software CMM、Systems Eng-CMM、People CMM和Acquisition CMM)整合到同一架构中去,由此建立起包括软件工程、系统工程和软件采购等在内的诸模型的集成,以解决除软件开发以外的软件系统工程和软件采购工作中的迫切需求。
这两种方法属于测试驱动开发的方式。

(2)有关测试驱动开发,下列正确的是 ABCD
A TDD原理时在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写产品代码
B TDD的基本思路是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程
C TDD 的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中的一部分,而是在开发过程中帮助客户和程序员取出模棱两可的需求
D TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。

12 测试用例是测试程序正确性与否的关键。
一个覆盖完全的测试用例可以测试出程序是否正确运行,是否有bug等。

13 在以下测试阶段中,哪些涉及到路径测试?AB
A 单元测试
B 集成测试
C 系统测试
D 验收测试
在单元测试和集成测试中用到了白盒测试的方法。白盒测试方法主要有接口测试,路径测试。

14 代码评审员一般由开发人员担任。
代码评审的内容:
{
* 编码规范问题:命名不规范、magic number、 System.out……
* 代码结构问题:重复代码、巨大的方法和类、分层不当、紧耦合
* 工具、框架使用不当:Spring、Hibernate、AJAX
* 实现问题:错误验证、异常处理、事务划分、线程、性能、安全、实现过于复杂、代码可读性不佳、扩展性不好
* 测试问题:测试覆盖度不够、可测试性不好
* 代码评审不负责检查功能、逻辑是否正确,这些要靠单元测试和QA工作来解决
}

15 软件测试步骤:
(1)
需求分析–>概要设计–>详细设计–>编码–>
单元测试–>集成测试–>系统测试–>验收测试
集成测试在概要设计阶段末提交。
这里写图片描述
①单元测试的主要目的是针对编码过程中可能存在的各种错误,例如用户输入验证过程中得边界值的错误。
②集成测试的主要目的是针对详细设计中可能存在的问题,尤其是检查各单元与其他程序部分之间的接口上可能存在的错误。
③系统测试主要针对概要设计,检查系统作为一个整体是否有效地运行,例如在产品设置中是否能达到预期的高性能。
④验收测试通常由业务专家或用户进行,以确认产品能真正符合用户业务上的需要。

在不同的开发阶段,会出现各种不同类型的缺陷和错误,所以需要不同的测试技术和方法来发现这些缺陷。

(2)下面不属于软件测试步骤的是:B 回归测试
A集成测试 B 回归测试 C 确认测试 D单元测试
软件测试步骤:单元测试 、集成测试、系统测试、验收测试
回归测试是指修改了旧代码后,重新运行测试以确认修改后没有引入新的错误或导致其他代码产生错误,不属于软件测试的步骤。

16 项目立项前测试人员不需要提交任何工件。
工件是加工生产中的生产对象。项目立项前,测试人员是不需要提交任何工件的。

17 软件测试计划评审会需要哪些人员参加:
项目经理 SQA负责人 配置负责人 测试组 (测试经理,测试组成员)
开发组长 系统分析员 客户(可选)

18 集成测试过程包括 ABCD
A 构建的确认过程
B 系统集成测试测试组提交过程
C 测试用例设计过程
D Bug 报告过程

系统集成测试主要包括以下过程:1. 构建的确认过程。 2. 补丁的确认过程。 3. 系统集成测试测试组提交过程。 4. 测试用例设计过程。 5. 测试代码编写过程。 6. Bug的报告过程。 7. 每周/每两周的构建过程。 8. 点对点的测试过程。 9. 组内培训过程。

19 软件验收测试有:
(1)正式验收测试
(2)非正式验收测试:
alpha测试 (由用户、测试人员、开发人员共同参与的内部测试)
beta测试 (内测后的公测,交给最终用户测试 公司外部展开的测试,可以由非专业的测试人员执行的测试)

20 测试方法
软件测试可以是人工测试:如个人复查,抽查和会审等
也可以是机器自动测试,又有不同的分类:
按照是否有关软件内部结构具体实现角度规划
A 白盒测试 B 黑盒测试 C 灰盒测试
按照软件发程按阶段划为:
A 单元测试 B集成测试 C 确认测试 D系统测试 E验收测试

21
(1) 在白盒测试技术中,判定逻辑覆盖条件比条件逻辑覆盖更弱。
白盒测试的六种测试方法中,覆盖准则由弱到强依次是:
语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
语句覆盖:使得程序中的每个语句至少被执行一次;
判定覆盖:使得程序中的每个分支至少通过一次;
条件覆盖:使得判定中的每个条件获得各种可能的结果;
判定/条件覆盖:使得判定中的每个条件取到各种可能的值,并使每个判定取到各种可能的结果;
条件组合覆盖:使得每个判定中条件的各种可能组合都至少出现一次。

(2)如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的:判定覆盖
判定覆盖每个判定真假一次,就会导致所有的结果路径都会实现。