软件测试笔试题3
判断题
( × )1.为了提高测试效率,应该取一切可能的输入数据作为测试数据。
(× )2. 发现错误多的程序模块,残留在模块中的错误也多。
( √ )4.等价类划分方法将所有可能的输入数据划分成若干部分,然后从每一部分中
选取少数有代表性的数据作为测试用例。
( × )5.系统测试的目标是要找出软件在与系统其他部分协调工作时出现的所有故
障
1. 软件测试的目的是尽可能多的找出软件的缺陷。(Y)
2. Beta 测试是验收测试的一种。(Y)
3. 验收测试是由最终用户来实施的。(N)
4. 项目立项前测试人员不需要提交任何工件。(Y)
5. 5.单元测试能发现约80%的软件缺陷。(Y)
6.代码评审是检查源代码是否达到模块设计的要求。(N)
7.自底向上集成需要测试员编写驱动程序。(Y)
8.负载测试是验证要检验的系统的能力最高能达到什么程度。(N)
9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N)
10.代码评审员一般由测试员担任。(N)
11.我们可以人为的使得软件不存在配置问题。(N)
12.集成测试计划在需求分析阶段末提交。(N)
选择
1.软件验收测试的合格通过准则是:(ABCD)
A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
B. 所有测试项没有残余一级、二级和三级错误。
C. 立项审批表、需求分析文档、设计文档和编码实现一致。
D. 验收测试工件齐全。
2.软件测试计划评审会需要哪些人员参加?(ABCD)
A.项目经理
B.SQA 负责人
C.配置负责人
D.测试组
3.下列关于alpha 测试的描述中正确的是:(AD)
A.alpha 测试需要用户代表参加
B.alpha 测试不需要用户代表参加
C.alpha 测试是系统测试的一种
D.alpha 测试是验收测试的一种
4.测试设计员的职责有:(BC)
A.制定测试计划
B.设计测试用例
C.设计测试过程、脚本
D.评估测试活动
5.软件实施活动的进入准则是:(ABC)
A.需求工件已经被基线化
B.详细设计工件已经被基线化
C.构架工件已经被基线化
D.项目阶段成果已经被基线化
选择
1.下面说法正确的是 ( C )。
A. 经过测试没有发现错误说明程序正确
B. 测试的目标是为了证明程序没有错误
C. 成功的测试是发现了迄今尚未发现的错误的测试
D. 成功的测试是没有发现错误的测试
2.不属于白盒测试的技术是 ( C ) 。
A. 语句覆盖 B. 判定覆盖
C. 边界值分析 D. 基本路径测试
3.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是 ( A
A. 系统功能 B. 局部数据结构
C. 重要的执行路径 D. 错误处理
4.软件测试过程中的集成测试主要是为了发现( B )阶段的错误。
A.需求分析 B.概要分析 C.详细设计 D.编码
5.软件测试不需要了解软件设计的 ( D )。
A.功能 B.内部结构 C.处理过程 D.条件
6.( C )方法根据输出对输入的依赖关系设计测试用例。
A.路径测试 B.等价类 C.因果图 D.边界值分析
7.通常,在( D )的基础上,将所有模块按照设计要求组装成系统
A.组装测试 B.系统测试 C.验收测试 D.单元测试
8.实际的逻辑覆盖测试中,一般以( C )为主设计测试用例。
A. 条件覆盖 B. 判定覆盖 C. 条件组合覆盖 D. 路径覆盖
9.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。
A.程序内部逻辑 B.程序的复杂度C.使用说明书 D.程序的功能
10.与设计测试用例无关的文档是 ( A )。
A.项目开发计划 B.需求规格说明书 C.设计说明书 D.源程序
11、软件测试技术可以分为静态测试和动态测试,下列说法中错误的是( D )
A. 静态测试是指不运行实际程序,通过检查和阅读等手段来发现程序中的错误。
B. 动态测试是指实际运行程序,通过运行的结果来发现程序中的错误。
C. 动态测试包括黑盒测试和白盒测试。 )。
D. 白盒测试是静态测试,黑盒测试是动态测试。
12、在软件测试阶段,测试步骤按次序可以划分为以下几步:( A )
A. 单元测试、集成测试、系统测试、验收测试
B. 验收测试、单元测试、系统测试、集成测试
C. 单元测试、集成测试、验收测试、系统测试
D. 系统测试、单元测试、集成测试、验收测试
13、系统测试中主要用到的测试技术是(B )
A. 回归测试 B. 黑盒测试 C. 白盒测试 D. 功能测试
14、对软件的性能测试、(B )测试、攻击测试都属于黑盒测试。
A. 语句 B. 功能 C. 单元 D. 路径
15、在用白盒测试中的逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、
判定-条件覆盖、条件组合覆盖和路径覆盖等,在下列覆盖中,(D )是最强的覆盖准则。
A. 语句覆盖 B. 条件覆盖 C. 判定-条件覆盖 D. 路径覆盖
16、验收测试主要是由(A )来完成的。
A. 用户 B. 测试人员 C. 开发人员 D. 高级经理
17、在用白盒测试中的逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、
判定-条件覆盖、条件组合覆盖和路径覆盖等,其中(A )是最弱的覆盖准则。
A. 语句覆盖 B. 条件覆盖 C. 判定-条件覆盖 D. 路径覆盖
18、下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。
int GetMax(int n, int datalist[ ])
{
int k=0;
for ( int j=1; j
if ( datalist[j] > datalist[k] ) k=j;
return k;
}
请问该程序段的McCabe环路复杂性为多少?( A )
A. 2 B. 3 C. 4 D. 5
填空
1.软件测试是为了尽可能多地发现软件中存在的 _错误_,将 _测试结果_作为纠错的依
据。
2.白盒测试中,控制流测试是面向程序的 _结构___,数据流测试是面向程序的 变量___。
3. 集成测试中的两种集成模式是_非增量测试模式__和___增量测试模式___。
4. 单元测试的依据是__详细设计说明书_和__源程序____。
5.测试用例由_输入数据_和预期的_输出数据_两部分组成。
填空
1.软件验收测试包括:正式验收测试,alpha测试,beta测试。
2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测
试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容
量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15
就满分哦)
3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。
4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。
5.(这题出的有问题哦,详细的5步骤为~~)通过画因果图来写测试用例的步骤为:
(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结
果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什
么关系? 根据这些关系,画出因果图。
(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。
为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。
(4)把因果图转换成判定表。
(5)把判定表的每一列拿出来作为依据,设计测试用例。
简答题
1.软件测试分哪两种方法?分别适合什么情况?
软件测试方法一般分为两种:白盒测试与黑盒测试。白盒测试又称为结构测试、逻辑驱动
测试或基于程序本身的测试,它着重于程序的内部结构及算法,通常不关心功能与性能指标;
黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,它实际上是站在最终用
户的立场,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需
求的规定。
2.一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。
计划阶段、设计阶段、白盒单元、白盒集成、黑盒单元、黑盒集成、系统测试、回归测
试、验收测试。一套完整的测试应该由五个阶段组成:
1)。测试计划 首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定
义相应的测试需求报告,即制订黑盒测试的最高标准。以后所有的测试工作都将围绕着测试
需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选
择测试内容,合理安排测试人员、测试时间及测试资源等。
2)测试设计 将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,
并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响测试结果的有效
性)。
3)测试开发 建立可重复使用的自动测试过程。
4)测试执行 执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理,
测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试、验收测试等步骤组
成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。
5)测试评估 结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队
的工作进度及工作效率进行综合评价。
3.软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。
BVT (Build Verification Test),主要目的是验证最新生成的软件版本在功能上是否完整,
主要的软件特性是否正确
Scenario Tests(基于用户实际应用场景的测试),Scenario Tests优点是关注了用户的需
求,缺点是有时候难以真正模仿用户真实的使用情况。
Smoke Test,修复Bug后,针对此次修复是否会对其他模块造成影响而进行的专门测试。
Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低此外,还有 Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方
软件能正常运行,用户不受影响。
Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使
用,但优先级比较低。
其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test
(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test
(安装升级测试),文档测试等、
4.区别阶段评审的与同行评审
同行评审目的:发现小规模工作产品的错误,只要是找错误;阶段评审目的:评审模块阶段作品
的正确性、可行性、及完整性;同行评审人数:3-7人,人员必须经过同行评审会议的培训,
由SQA指导阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格同行评审内容:
内容小 一般文档
一小部分工作产品完成阶段评审时间: 通常是设置在关键路径的时间点上!
5.什么是软件测试
为了发现程序中的错误而执行程序的过程
6.简述集成测试的过程
系统集成测试主要包括以下过程:
1. 构建的确认过程。
2. 补丁的确认过程。
3. 系统集成测试测试组提交过程。
4. 测试用例设计过程。
5. 测试代码编写过程。
6. Bug的报告过程。
7. 每周/每两周的构建过程。
8. 点对点的测试过程。
9. 组内培训过程。
7.怎么做好文档测试
仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。检查文档的编写是否满足文档编
写的目的,内容是否齐全,正确。内容是否完善,标记是否正确
8.白盒测试有几种方法
总体上分为静态方法和动态方法两大类。
静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义
动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
9.系统测试计划是否需要同行审批,为什么
需要,系统测试计划属于项目阶段性关键文档,因此需要评审。
10.Alpha测试与beta的区别
Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。
Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。
11.比较负载测试,容量测试和强度测试的区别
负载测试:在一定的工作负荷下,系统的负荷及响应时间。
强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
12.测试结束的标准是什么?
用例全部测试。
覆盖率达到标准。
缺陷率达到标准。
其他指标达到质量标准
13.描述软件测试活动的生命周期?
测试周期分为计划、设计、实现、执行、总结。
其中:
计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;
设计:完成测试方案,从技术层面上对测试进行规划;
实现:进行测试用例和测试规程设计;
执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。
总结:记录测试结果,进行测试分析,完成测试报告。
14.软件的缺陷等级应如何划分?
A类—严重错误,包括以下各种错误: 1.由于程序所引起的死机,非法退出 2. 死循环
3. 数据库发生死锁 4. 因错误操作导致的程序中断 5. 功能错误 6.与数据库连接错误
7. 数据通讯错误
B类—较严重错误,包括以下各种错误: 1. 程序错误 2. 程序接口错误 3. 数据库的表、业务规则、缺省值未加完整性等约束条件
C类—一般性错误,包括以下各种错误: 1. 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2. 打印内容、格式错误 3. 简单的输入限制未放在前台进行控制 4.删除操作未给出提示 5. 数据库表中有过多的空字段
D类—较小错误,包括以下各种错误: 1.界面不规范 2. 辅助说明描述不清楚 3. 输入输出不规范 4. 长操作未给用户提示 5. 提示窗口文字未采用行业术语 6.可输入区域和只读区域没有明显的区分标志
15.进程和程序的区别:
(1)进程就是一个活跃着的程序,即:已经被放入了系统调度队列当中了,占有了一定的系统资源的程序.程序在没有被调用之前只能叫程序,被调用并得到了资源后就可以称其为进程了,进程可以由许多线程组成,线程与进程的主要区别在于同一进程里的线程之间可以共享一些临界资源,而进程之间则不可以,每个进程是孤立的,其实,无论是进程还是线程都是一段受命并在内存中得到执行的代码.
(2)进程的定义是:一个程序关于某个数据集的一次运行活动。 进程是操作系统中可以并行工作的基本单位,也是核心调度及资源分配的最小单位。
进程是程序关于数据的一次运行,因而它包含一个或多个程序及数据。除此之外,进程描述还包含一些进程的有关情况和属性信息,例如执行情况、资源使用情况。为了便于操作系统对进程进行控制和管理,通常操作系统用一个称为进程控制块PCB的数据结构来记录进程的属性信息。所以进程由程序、数据和进程控制块组成。PCB是进程存在的唯一标志。也就是说系统在建立进程的同时就建立该进程的PCB,在撤销一个进程时也就撤销其PCB。 进程与程序的区别表现为以下几方面。
(1)程序是静态的,进程是动态的。
因为程序是一组指令的有序集合而进程是一次运行活动。而且进程在它的生命周期中要经历3种基本状态:等待、就绪、运行。这是程序所没有的。
(2)程序的存在是永久的,进程的存在是暂时的。
进程是一次运行活动,必然有始有终,所以它的存在是暂时的。
(3)进程由程序、数据和进程控制块组成。
由于进程是程序的执行,所以进程中必然包括程序和数据及记录进程状态信息的进程控制块。
(4)一个程序可以对应多个进程。
例如:多个Fortran源程序可能同时用编译程序进行编译,即一个编译程序对应多个Frotran源进程。
(5)一个进程可以包括多个程序。
因为主程序执行过程中可以调用多个其他程序,共同组成“一次运行活动”。
16.进程与线程的异同
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行
说法二:进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:
简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立
执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
说法三:多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。用过UNIX操作系统的读者知道进程,在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配,但进程和线程有什么区别呢? 进程和线程都是由操作系统所所有的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:线程的划分尺度小于进程,使得多线程程序的并发性搞。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
进程(Process)是最初定义在Unix等多用户、多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念。以Unix操作系统为例,进程是Unix操作系统环境中的基本成分、是系统资源分配的基本单位。Unix操作系统中完成的几乎所有用户管理和资源分配等工作都是通过操作系统对应用程序进程的控制来实现的。
简答
1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网? 软件测试是软件开发中不可缺少的重要一环,原因是:测试的工作量约占整个项目开发工作量的53%~87%左右,如果是关系到人的生命安全的软件,测试的工作量还要更大。 软件测试是对软件需求分析、设计规格说明、编码的最终复审,是软件质量保证的关键步骤。
但软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。
2. 请描述静态测试和动态测试的区别。
是否运行程序。静态测试是不运行被测试程序,对代码通过检查、阅读进行分析。动态测试是真正运行被测程序,在执行过程中,通过输入有效的测试用例对其输入与输出的对应关系进行分析。
3. 单个组件经过代码审查和测试,其有效性已经得到了全面验证,请解释为什么仍然需要进行集成测试。
单个组件正常工作并不意味着所有组件集成在一起可以正常工作,因为组件相互连接时接口会引起许多新问题,集成测试正是将通过单元测试的各个组件组装在一起进行综合测试,以便发现与接口有关的各种错误。