2.软件测试的目的是尽可能多的找出软件的缺陷。(√)
3.程序中隐藏错误的概率与其已发现的错误数成正比(√)
4.Beta测试是验收测试的一种。(√)
5.测试人员要坚持原则,缺陷未修复完坚决不予通过。(√)
6.项目立项前测试人员不需要提交任何工件。(╳)
7.单元测试能发现约80%的软件缺陷。(√)
8.测试的目的是发现软件中的错误。(√)
9.代码评审是检查源代码是否达到模块设计的要求。(√)
10.自底向上集成需要测试员编写驱动程序。(√)
二、选择题
1、实施缺陷跟踪的目的是:(ABCD)
A、软件质量无法控制B、问题无法量化C、重复问题接连产生
D、解决问题的知识无法保留E、确保缺陷得到解决
F、使问题形成完整的闭环处理
2、使用软件测试工具的目的:(ABCDF)
D、提高Bug的发现率E、更好的控制缺陷提高软件质量
F、更好的协助开发人员
3、编写测试计划的目的是:(ABC)
A、使测试工作顺利进行B、使项目参与人员沟通更舒畅
C、使测试工作更加系统化D、软件工程以及软件过程的需要
E、软件过程规范化的要求F、控制软件质量
4、选出属于黑盒测试方法的选项(B)
A、测试用例覆盖B、输入覆盖C、输出覆盖
D、分支覆盖E、语句覆盖F、条件覆盖
5、以测试的形态分测试可以分为:(ABC)
A、建构性测试B、系统测试C、专项测试
D、单元测试E、组件测试F、集成测试
6、进行软件质量管理的重要性有:()
A、维护降低成本B、法律上的要求C、市场竞争的需要
D、质量标准化的趋势E、软件工程的需要F、CMM过程的一部分
G、方便与客户进一步沟通为后期的实施打好基础
7、在GB/T17544中,软件包质量要求包括三部分,即产品描述要求、(
据要求。
A.用户文档要求B.系统功能要求
C.设计要求说明D.软件配置要求
8、典型的瀑布模型的四个阶段是:(ABCD)
A)、程序和数
A、分析B、设计C、编码
D、测试E、需求调研F、实施
9、()可以作为软件测试结束的标志。
A.使用了特定的测试用例B.错误强度曲线下降到预定的水平
10、导致软件缺陷的原因有很多,A—D是可能的原因,其中最主要的原因包括(ABCD)。
A.软件需求说明书编写的不全面,不完整,不准确,而且经常更改
B.软件设计说明书
C.软件操作人员的水平
D.开发人员不能很好的理解需求说明书和沟通不足
三、名词解释
1.Beta测试:Beta测试是从用户角度进行的测试,是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。它是在开发者无法控制的软件环境下进行的软件现场应用。
2.负载测试:负载测试是一个通过分析软件应用程序和支撑架构,模拟真实环境的使用,来确定能够接受的性能的过程。
3.软件测试活动生命周期:是指软件从进入测试到退出测试的过程中,所要经历的引入程序错误、通过测试发现错误和清除程序错误的几个阶段。
4.改进的三明治集成:利用较高的并行度弥补三明治集成中不能充分测试中间层的缺点。但根据中间层选择是否恰当,可能增加驱动模块和桩模块设计的工作量。
5.驱动模块相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实际测试结果。
四、简答题
软件的缺陷等级应如何划分?
致命的:致命的错误,造成系统或应用程序崩溃、死机、系统悬挂,或造成数据丢失、主要功能完全丧失等。
微小的:一些小问题,对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。
阶段评审与同行评审。
同行评审是一种重要而有效的工程方法,在软件产品工程中调用此方法,可通过法根式审查、结构化走查或者一些其他的学院式的评审方法加以实施。其目的是及早和高效地去除软件工作中的缺陷,必然结果是增强对软件工作产品和可预防缺陷的了解。
两者都是有关软件质量管理和保证的重要内容,二者相辅相成,缺一不可。
安全性测试属于软件测试的哪个阶段?并试阐述安全测试的概念和用以评判系统安全性性能的主要指标。
是系统测试的一种类型,
安全性测试就是要验证系统内的保护机制能否抵御入侵者的攻击。安全性测试的测试人员需要在测试活动中,撒气不同的入侵方式来攻击系统的安全机制,想尽一切办法来获取系统内的保密信息。
单元测试策略主要有三种方式:
1.自顶向下的单元测试策略:从顶层调用的单元做成桩模块;对第二层测试,使用上面已测试的单元做驱动模块;依次类推,直到全部单元测试结束。
2.自底向上的单元测试策略:先对模块调用的最底层模块进行测试,模拟调用该模块的模块为驱动模块;其次,对上一层模块进行单元测试,用已经被测试过的模块做桩模块,依次类推,直到全部单元测试结束。
3.孤立测试的单元测试策略:无需考虑每个模块与其他模块之间的关系,分别为每个模块单独设计桩模块和驱动模块,逐一完成所有单元模块的测试。
测试结束的标准是什么?
试题二
一、判断正误题(每小题1分,共10分)
1.测试是证明软件正确的方法。(╳)
2.负载测试是验证要检验的系统的能力最高能达到什么程度。(√)
3.测试中应该对有效和无效、期望和不期望的输入都要测试。(√)
4.对于连锁型分支结构,若有n个判定语句,则有2n条路径。(√)
5.验收测试是由最终用户来实施的。(√)
6.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。(√)
7.测试人员要坚持原则,缺陷未修复完坚决不予通过。(√)
8.黑盒测试也称为结构测试。(╳)
9.代码评审员一般由测试员担任。(╳)
10.集成测试计划在需求分析阶段末提交。(╳)
二、不定项选择题(每题可能有一个或多个选项应选,每题2分,共20分。多选不得分,少选仅得1分。)
1.软件验收测试的合格通过准则是:(AD)
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.项目阶段成果已经被基线化
6、典型的瀑布模型的四个阶段是:(ABCD)
7.下面的哪一项测试步骤中需要进行局部数据结构测试:(A)
A、单元测试
B、集成测试
C、确认测试
D、系统测试
8.从是否需要执行被测软件的角度,软件测试技术可划分的类型是:(AC)。
A、静态测试
B、黑盒测试
C、动态测试
D、白盒测试
9.从测试阶段角度,测试结束的正确顺序是:(B)
A、单元测试、集成测试、系统测试、确认测试
B、单元测试、系统测试、集成测试、确认测试
C、确认测试、集成测试、系统测试、单元测试
D、确认测试、系统测试、集成测试、单元测试
10.软件的六大质量特性包括:(A)
A.功能性、可靠性、可用性、效率、可维护、可移植
B.功能性、可靠性、可用性、效率、稳定性、可移植
C.功能性、可靠性、可扩展性、效率、稳定性、可移植
D.功能性、可靠性、兼容性、效率、稳定性、可移植
1.什么是软件测试
2.试述软件测试活动的生命周期?
3.集成测试策略主要有哪些?并试描述3个以上的具体策略?
答:1、大爆炸集成(P153):属于非增值式集成的一种方法,也称为一次性组装或整体拼装。这种集成策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考
4.恢复性测试属于软件测试的哪个阶段?并试阐述恢复性测试的概念和进行恢复性测试分析时主要应考虑的问题。
5.请简述单元测试进入的准则?
答:包括要素和判断准则:要素是详细说明书和单元测试用例,判断准则是经过审查=获得批准和进入配置库。
试题三:
一、判断题(每题1分,12分,正确的√,错误的╳)
1.软件测试的目的是尽可能多的找出软件的缺陷。()
软件测试的目的就是为了发现软件中的缺陷,从这个意义上面说上面的这个论断是正确的。不少人会认为软件测试可以保证软件的质量,其实这个观点是错误,测试只是软件质量控制中的一个角色,其活动并不能达成软件质量保证的效果。所以不要认为一个公司里面如果有了软件测试人员,产品的质量就会好起来。
2.Beta测试是验收测试的一种。(╳)
Beat测试和验收测试是两种不同的测试。验收测试的目的是为了以发现”未实现的需求”为目的,以评估”适合使用”为目标,该类测试的不是以发现缺陷为主要目的。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试。所以两者之间的是非包容关系。
3.验收测试是由最终用户来实施的。()
上面说到了验收测试的目的和目标,所以验收测试也可是是软件生产的企业内部人员来实施。例如产品经理。当软件以项目的形式出现,那么验收测试由最终用户来实施的情况是比较长见的。但是对于产品形式的软件,生产企业内部的验收测试会更多。
4.项目立项前测试人员不需要提交任何工件。()
应该说这道题目没有明确的答案,在项目立项前测试人员是不是要把一些准备工作以工件的形式给记录下来是完全取决于该企业的软件开发过程的要求。同时不同企业,立项前要达成的一些必要条件也是大相径庭的。应该说这一题目出的不是很好,如果你是出题人这家企业的测试工程师,那么就应该有一个明确的答案。
5.单元测试能发现约80%的软件缺陷。()
脚本语言开发网页的时候是根本没有复杂的单元测试。那么这样的数字应用在网站开发上面是否有意义,还是值得商榷的。所以这道题目出的不好,没有明确的答案
6.代码评审是检查源代码是否达到模块设计的要求。()
代码审查是一种静态技术,从这个意义上说代码复查是需要和其他的一些动态测试技术配合才能检查代码是否符合设计的要求
7.自底向上集成需要测试员编写驱动程序。()
这道题目大家看下top-down和down-top的集成测试示意图就能得出明确的答案。这里需要了解的是什么是驱动测试程序,什么是桩程序。如果集成组件数量众多,多关系层次,那么不论是什么类型的集成测试。驱动程序和桩程序都是需要开发的。
8.负载测试是验证要检验的系统的能力最高能达到什么程度。()
关于负载测试和压力测试在论坛中的帖子中有详细的解释,大家可以去看一下就能得出正确的答案
9.测试人员要坚持原则,缺陷未修复完坚决不予通过。()
同样,这一题没有正确的答案。缺陷是否修复是需要听取测试人员的意见,但测试人员的意见非决定性。所以还是要看一个企业赋予测试人员有多大的权力。
10.代码评审员一般由测试员担任。()
如果测试员有这个水平,那么当然是可以参加的。不过大多数的企业不会让普通的测试人员参与代码的评审。
11.我们可以人为的使得软件不存在配置问题。()
首先大家先搞清楚什么是配置管理什么是软件配置,从这道题目中看不出出题人想问的是关键工程中的配置管理还是单纯的软件配置。但是可以肯定的是不论是何种情况,答案均是否定的。
12.集成测试计划在需求分析阶段末提交。()
集成测试计划在开发人员完成软件集成计划之后就可以开始进行了。所以在需求分析阶段之后提交是不现实的事情,应该在软件的设计阶段后,编码前。
二、不定项选择题(每题2分,10分)
1.软件验收测试的合格通过准则是:()
回答这道题,你必须是这家企业的员工。前面说到了验收测试的目的和目标,一个是需求必须实现,二是证明软件是适合使用的。这样能满足这两个通用标准就可以了。当然有些软件企业会对验收测试标准做一些调整。
2.软件测试计划评审会需要哪些人员参加?()
上面的4种角色都需要参与
3.下列关于alpha测试的描述中正确的是:()
首先大家需要知道alpha测试是系统级别的测试,该测试是在一个受控的环境中进行的。用户需要直接参与进来。所以答案应该是AD
4.测试设计员的职责有:()
合理的答案的是BC,同时要看软件企业对该类人员的职责是如何定义。
5.软件实施活动的进入准则是:()
先要了解一下什么是基线。这个是软件配置管理中一个重要的概念。工作产品必须纳入到一定的基线里面。所以选择ABC是必定的,至于是否选择D要看这家企业自身的标准了填空题(每空1分,24分)
1.软件验收测试包括___、___、____三种类型。
软件验收测试包括正式验收测试、alpha测试、beta测试三种测试。
2.系统测试的策略有功能测试、、、、易用性测试、、、、、、、、
、、等15种方法。
系统测试的策略有很多种的,我知道的有性能测试、负载测试、强度测试、易用性测试、安全测试、配置测试、安装测试、文档测试、故障恢复测试、用户界面测试、恢复测试、分布测试、可用性测试。。。
3.设计系统测试计划需要参考的项目文档有、和迭代计划。
设计系统测试计划需要参考的项目文档有软件测试计划、软件需求工件、和迭代计划。
4.对面向过程的系统采用的集成策略有___、___两种。
5.通过画因果图来写测试用例的步骤为___、___、___、___及把因果图转换为状态图共五个步骤。
利用因果图生成测试用例的基本步骤是:
§分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
§分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系根据这些关系,画出因果图。
§由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。
§把因果图转换成判定表。
§把判定表的每一列拿出来作为依据,设计测试用例。
重点复习
软件测试技术*重点复习(带测试案例分析题)
一、判断题(10分)
负载测试(P189):
负载测试是一个通过分析软件应用程序和支撑架构,模拟真实环境的使用,来确定能够接受的性能的过程。
判定语句:
路径:
验收测试(P200):
验收测试是将程序与其最初的需求及最终用户当前的需要进行比较的过程。验收测试是软件产品质量的最后一关。测试主要从用户角度着手。
参与者主要是用户和少量的程序开发人员。
黑盒测试:
(亦功能测试、行为测试、数据驱动测试、基于规格说明的测试)
是一种从用户观点出发的测试。这种方法把程序当作一个黑盒,忽略其内部结构特性。测试者只知道输入与输出之间的关系或程序功能,依靠程序功能需求说明书,确定测试用例和推断测试结果的正确性。测试用例的设计基于产品的功能、目的是检查程序各个功能是否实现,并检查其中的功能错误。
黑盒测试所要发现的外部行为错误:
1)功能不正确或不完整;
2)接口错误;
3)接口所使用的数据结构错误;
4)行为或性能错误;
5)初始化和终止错误;
代码评审员:
集成测试:
集成测试(是对已测试过的模块进行组装)就是对集成到一起的软件组件和硬件组件进行的测试,用于评估这些组件之间能否进行正确的交互。
β测试:
Beta测试是从用户角度进行的测试,是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。它是在开发者无法控制的软件环境下进行的软件现场应用。两种不同的途径:公共β测试和私有β测试。
二、不定项选择题(20分)
验收测试通过的准则:
跟踪缺陷的定义:
软件测试工具的使用(目的是什么):
A、帮助测试寻找问题
B、协助问题的诊断
软件测试评审会的组成人员:
测试计划的目的:
A.使测试工作顺利进行
B.使项目参与人员沟通更舒畅
C.使测试工作更加系统化
α测试是什么:
Alpha测试是由选定的用户在可控的环境下进行的产品早期性测试。
在此测试中,确定并记录要研究的功能和业务任务,但没有可以遵循的特定测试用例。测试内容由各测试员决定。这种验收测试方法不像正式验收测试那样组织有序,而且更为主观。大多数情况下,非正式验收测试是由最终用户组织执行的。
黑盒测试具体有哪些方法:
1)边界值分析法
2)等价类划分法
3)因果图法
4)决策表法
5)功能图分析法
6)错误推测法
7)判定表驱动分析法
8)正交试验设计法
9)状态转换测试
10)分支测试
测试设计人员的职责:
1)确定并描述相应的测试技术。
2)确定相应的测试支持工具
3)定义并维护测试自动化架构。
4)详述和验证需要的测试环境配置。
5)验证与评估测试途径
测试按形态怎么分类:
A.建构性测试
B.系统测试
C.专项测试
瀑布模型的阶段:
A.分析
B.设计
C.编码
D.测试
软件质量包括的内容:
1)软件产品的质量,即满足使用要求的程度。
3)软件在其商业环境中所表现的质量。
什么叫局部数据结构测试:
局部数据结构测试:设计测试用例检查数据类型说明、初始化、默认值等方面的问题,还要查清全程数据对模块的影响。
软件测试结束的标志是什么:
测试的阶段有哪些:
1)需求规格说明、设计、编码阶段为引入程序错误阶段;
2)测试阶段为发现错误阶段;
3)缺陷分类、缺陷分离、缺陷排除阶段为清除程序错误阶段;
导致软件缺陷的原因:
1)技术问题
2)算法错误。
3)语法错误。
4)计算和精度问题。
5)系统结构不合理,造成系统性能问题。
6)接口参数不匹配出现问题。
六大质量特性有哪些:
1)功能性
2)可靠性
3)易用性
4)效率性
5)可维护性
6)可移植性
三、名词解释(25分/5题)
α测试、β测试、负载测试、压力测试(强度测试):
α测试:Alpha测试是由选定的用户进行的产品早期性测试,这个测试一般在可控的环境下进行。
β测试(P29):Beta测试是从用户角度进行的测试,是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。它是在开发者无法控制的软件环境下进行的软件现场应用。强度测试:
逻辑覆盖:是以程序内部的逻辑结构为基础的设计测试用例的技术。它属于白盒测试。
路径覆盖:路径覆盖是在组件中被测试执行到的路径的百分比。要求设计若干测试用例,执行被测试程序时,能够覆盖程序中所有的可能路径。
软件测试活动生命周期:
软件测试活动生命周期:是指软件从进入测试到退出测试的过程中,所要经历的引入程序错误、通过测试发现错误和清除程序错误的几个阶段。
桩模块、驱动模块:
桩模块(P105):用于代替所测模块调用的子模块。桩模块可以进行少量的数据操作,不需要实现子模块的所有功能,但要根据需要来实现或代替子模块的一部分功能。
驱动模块(P105):相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实际测试结果。
大爆炸集成、三明治集成、改进的三明治集成、高频集成:
大爆炸集成(P153):属于非增值式集成的一种方法,也称为一次性组装或整体拼装。这种集成策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险。
三明治集成(P158):一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点,因此也属于基于功能分解的集成。这种方法桩和开发工作都比较小,但增加了定位缺陷的难度。
改进的三明治集成(P160):利用较高的并行度弥补三明治集成中不能充分测试中间层的缺点。但根据中间层选择是否恰当,可能增加驱动模块和桩模块设计的工作量。
四、简答题(30分/6题)
软件测试和软件测试结束的标准:
(可能考法:什么是软件测试,软件测试分为哪几个阶段)
软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
软件测试过程按各测试阶段的先后顺序可分为单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试5个阶段
软件测试退出标准为:完成测试需求中列出的所有功能及测试过程中发现缺陷的回归测试。软件缺陷等级:
1)致命的:致命的错误,造成系统或应用程序崩溃、死机、系统悬挂,或造成数据丢失、主要功能完全丧失等。
4)微小的:一些小问题,对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。
阶段评审和同行评审:
两者都是有关软件质量管理和保证的重要内容,二者相辅相成,缺一不可。※单元测试策略(特别注意退出的原则)和集成测试的策略(P106):
1)自顶向下的单元测试策略:
2)自底向上的单元测试策略:
3)孤立测试的单元测试策略:
单元测试退出的标准:
1)单元测试用例设计已经通过评审
2)核心代码100%经过CodeReview
3)单元测试功能覆盖率达到100%
4)单元测试代码行覆盖率不低于80%
5)所有发现缺陷至少60%都纳入缺陷追踪系统且各级缺陷修复率达到标准
6)不存在A、B类缺陷
7)C、D、E类缺陷允许存在
8)按照单元测试用例完成了所有规定单元的测试
9)软件单元功能与设计一致
集成测试的策略:
1)大爆炸集成
2)自顶向下集成
3)自底向上集成
4)三明治集成
5)高频集成
6)分层集成
7)分布式集成
8)基于路径、功能、进度、风险、事件、使用等的集成等等
恢复性测试和安全性测试:
恢复性测试
恢复测试是通过各种手段,让软件强制性地出错,使其不能正常工作,从而检验系统的恢复能力。
在进行恢复性测试时,要考虑的主要问题有:
1)恢复期间的安全性过程。
2)恢复处理日志方面的能力。
3)当出现供电问题时的恢复能力。
4)恢复操作后系统性能是否下降。
常用的恢复测试用例的设计方法:规范导出法、错误猜测法、基于故障的测试。安全性测试就是要验证系统内的保护机制能否抵御入侵者的攻击。
安全性测试的测试人员需要在测试活动中,撒气不同的入侵方式来攻击系统的安全机制,想尽一切办法来获取系统内的保密信息。
通常需要模拟的活动有:
1)获取系统密码
2)破坏保护客户信息的软件
3)独占整个系统资源,使别人无法使用
4)使得系统瘫痪,企图在恢复系统阶段获得利益等
判断系统安全性性能的指标:
2)生存性:当错误发生时,系统对紧急操作的支持,对错误的补救措施以及恢复到正常操作的能力,即系统的抗挫能力。
3)精确性:衡量系统安全性控制的精度指标,围绕所出现的错误数量、发生频率及其严重性判断。
5)吞吐量:用户和服务请求的峰值和平均值。
五、设计案例(15分/2题)
怎样制定有效等价类、无效等价类(作业1):
测试场景:
一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的
设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B;
如果是等腰的,还要判断A=B,或B=C,或A=C;
如果是等边的,则需判断是否A=B,且B=C,且A=C。
根据程序画出程序流程图(作业2):
程序流程图
↓
控制流图(已经给出)
圈复杂度
独立路径
测试用例
程序:
1main()
2{
3intnum1=0,num2=0,score=100;
4inti;
5charstr;
6scanf(“%d,%c\n”,&i,&str);
7while(i
8{
9if(str=T)
10num1++;
11elseif(str=F)
12{
13score=score-10;
14num2++;
15}
16i++;
17}
18printf(“num1=%d,num2=%d,score=%d\n”,num1,num2,score);
19}
(一)根据程序画出控制流图:
控制流图G
(二)根据控制流图计算圈复杂度:
根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目。
公式1:V(G)=10-8+2,其中10是控制流图G中边的数量,8是控制流图中节点的数目。公式2:V(G)=3+1,其中3是控制流图G中判断节点的数目。
公式3:V(G)=4,其中4是控制流图G中区域的数目。
因此,控制流图G的环形复杂度是4。就是说至少需要4条独立路径组成基本路径集合,并由此得到能够覆盖所有程序语句的测试用例。
(三)确定基本路径集合(即独立路径集合):
一条独立路径是至少包含有一条在其它独立路径中从未有过的边的路径。
根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径:path1:7->18
path2:7->9->10->16->7->18
path3:7->9->11->15->16->7->18
path4:7->9->11->13->14->15->16->7->18
(
(一)判断:
判定语句:对于连锁型分支结构,若有n个判定语句,则有2n条路径。
黑盒测试:用黑盒法测试时,测试用例是根据产品的功能设计的。
(二)选择:
软件测试的目的是(发现软件的错误)。
为了提高测试的效率,应该(选择发现错误的可能性大的数据作为测试数据)。使用白盒测试方法时,确定测试数据应根据(程序的内部逻辑)和指定的覆盖标准。与设计测试数据无关的文档是(项目开发计划)。
软件的工作最好由(不属于该软件开发组的软件设计人员)承担,以提高集成测试的效果。
测试真正的目的是使我们通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,从而确保软件产品的质量。
常见软件测试工程师面试题
1.你如何在pocketpc上TEST你的程序.你考虑了哪些方面.
2.如果将你的程序的语言扩展到非英语,例如中文,你如何测试.
3.给你一个COCAN,你如何测试(解释说就是罐装的可口可乐).
4.当你的程序遇到BUG的时候,你选择怎样处理.
5.你如何isolation你程序里的BUG.
软件测试工程师笔试试题答案
我认为那些面试题不同的人会有不同的答案
下面是部分答案
1.软件测试的目的是尽可能多的找出软件的缺陷。()软件测试的目的就是为了发现软件中的缺陷,从这个意义上面说上面的这个论断是正确的。不少人会认为软件测试可以保证软件的质量,其实这个观点是错误,测试只是软件质量控制中的一个角色,其活动并不能达成软件质量保证的效果。所以不要认为一个公司里面如果有了软件测试人员,产品的质量就会好起来。
2.Beta测试是验收测试的一种。()Beat测试和验收测试是两种不同的测试。验收测试的目的是为了以发现”未实现的需求”为目的,以评估”适合使用”为目标,该类测试的不是以发现缺陷为主要目的。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试。所以两者之间的是非包容关系。
3.验收测试是由最终用户来实施的。()上面说到了验收测试的目的和目标,所以验收测试也可是是软件生产的企业内部人员来实施。例如产品经理。当软件以项目的形式出现,那么验收测试由最终用户来实施的情况是比较长见的。但是对于产品形式的软件,生产企业内部的验收测试会更多。
4.项目立项前测试人员不需要提交任何工件。()应该说这道题目没有明确的答案,在项目立项前测试人员是不是要把一些准备工作以工件的形式给记录下来是完全取决于该企业的软件开发过程的要求。同时不同企业,立项前要达成的一些必要条件也是大相径庭的。应该说这一题目出的不是很好,如果你是出题人这家企业的测试工程师,那么就应该有一个明确的答案。
6.代码评审是检查源代码是否达到模块设计的要求。()代码审查是一种静态技术,从这个意义上说代码复查是需要和其他的一些动态测试技术配合才能检查代码是否符合设计的要求
7.自底向上集成需要测试员编写驱动程序。()这道题目大家看下top-down和down-top的集成测试示意图就能得出明确的答案。这里需要了解的是什么是驱动测试程序,什么是桩程序。如果集成组件数量众多,多关系层次,那么不论是什么类型的集成测试。驱动程序和桩程序都是需要开发的。
8.负载测试是验证要检验的系统的能力最高能达到什么程度。()关于负载测试和压力测试在论坛中的帖子中有详细的解释,大家可以去看一下就能得出正确的答案
9.测试人员要坚持原则,缺陷未修复完坚决不予通过。()同样,这一题没有正确的答案。缺陷是否修复是需要听取测试人员的意见,但测试人员的意见非决定性。所以还是要看一个企业赋予测试人员有多大的权力。
10.代码评审员一般由测试员担任。()如果测试员有这个水平,那么当然是可以参加的。不过大多数的企业不会让普通的测试人员参与代码的评审。
11.我们可以人为的使得软件不存在配置问题。()首先大家先搞清楚什么是配置管理什么是软件配置,从这道题目中看不出出题人想问的是关键工程中的配置管理还是单纯的软件配置。但是可以肯定的是不论是何种情况,答案均是否定的。
12.集成测试计划在需求分析阶段末提交。()集成测试计划在开发人员完成软件集成计划之后就可以开始进行了。所以在需求分析阶段之后提交是不现实的事情,应该在软件的设计阶段后,编码前。
B.所有测试项没有残余一级、二级和一
D.验收测试工件齐全。回答这道题,你必须是这家企业的员工。前面说到了验收测试的目的和目标,一个是需求必须实现,二是证明软件是适合使用的。这样能满足这两个通用标准就可以了。当然有些软件企业会对验收测试标准做一些调整。
D.测试组上面的4种角色都需要参与
D.alpha测试是验收测试的一种首先大家需要知道alpha测试是系统级别的测试,该测试是在一个受控的环境中进行的。用户需要直接参与进来。所以答案应该是AD
D.评估测试活动合理的答案的是BC,同时要看软件企业对该类人员的职责是如何定义。
D.项目阶段成果已经被基线化先要了解一下什么是基线。这个是软件配置管理中一个重要的概念。工作产品必须纳入到一定的基线里面。所以选择ABC是必定的,至于是否选择D要看这家企业自身的标准了
填空题(每空1分,24分)
1.软件验收测试包括___、___、____三种类型。软件验收测试包括正式验收测试、alpha测试、beta测试三种测试。
2.系统测试的策略有功能测试、、、、易用性测试、、、、、、、、、、等15种方法。系统测试的策略有很多种的,我知道的有性能测试、负载测试、强度测试、易用性测试、安全测试、配置测试、安装测试、文档测试、故障恢复测试、用户界面测试、恢复测试、分布测试、可用性测试。。。
3.设计系统测试计划需要参考的项目文档有、和迭代计划。设计系统测试计划需要参考的项目文档有软件测试计划、软件需求工件、和迭代计划。
4.对面向过程的系统采用的集成策略有___、___两种。5.通过画因果图来写测试用例的步骤为___、___、___、___及把因果图转换为状态图共五个步骤。利用因果图生成测试用例的基本步骤是:§分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。§分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系根据这些关系,画出因果图。§由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。§把因果图转换成判定表。§把判定表的每一列拿出来作为依据,设计测试用例。
常见的软件测试面试题
1.等价类划分
常见的软件测试面试题划分等价类:等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
2.边界值分析法
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
3.错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.
错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例.例如,在单元测试时曾列出的许多在模块中常见的错误.以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行.这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.
4.因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等.考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多.因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.这就需要利用因果图(逻辑模型).因果图方法最终生成的就是判定表.它适合于检查程序输入条件的各种组合情况.
5.正交表分析法
有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。
6.场景分析方法
指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。
您认为做好测试用例设计工作的关键是什么?
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
详细的描述一个测试活动完整的过程。
1.项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后SQA进入项目,开始进行统计和跟踪
2.开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。
3.测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。
4.测试用例完成后,测试和开发需要进行评审。
5.测试人员搭建环境
6.开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现BUG后提交给BugZilla。
7.开发提交第二个版本,包括BugFix以及增加了部分功能,测试人员进行测试。
8.重复上面的工作,一般是3-4个版本后BUG数量减少,达到出货的要求。
9.如果有客户反馈的问题,需要测试人员协助重现以及回归测试。
以往是否曾经从事过性能测试工作?请尽可能的详细描述您以往的性能测试工作的完整过程。
您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体
的工作中的例子描述该工具是如何在实际工作中应用的。
测试网管系统中,使用的Mimic来模拟终端,能够大量的节省成本。
测试软交换系统的时候,使用的Prolab来模拟终端并发送呼叫软交换,他完成了同时数百人才能完成的摘机拨号工作,主要工作原理是产生一些符合要求的IP包并发送给软交换系统,同时对软交换系统的回应进行处理,决定下一步动作。
您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
主要是保障在大量用户的情况下,服务能正常使用。
在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
1.在传统的BugZilla中,BUG描述应该包括以下的信息
2.和BUG产生对应的软件版本
3.开发的接口人员
4.BUG的优先级
5.BUG的严重程度
6.BUG可能属于的模块,如果不能确认,可以用开发人员来判断
7.BUG标题,需要清晰的描述现象
8.BUG描述,需要尽量给出重新Bug的步骤
高质量的BUG记录就是指很容易理解的BUG记录,所以,对于描述的要求高,能提供的信息多且准确,很好的帮助开发人员定位。
02.您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?
测试计划->测试设计(测试用例,测试数据)->测试执行(单元测试,集成测试,系统测试,回归测试)03.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
易用性测试-界面的友好性,操作方便性等。
功能测试-系统中功能性需求的满足
安全性测试-系统是否存在安全隐患和漏洞
性能测试-系统在大并发下的响应速度和健壮性
04.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。黑盒/白盒:主要区别在是否了解系统或程序的内部结构和代码
集成测试:模块或模块直接的集成接口测试,单个模块测试
系统测试:一个完整功能的完全测试。
05.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
提前安排出测试工具选择,测试类型选择,人员需求,保证和项目开发协调一致,保证测试工作顺利进行。06.您认为做好测试计划工作的关键是什么?
了解项目或系统的业务需求
和项目经理协调好,了解项目的进度计划安排情况
07.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
边界值/等价类/业务流程图分析和状态转换分析/业务逻辑分析
08.您认为做好测试用例设计工作的关键是什么?
对业务和软件需求非常清楚,可以根据需求不同选择不同的测试用例设计
09.您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。
评审计划->预审->评审;
10.您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。
制订计划->选择测试功能->选择测试工具->录制脚本->运行测试->分析结果
11.您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。
微软WAS,LoadRunner
12.您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
关键是测试脚本的录制,测试时候测试环境的干净。
13.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
缺陷名词/描述/缺陷等级/严重程度/发现模块/发现步骤和过程/是否可以重现
14.您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。
CQ,也可以使用BugFree等免费工具。
15.您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?
将先进的经验或思想固化到过程中,通过过程改进和能力提高来改进软件质量。
软件测试:微软测试工程师面试题
如果别人问我这些题目,我想我会大致这样回答,各位从事软件测试的同志们帮我看看回答的怎么样。
01.为什么要在一个团队中开展软件测试工作?
答:软件测试部门配合系统分析人员软件需求分析讨论,并根据需求说明书制定《项目测试计划》,编写测试用例,建立测试环境。
软件测试人员负责软件开发部门的新产品测试及原有产品的升级测试,负责软件问题解决过程跟踪,负责软件开发文档开发工作的规范化及管理开发部门的产品文档,制作用户手册及操作手册,负责产品的上线测试,监督软件开发过程的执行,提高产品质量。
03.您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?(对于软件测试部分,可以简述)
答:需求人员连同系统分析人员&测试人员开会讨论需求。系统分析人员写出需求分析说明,并连同系统分析人员&测试人员&需求人员开会讨论可行性。系统分析人员写出详细设计说明书,程式人员编码,给出系统流程图。交与测试人员,测试人员给出Bug统计表。04.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?答:从事过writetestplan,creationoftestcase,进行功能测试,性能测试,编写测试工具,文档的管理等,比较擅长与写测试用例和进行功能测试。
05.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
答:有功能测试,性能测试,可靠性测试,安全性测试,负载测试,压力测试,安装/卸载测试,启动/停止测试,兼容性测试,互连测试,文档测试,恢复测试,回归测试,可使用性测试,容量测试。
功能测试只对软件的功能是否满足用户需求来做测试。性能测试需要和压力和负载测试联合起来。
06.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。
单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。
集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。系统测试:在所有都考虑的情况下,对系统进行测试。
验收测试:第三方进行的确认软件满足需求的测试。
答:需求人员连同系统分析人员&测试人员开会讨论需求。系统分析人员写出需求分析说明,并连同系统分析人员&测试人员&需求人员开会讨论可行性。系统分析人员写出详细设计说明书,程式人员编码,给出系统流程图。交与测试人员,测试人员给出Bug统计表。
04.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?答:从事过writetestplan,creationoftestcase,进行功能测试,性能测试,编写测试工具,文档的管理等,比较擅长与写测试用例和进行功能测试。
07.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
答:测试计划工作是对测试工作内容的一个有效的组织和规划,能保证测试工作有效的展开。测试计划工作包括测试目标,测试范围的定义,测试方法的选择,测试进度里程碑,测试资源的有效配置和管理。
测试计划工作也称为测试策略,主要描述测试工程的总体方法和目标,描述目前在进行那一阶段的测试(单元测试,集成测试,系统测试)以及每一阶段内进行的测试种类(功能测试,性能测试等)确定测试范围,生成测试数据等。
其中软件计划中的测试目标最重要,他的软件测试的所需要达成的最终结果。08.您认为做好测试计划工作的关键是什么?
答:1.明确测试的目标,增强测试计划的实用性
2.坚持“5W”规则,明确内容与过程,'what''why''when''where''how'
3.采用评审和更新机制,保证测试计划满足实际需求
4.分别创建测试计划与测试详细规格、测试用例
09.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法,循环测试路径选择,基本路径测试。
例子:在一次输入多个条件的完整性查询中。利用等价类划分法则和边界分析法则,首先利用等价类划分法,可以一个或多个结果是OK的测试用例,然后确认多个NG的测试用例,然后利用边界值分析法,可以对结果分别是OK和NG的测试用例进行扩展和补充。
10.您认为做好测试用例设计工作的关键是什么?
答:测试用例设计工作的关键是对可行的和不可行的都要考虑。
1,输入2,详细的操作步骤3,预期输出4,实际输出。
11.请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。
12.您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。
13.您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。
14.您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。
答:有使用过LoadRunner,该工具能够录制测试人员的操作步骤,然后对这个操作步骤模拟出多个用户来播放出来。
1。VisuralUserGenertor创建脚本,选择协议,录制操作,编辑操作。
2。中央控制器(Controller)调度虚拟用户。创建场景,选择脚本,建立虚拟用户,设计shedual,设置ipspoofer。
3。运行脚本。分析shedual。
4。分析测试结果。
15.您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
答:性能测试工作的目的是检查系统是否满足在需求说明书中规定的性能,性能测试常常需要和强度测试结合起来,并常常要求同时进行软件和硬件的检测。
16.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
问题描述和详细操作步骤要尽可能的详细。Bug应该尽量用书面语,对与严重程度比较高的缺陷要在相同环境下在测试一遍。
在C/S模式下,如果条件满足可以使用替换法来确认是client端的问题还是server端的问题。
04.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
答:从事过writetestplan,creationoftestcase,进行功能测试,性能测试,编写测试工具,文档的管理等,比较擅长与写测试用例和进行功能测试。