最新软件测试工程师20套笔试题及参考答案测试基础.docx
《最新软件测试工程师20套笔试题及参考答案测试基础.docx》由会员分享,可在线阅读,更多相关《最新软件测试工程师20套笔试题及参考答案测试基础.docx(24页珍藏版)》请在冰豆网上搜索。
最新软件测试工程师20套笔试题及参考答案测试基础
1.试述软件的概念和特点?
软件复用的含义?
构件包括哪些?
2.瀑布模型和螺旋模型的主要区别是什么?
3.软件生存周期及其模型是什么?
4.什么是软件测试?
软件测试的目的与原则
5.净室软件工程的策略是什么?
6.软件配置管理的作用?
软件配置包括什么?
7.什么是软件质量?
软件包是什么?
8.目前主要的测试用例设计方法是什么?
9.软件的安全性应从哪几个方面去测试?
参考答案:
1.答案如下:
1.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、文档的完整集合。
2.软件复用(SoftwareReuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
软件复用是提高软件生产力和质量的一种重要技术。
早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
3.可以被复用的软件成分一般称作可复用构件
2.答案如下:
1.参照TP书上第六章45/46页的讲解,参考一下书上的说法进行对比即可。
考虑弹性、风险、成本,等几个方面。
3.答案如下:
1.软件生存周期是软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。
2.在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。
这样的一个过程,称为“生命周期模型“(LifeCycleModel)。
4.答案如下:
1.使用人工或自动手段,来运行或测试某个系统的过程。
其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
2.软件测试的目的:
1.测试是程序的执行过程,目的在于发现错误
2.一个成功的测试用例在于发现至今未发现的错误
3.一个成功的测试是发现了至今未发现的错误的测试
4.确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。
5.确保产品满足性能和效率的要求
6.确保产品是健壮的和适应用户环境的
3.软件测试的原则:
教材的说法:
1.软件测试应尽早执行,并贯穿于整个软件生命周期
2.软件测试应追溯需求
3.测试应由第三方来构造
4.穷举测试是不可能的,要遵循Good-enough原则
5.必须确定预期输出(或结果)
6.必须彻底检查每个测试结果
7.充分注意测试中的群集现象
8.缺陷的二八定理
9.严格执行测试计划,排除测试的随意性
10.注意合法合理的输入,也要注意非法的非预期的输入
11.检查程序是否是否做了不该做的
12.测试应从”小规模”开始,逐步转向”大规模”
13.反复使用同样的测试会使软件具有抵抗力
14.关注缺陷的修复
另一种说法:
15.应当把”尽早和不断地测试”作为开发者的座右铭。
16.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
17.设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
18.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
19.对测试错误结果一定要有一个确认的过程。
一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
20.制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
21.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
22.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
5.答案如下:
1.增量计划。
开发一个采用增量策略的项目计划,建立每个增量的功能、它的项目大小、以及净室开发进度表。
必须特别小心以保证通过认证的增量将被定时集成。
2.需求收集。
使用类似于在第11章引入的技术,为每个增量开发一个客户级需求的更详细的描述。
3.盒结构规约。
使用一个运用盒结构的规约方法[HEV93]来描述功能规约。
遵从操作分析原则,盒结构”在每一个精化级别上分离和分开行为、数据及过程的创造性定义”。
4.形式化设计。
使用盒结构方法,净室设计是规约的自然的无缝的扩展。
虽然,在两个活动间可进行清楚的区分,但是,规约(称为”黑盒”)是被递进地求精(在一个增量内)以成为类似于体系结构的和过程的设计(分别称为”状态盒”和”清晰盒”)。
5.正确性验证。
净室小组对设计及代码进行一系列严格的正确性验证活动。
验证从最高层次的盒结构(规约)开始,然后移向设计细节和代码。
正确性验证的第一层次通过应用一组”正确性问题”[LIN88]来进行,如果这没有证明规约是正确的,则使用更形式化的(数过学的)验证方法。
6.代码生成、检查和验证。
以某种专门语言表示的盒结构规约被转换为合适的程序设计语言。
然后,使用标准的走查或检查技术(第8章)来保证代码和盒结构的语义相符性,以及代码的语法正确性。
然后,对源代码进行正确性验证。
7.统计性测试计划。
分析软件的项目级使用情况,计划和设计一组执行用途的”概率分布”的测试用例(25.4节)。
如图25-1所示,这个净室活动是和规约、验证及代码生成并行进行的。
8.统计性使用测试。
记住,对计算机软件进行彻底测试是不可能的,因此,总需要设计有限数量的测试用例。
统计性使用技术[POO88]执行一系列由特定对象的所有用户的所有可能的程序执行的统计样本(上面提到的概率分布)所导出的测试。
认证。
一旦完成验证、检查和使用测试(并且所有错误被修正),则开始进行增量集成前的认证工作。
6.答案如下:
1.软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,贯穿整个软件生命周期,同时对软件开发过程的宏观管理即项目管理也有重要的支持作用。
一个软件开发组织真正有效的实施软件配置管理,将会使软件开发过程有更好的可预测性,使系统具有可重复性,大大提高软件组织的竞争力。
2.软件配置包括如下内容:
1.配置项识别
2.工作空间管理
3.版本控制
4.变更控制
5.状态报告
6.配置审计
7.答案如下:
1.简单的说:
软件质量:
软件产品的特性可以满足用户的功能、性能需求的能力。
比较长的说法:
现代质量管理认为,质量是客户要求或者期望的有关产品或者服务的一组特性,落实到软件上,这些特性可以是软件的功能、性能和安全性等等。
这些特性决定了软件产品保证客户满意的能力,并且,这些特性应该是可以度量的。
我们还可以从另一个角度,即软件产品是如何生产出来的,来间接的推断软件质量。
我们称之为软件的流程质量,以有别于前面所说的软件产品质量。
所谓流程,我们可以将其理解为一个活动序列和与此相关的输入、输出、约束条件、实现方法、辅助工具等等因素共同组成的系统。
ISO9001和SW-CMM都主要是从流程角度来探讨软件质量和质量改进的。
当然,我们还能从其它角度,比如软件的生产者-人的素质,来诠释软件质量,但不管怎样,软件的产品质量是最终的检验标准,而最终的检验者就是客户。
从这个意义上说,软件质量就是客户满意度。
2.软件包(SoftwarePackage)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。
可分为应用软件包和系统软件包两大类。
应用软件包与特定的应用领域有关,又可分为通用包及专用包两类。
通用软件包根据社会的一些共同需求开发,专用软件包则是生产者根据用户的具体需求定制的,可以为适合其特殊需要进行修改或变更。
8.答案如下:
1.白盒测试:
1.逻辑覆盖
2.循环覆盖
3.基本路径覆盖
2.黑盒测试:
1.边界值分析法
2.等价类划分
3.错误猜测法
4.因果图法
5.状态图法
6.测试大纲法
7.随机测试
8.场景法
9.答案如下:
软件安全性测试包括程序、数据库安全性测试。
根据系统安全指标不同测试策略也不同。
1.用户认证安全的测试要考虑问题:
1.明确区分系统中不同用户权限
2.系统中会不会出现用户冲突
3.系统会不会因用户的权限的改变造成混乱
4.用户登陆密码是否是可见、可复制
5.是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
6.用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
2.系统网络安全的测试要考虑问题
1.测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
2.模拟非授权攻击,看防护系统是否坚固
3.采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是NBSI系列和IPhackerIP)
4.采用各种木马检查工具检查系统木马情况
5.采用各种防外挂工具检查系统各组程序的外挂漏洞
3.数据库安全考虑问题:
1.系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
2.系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
3.系统数据可管理性
4.系统数据的独立性
5.系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
1.什么是测试用例什么是测试脚本两者的关系是什么?
2.简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试
β测试
3.软件质量保证体系是什么国家标准中与质量保证管理相关的几个标准是什么?
他们的编号和全称是什么?
4.软件产品质量特性是什么?
5.软件测试的原则与策略是什么?
6.结构化系统测试和功能性系统测试分别采用了哪些方法和技术?
7.软件测试分为几个阶段各阶段的测试策略和要求是什么?
8.面向对象的测试用例设计有几种方法?
如何实现?
9.在软件测试各个阶段通常完成什么工作?
各个阶段的结果文件是什么?
包括什么内容?
参考答案:
1.答案如下:
1.为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
2.测试脚本是为了进行自动化测试而编写的脚本。
3.测试脚本的编写必须对应相应的测试用例,
2.答案如下:
1.静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。
2.动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
3.黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
4.白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。
5.α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
6.β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
3.答案如下:
1.来自Wikipedia对SQA的定义,软件质量保证(SQA):
SoftwareQualityAssurance(SQA)consistsofthesoftwareengineeringprocessesandmethodsusedtoensurequality.SQAencompassestheentiresoftwaredevelopmentprocess,whichmayincludeprocessessuchasreviewingrequirementsdocuments,sourcecodecontrol,codereviews,changemanagement,configurationmanagement,releasemanagementandofcourse,softwaretesting.
SQA由一套软件工程过程和方法组成,以保证(软件的)质量。
SQA贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。
1.国家标准:
1.GB/T8567-2006计算机软件文档编制规范
2.GB/T11457-2006信息技术软件工程术语
3.GB/T16260.1-2006软件工程产品质量第1部分:
质量模型
4.GB/T16260.2-2006软件工程产品质量第2部分:
外部度量
5.GB/T16260.3-2006软件工程产品质量第3部分:
内部度量
6.GB/T16260.4-2006软件工程产品质量第4部分:
使用质量的度量
7.GB/Z20156-2006软件工程软件生成周期过程用于项目管理的指南
8.GB/T20157-2006信息技术软件维护
9.GB/T20158-2006信息技术软件生成周期过程配置管理
1.答案如下:
1.功能性:
适应性、准确性、互操作性、依从性、安全性。
2.可靠性:
成熟性、容错性、以恢复性。
3.可使用性:
易理解性、易学习性、易操作性。
4.效率:
时间特性、资源特性。
5.可维护性:
易分析性、易变更性、稳定性、易测试性。
6.可移植性:
适应性、易安装性、遵循性、易替换性。
2.答案如下:
1.软件测试的原则:
教材的说法:
1.软件测试应尽早执行,并贯穿于整个软件生命周期
2.软件测试应追溯需求
3.测试应由第三方来构造
4.穷举测试是不可能的,要遵循Good-enough原则
5.必须确定预期输出(或结果)
6.必须彻底检查每个测试结果
7.充分注意测试中的群集现象
8.缺陷的二八定理
9.严格执行测试计划,排除测试的随意性
10.注意合法合理的输入,也要注意非法的非预期的输入
11.检查程序是否是否做了不该做的
12.测试应从”小规模”开始,逐步转向”大规模”
13.反复使用同样的测试会使软件具有抵抗力
14.关注缺陷的修复
另一种说法:
1.应当把”尽早和不断地测试”作为开发者的座右铭。
2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
3.设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
5.对测试错误结果一定要有一个确认的过程。
一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
6.制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
1.软件测试策略:
在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
1.答案如下:
1.结构化系统测试技术:
用于验证所开发的系统及程序的运行情况。
目标是要确保产品设计在结构上合理,功能上正确。
为确定实现的配置及其各功能共同作用以完成特定任务提供了一种机制。
结构化测试技术由以下几种:
1.1)压力测试:
确定系统以期望的容量执行。
压力测试技术用于检查系统面对意外情况下的大数据量时是否可以正常运行。
所涉及的方面包括输入事务、内部表、磁盘空间、输出、通信、计算机容量以及人机交互等。
当应用系统所能正常处理的工作量并不确定时需要使用压力测试。
压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的。
弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常之大,通常在应用程序投入使用之前这种技术是无法进行的。
2.执行测试:
系统能达到期望的熟练性。
举例:
事务轮转时间充分;软硬件使用良好。
执行测试技术用于检查系统是否达到了预期在产品状态下的成熟度。
执行测试可以验证系统的响应时间、轮转时间及设计性能。
在开发过程的早期就应该进行执行测试,尽早制定已经完成的系统没有达到性能指标是非常有价值的。
在关键时间点进行。
关键时间点指的是当前的结果会影响甚至改变系统结构的时间点。
3.恢复测试:
系统失效之后可以恢复到可操作状态。
举例:
引入失败;评估备份数据的充分性。
恢复测试技术用于确保系统在经历灾难后可以继续正常运行,它不仅可以验证恢复过程,而且可以验证过程各组件的有效性。
当用户认为系统操作的连续性对于其所涉及领域的某些功能至关重要时,需要进行恢复测试。
4.操作测试:
系统以正常操作状态执行。
举例:
确定系统可以依据文档进行运行;JCL(工作控制语言)充分。
操作测试技术主要用于检查系统在正常的操作状态下是否可以执行。
操作测试可以与其它测试联合执行。
任何应用程序在成为产品之前都应进行操作测试。
5.(与过程的)一致性测试:
系统的开发与标准和规程相一致。
举例:
按标准执行;文档完整。
一致性测试技术用于验证应用程序的开发是否与信息技术指标、过程及准则相一致。
一致性测试最有效的方法是过程审查。
系统开发标准和过程的一致性程度依赖于管理层对于所需遵循的特定过程和执行标准的重视程度。
6.安全性测试:
根据组织的重要性对系统进行保护。
举例:
访问拒绝;规程适当。
安全性测试技术用于评价保护性程序及安全对策的充分性。
安全性缺陷不如其它类型的缺陷那么明显。
安全性测试是测试过程中高度专业化的部分。
分物理安全性(针对利用物理方法收集信息的手段)和逻辑安全性(针对使用计算机处理和通信能力进行非法活动信息的手段)。
当系统保护信息和资产对于组织来说意义重大时,需要进行安全性测试。
2.功能性系统测试用于确保系统需求与定义都得到了满足。
该过程通常包含创建用于评价应用程序正确性的测试条件。
用于执行功能测试的几种测试技术包括:
1.需求测试:
系统按制定方式执行。
举例:
证明系统需求;与政策、规则相一致。
需求测试技术验证系统是否正确执行其功能,并且能保证在相当长的一段时间内保持其正确性。
需求测试的执行主要通过执行创建的测试条件以及功能检查单来完成,通过需求得到测试条件,然后以类似于SDLC这种特定的方式表现,生成用于评价实现的应用系统的测试数据。
任何应用程序都应该对需求进行测试,此过程应该开始于需求阶段,并一直持续到系统运行和维护阶段。
2.回归测试:
验证系统中没有改变的部分仍能正确运行。
举例:
未变更的部分正常运行;未变更的人工规程正确。
回归测试技术对已经测试过的部分进行重新测试,以保证它们在应用程序其它部分发生变更之后仍能正常运行。
当变更会对应用程序中没有变更的部分产生高风险的影响时需要进行回归测试。
3.错误处理测试:
错误可以得到防止或检测,并被修复。
举例:
将错误引入测试;错误的再次注入。
人工系统与自动系统之间差别的特点之一就是预定义的错误处理特性。
错误处理测试技术用于检查应用系统正确处理发生异常的能力。
错误处理测试需要一组知识丰富的人员来预见应用系统可能发生的错误。
它是测试错误的引入、错误的处理,控制条件以及条件的再次正确输入。
在系统整个生命周期中都应该进行错误测试。
在开发过程中,应该识别错误带来的问题并且采取相应的措施将错误减少到可以接受的程度。
4.人工支持测试:
人机交互有效。
举例:
具备人工规程;人员接受过培训。
人工支持测试技术主要包括人员在准备数据以及使用来源于自动程序数据的过程中执行所有功能。
在生命周期的全过程都应该验证人工系统功能的正确性。
5.系统间测试:
数据可以正确地在系统间传递。
举例:
系统间参数变化;系统间文档更新。
系统间测试技术用于保证应用程序间相互管理的正确性。
系统间测试的一个最好的工具是集成测试工具,它允许在产品环境下进行测试,可以以最小的代价测试系统间的耦合性。
在应用系统间的参数发生变更时需要进行系统间的测试。
测试的程度和类型依赖于与出错的参数相关联的风险情况。
6.控制测试:
将系统风险控制降低到可以接受的级别。
举例:
文件一致性规程正常;人工控制正确。
控制测试技术包括数据确认、文件完整性控制、评审追踪、备份和恢复、文档,以及与系统完整性相关的其它方面。
主要用于确保对系统特定功能的检查。
可以用于控制测试的一个方法是生成风险矩阵。
控制测试是系统测试中的一个完整的部分,占测试时间的很大比例。
7.平行测试:
发现原系统与新系统之间的意外差异。
举例:
原系统与新系统一致;原系统仍然可以工作。
平行测试技术用于检查新应用程序的结果是否与原来的应用程序或者上一版本应用程序的处理相一致。
它执行冗余处理以保证新版本或者新应用程序执行的正确性;给出同一应用程序不同版本之间一致的和不一致的地方。
平行测试可以对整个应用程序进行,也可对应用程序的一部分进行。
当不能确定新应用程序处理的正确性,或者当新旧版本的应用程序非常类似时,需要进行平行测试。
2.答案如下:
1.软件测试按阶段划分可以分为单元测试、集成测试、系统测试和<验收测试>(不一定有)几个阶段
2.单元测试测试策略:
1.自顶向下的单元测试策略
方法:
先对最顶层的基本单元进行测试,把所有调用的单元做成桩模块。
然后再对第二层的基本单元进行测试,使用上面已测试的单元做驱动模块。
依此类推直到测试完所有基本单元。
优点:
在集成测试前提供早期的集成途径。
在执行上和详细设计的顺序一致。
不需要开发驱动模块。
缺点:
随着测试的进行,测试过程越来越复杂,开发和维护成本增加。
总结:
比孤立单元测试的成本高很多,不是单元测试的一个好的选择。
2.自底向上的单元测试策略
方法:
先对最底层的基本单元进行测试,模拟调用该单元的单元做驱动模块。
然后再对上面一层进行测试,用下面已被测试过的单元做桩模块。
依此类推,直到测试完所有单元。
优点:
在集成测试前提供系统早期的集成途径。
不需要开发桩模块。
缺点:
随着测试的进行,测试过程越来越复杂。
总结:
比较合理的单元测试策略,但测试周期较长。
3.孤立单元测试策略
方法:
不考虑每个单元与其它单元之间的关系,为每个单元设计桩模块或驱动模块。
每个模块进行独立的单元测试。
优点:
简单、容易操作,可达到高的结构覆盖率。
缺点:
不提供一种系统早期的集成途径。
总结:
最好的单元测试策略。
3.集成测试的测试策略