(完整版)软件测试基础习题及答案
1、软件测试的定义?
软件测试是⼀个过程或者⼀系列过程,⽤来确认计算和代码完成了其应该完成的功能,并且不执⾏其不应该有的操作。
2、软件测试的⽬标是什么?
是想以最少的⼈⼒、物⼒和时间出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提⾼软件质量,降低软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
3、简单描述⼀下软件测试的原则?
所有的软件测试都应追溯到⽤户需求
应当把“尽早地和不断地进⾏软件测试”作为测试者的座右铭
Good Enough原则
质量第⼀
充分注意测试中的集现象
程序员应避免检查⾃⼰的程序
有据可依
尽量避免软件测试的随意性,要有预期结果
重视回归测试
妥善保存⼀切测试过程⽂档
4、软件测试中验证和确认的区别?
Verfication 验证:
是保证软件正确实现特定功能的⼀系列活动和过程。
⽬的是保证软件⽣命周期中的每⼀个阶段的成果满⾜上⼀个阶段设定的⽬标。
Validation 确认:
是保证软件满⾜⽤户需求的⼀系列的活动和过程。
⽬的是在软件开发后保证与⽤户需求符合
5、软件测试按照测试的基本策略可分为哪两种并加以详细说明?
⽩盒测试:
⽩盒测试也称结构测试或逻辑驱动测试,是指基于⼀个应⽤代码的内部逻辑知识,即基于覆盖全部代码、分⽀、路径、条件的测试,它是知道产品内部⼯作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进⾏,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确⼯作,⽽不顾它的功能,⽩盒测试的主要⽅法有逻辑驱动、基路测试等,主要⽤于软件验证。
⿊盒测试:
⿊盒测试是指不基于内部设计和代码的任何知识,⽽基于需求和功能性的测试,⿊盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使⽤,在测试时,把程序看作⼀个不能打开的⿊盆⼦,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接⼝进⾏测试,它只检查程序功能是否按照需求规格说明书的规定正常使⽤,程序是否能适当地接收输⼊数锯⽽产⽣正确的输出信息,并且保持外部信息(如数据库或⽂件)的完整性。⿊盒测试⽅法主
要有等价类划分、边值分析、因—果图、错误推测等,主要⽤于软件确认测试。
6、整个软件⽣命周期中,需要进⾏哪⼏项测试?
单元测试、集成测试、系统测试、验收测试
单元测试
单元测试是对软件中的基本组成单位进⾏的测试,如⼀个模块、⼀个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之⼀,其⽬的是检验软件基本组成单位的正确性。因为单元测试需要知道内部程序设计和编码的细节知识,⼀般应由程序员⽽⾮测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。因此应⽤系统有⼀个设计很好的体系结构就显得尤为重要。
⼀个软件单元的正确性是相对于该单元的规约⽽⾔的。因此,单元测试以被测试单位的规约为基准。单元测试的主要⽅法有控制流测试、数据流测试、排错测试、分域测试等等。
集成测试
集成测试是在软件系统集成过程中所进⾏的测试,其主要⽬的是检查软件单位之间的接⼝是否正确。它根据集成测试计划,⼀边将模块或其他软件单位组合成越来越⼤的系统,⼀边运⾏该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有⾃顶向下和⾃底向上两种。
系统测试
系统测试是对已经集成好的软件系统进⾏彻底的测试,以验证软件系统的正确性和性能等满⾜其规约所指定的要求,检查软件的⾏为和输出是否正确并⾮⼀项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进⾏,其输⼊、输出和其他动态运⾏⾏为应该与软件规约进⾏对⽐。软件系统测试⽅法很多,主要有功能测试、性能测试、随机测试等等。
验收测试
验收测试旨在向软件的购买者展⽰该软件系统满⾜其⽤户的需求。它的测试数据通常是系统测试的测试数据的⼦集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚⾄是在软件安装使⽤的现场。这是软件在投⼊使⽤之前的最后测试。
简述集成测试和系统测试的区别?
1、集成测试的主要依据是概要设计说明书,系统测试的主要依据是需求设计说明
2、集成测试是系统模块的测试,系统测试是对整个系统的测试,包括相关的软硬
件平台,⽹络及相关的外设的测试
7、系统测试的策略有哪些?
功能测试,性能测试,可靠性测试,负载测试,易⽤性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,⽂挡测试,容错性测试,界⾯测试,容量测试,兼容性测试,分布测试,可⽤性测试等。
8、⽂档测试主要包括哪些内容?
联机帮助⽂档或⽤户⼿册
指导和向导
安装、设置指南
⽰例及模板
错误提⽰信息
⽤于演⽰的图像和声⾳
授权/注册登记表及⽤户许可协议
软件的包装、⼴告宣传材料
9、停⽌测试的条件?
符合⽤户的需求
在⼀段时间内测试不出新缺陷
注:在企业实际开发过程中,版本发布时会有遗留问题
10、测试的基本⽂档包括哪些?
测试计划》:指明测试范围、⽅法、资源,以及相应测试活动的时间进度安排表的⽂档。
《测试⽅案》:指明为完成软件或软件集成特性的测试⽽进⾏的设计测试⽅法的细节⽂档。
《测试⽤例》:指明为完成⼀个测试项的测试输⼊,预期结果,测试执⾏条件等因素的⽂档。
《测试规程》:指明执⾏测试时测试活动序列的⽂档。
《测试报告》:指明执⾏测试结果的⽂档。
11、简要的说明⼀下软件⼯程中的V模型?
12、为什么要开展测试⼯作?
因为没有经过测试的软件很难在发布之前知道该软件的质量,就好⽐ISO质量认证⼀样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的⼯作。在测试的过程发现软件中存在的问题,及时让开发⼈员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况
13、测试团队在项⽬中的基本责任是什么?
1、发现软件程序、系统或产品中所有的问题
2、尽早地发现问题
3、督促和协助开发⼈员尽快地解决程序中的缺陷。
4、帮助项⽬管理⼈员制定合理的开发计划
5、对缺陷进⾏跟踪、分析和分类总结,以便让项⽬的管理⼈员和相关的负责⼈能够及时、清楚地了解产品当前的质量状态。
6、帮助改善开发流程、提⾼产品的开发效率
7、促进程序编写的规范性、易读性、可维护性等。
14、软件缺陷的定义是什么?
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、⽑病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。因此软件缺陷就是软件产
品中所存在的问题,最终表现为⽤户所需要的功能没有完全实现,没有满⾜⽤户的需求。
15、软件错误的分类有哪些?
软件需求错误
功能和性能错误
软件结构错误
数据错误
实现和编码错误
软件集成错误
操作系统调⽤错误
测试定义和测试执⾏错误
16、⼀个优秀的测试⼯程师需要具备的素质有哪些?
⽬标:发现软件缺陷,并尽可能早些。
探索精神,软件测试员不害怕进⼊陌⽣环境。
障碍排除⾼⼿,善于发现问题的症结。
追求完美,他们⼒求完美,但是知道⽆法企及时,不去强求。
不懈努⼒,不停尝试,他们不会⼼存侥幸,⽽是尽⼀切可能去寻。
判断准确,要觉得测试内容,测试时间以及看到的内容是否是真正的软件缺陷。
⽼练稳重,不害怕坏消息,知道怎样和不够⽼练的程序员合作。
具有说服⼒,善于表达观点。
17、软件质量的定义是什么?
软件质量是软件产品特性的总和,满⾜明确或隐含要求的能⼒。
18、质量有哪6个特性?
1)功能性(functionality):
制作的功能,达到设计规范和满⾜使⽤者需求的程度。
2)可靠性(reliability):
在规定期限和条件下,仍能维持其性能⽔平的程度。
3)易使⽤性(usability):
使⽤者学习、操作、准备输⼊、理解输出所作努⼒的程度。
4)效率(efficiency):
软件执⾏某项功能所需的计算机资源(含时间)的有效程度。
5)可维护性(maintainability):
当环境改变或软件发⽣错误时,执⾏修改所做努⼒的程度。
6)可移植性(portability):
从⼀个电脑系统或环境移到另⼀个电脑或环境的难易程度。
19、CMMI的中⽂名称是什么,共分为⼏级?
软件能⼒成熟度模型集成,共分为5级
20、缺陷报告的定义是什么?
缺陷报告是⽤来解释预期结果和实际结果之间差距的⽂档,包含怎么样再现缺陷的场景21、缺陷的来源有哪些?
需求问题
设计缺陷:
功能问题
系统和软件架构问题
实现缺陷
代码问题
相容性问题
测试问题
22、缺陷主要有哪些状态?
New:测试⼈员提交新bug的状态标识
Open:测试经理审核测试⼈员提交的bug,审核通过后将该bug状态改为open并提交给开发经理。开发经理对bug进⾏审核并分配给对应的开发⼈员。
Fixed:开发⼈员已修改bug并⾃测通过的标识,由开发⼈员修改为此状态
Closed:测试验证bug并通过的标识,由测试⼈员修改为此状态
Rejected:开发⼈员认为不是Bug、描述不清、重复、不采纳所提意见建议或者测试⼈员提错,从⽽拒绝的问题。由Bug分配⼈或者开发⼈员来设置。
Later:确认是bug,但此bug⽬前暂时⽆法解决且对产品影响不⼤,或⽆法重现的问题等,通过会议评审可以暂缓或放⼊下个版本再解决
Reopen:测试⼈员验证bug未通过,修改为此状态
23、软件缺陷报告有哪些属性?
软件缺陷的属性:
缺陷标识:缺陷的唯⼀标识,⽤于识别、跟踪、查下、排序、存储管理等,可以使⽤数字序号表⽰
标题:对缺陷的概括性描述,⽅便列表、浏览、管理等。
详细描述:包括前提、操作步骤、预期结果、实际结果等
环境:缺陷发现时所处的测试环境,包括操作系统、浏览器等
所属项⽬/模块:缺陷所属哪个具体的项⽬或模块,要求精确定位⾄模块、组件级
产品信息:属于哪个版本等
状态:缺陷⼀旦被发现之后,其被跟踪过程中所处的状态
严重程度:因缺陷引起的故障对软件产品使⽤或某个质量特性的影响程度
软件测试的方法有哪些
优先级:缺陷被修复的紧急程度或先后次序,主要取决于缺陷的严重程度、产品对业务的实际影响,需要考虑开发过程的需求(对测试进展的影响)、技术限制等因素
类型:属于哪⽅⾯的缺陷,如:功能、⽤户界⾯、性能、接⼝等
可能性:缺陷产⽣的频率
缺陷提交⼈:会和邮件地址联系起来
缺陷指定解决⼈:
来源:缺陷产⽣的地⽅,如:产品需求定义书、设计规格说明书、代码的具体组件或模块,数据库,在线帮助,⽤户⼿册等
产⽣原因:产⽣缺陷的根本原因,包括过程、⽅法、⼯具、算法错误、沟通问题等,以寻求流程改进、完善编程规范和加强培训等,有助于缺陷预防。
构建包跟踪:⽤户每⽇构建软件包跟踪,是新发现的缺陷还是回归缺陷,基准是上⼀个软件包