文章目录
- 选择题
- 判断题
- 填空题
- 简答题
- 1. 软件测试执行阶段分为几个步骤?
- 2. 请列举软件开发生命周期的主要模式。
- 3. 关于黑盒测试和白盒测试:
- 4. 列举几种不修复软件缺陷的原因:
- 5. 质量是免费的吗?请说明理由。
- 6. 什么是单元测试?什么是集成测试?两者应当先做哪一个?
- 7. 软件质量保证人员的职责是什么?他们和测试员有什么区别?
- 8. 什么是测试桩?什么是测试驱动?两者的区别是什么?
- 9. 软件缺陷的生命周期中的三种基本状态和两种扩展状态分别是什么?
- 10. 软件缺陷的生命周期的有哪三种基本状态?它们之间如何转换?
- 11. 什么是灰盒测试?它与白盒测试和黑盒测试的区别是什么?
- 12. 请列举并简单介绍软件测试的四种基本技术。
- 13. 所谓的测试“猴子”做的测试是指哪一种测试?它分为几种类型?
- 14. 什么是确认?什么是验证?两者是不是等价的?
- 15. 什么是通过性测试?什么是失效性测试?在软件测试工作中应当先做哪一种?
选择题
A 下面属于软件缺陷的是:
- 软件没有实现说明书要求的功能 :
是
- 软件实现了说明书没有提到的功能:
是
- 软件太大,占据硬盘空间太多:
否
- 软件出现了说明书中指明不应该的错误:
是
B 关于标准和规范,下列说法均正确:
- 标准是强制的,规范是建议的
- 标准和规范都是软件开发中一些需要遵守的规则
- 原则上软件开发中标准和规范都要遵守,在确实无法保证的情况下可以不遵守规范,但不能违反标准。
如果规定程序中不允许使用goto语句,这是
标准
。
C 关于通过性测试和失效性测试,下列说法均正确:
- 通过性测试是确认软件能否在正常情况下完成预定的任务
- 失效性测试是努力使软件失败或者工作不正常,希望在极端情况下暴露软件缺陷
- 总是先做通过性测试,再做失效性测试
- 通过性测试和失效性测试都必须做
判断题
- 计算机时间格式中的“千年虫”是一种软件缺陷。
yes
- 测试工作的目标是完全测试一个软件,尽可能找出所有缺陷。
no 因为完全测试一个软件一般是不可能的。
- 单元测试和集成测试之间的关系,正确的是,单元测试和集成测试都必须做,先做单元测试,再做集成测试。
yes
- 灰盒测试是介于黑盒测试和白盒测试之间的一种测试技术。
yes
- 导致软件无法启动的缺陷应当属于严重性1级、优先级1级。
yes
- 在软件某部分发现软件缺陷越多,通常意味着还有更多的缺陷未发现。
yes
- 如果测试工作中每天发现的软件缺陷数目持续明显下降至很少,通常说明:测试工作临近结束。
yes
- 由于时间紧张,项目经理决定不做内部测试,直接交给用户作beta测试。
no 该做法是错误的,beta测试不能取代正规的内部测试。
- 软件文档需要测试吗?需要
yes
- 没有产品说明书和需求文档的情况下能做黑盒测试。
yes
- 关于软件缺陷的修复:
● 软件缺陷一经发现,必须修复,否则产品不能发布no
● 测试员可以决定不修复软件缺陷no
● 程序员可以拒绝修复软件缺陷,直接通知测试员该缺陷取消no
● 被发现的软件缺陷是可能不予修复的,通常这由项目经理或者更高层决定yes
填空题
-
软件测试员的目标是:尽可能早地发现软件缺陷并确保其得到修复。
-
静态白盒测试的过程是:正式审查,它的方式有三种:同事审查、走查、检验;最正式最严格的是***检验***。
-
动态白盒测试和调试的关系是在隔离缺陷的位置和原因上有交叉,但是目的不同,动态白盒测试是为了***发现软件缺陷***,后者是为了***修复缺陷***。
-
白盒测试的三种代码覆盖是***语句覆盖、分支覆盖、条件覆盖***,其中,***条件覆盖***是最好的最全面的。
-
如果开发小组规定,变量名必须用长度不超过8的小写英文字符串来表示,这是***标准***。
-
当测试员发现软件缺陷并且汇报时,软件缺陷进入***打开***状态;当程序员修复了缺陷之后,软件缺陷转入***解决***状态;当测试员最终确定软件缺陷已经不复存在,软件缺陷进入***关闭***状态。
-
如果程序员宣称已经修复了软件缺陷,测试员应该做***回归测试***,确定缺陷是否真的已不存在。
-
现实中产品的质量和可靠性并不一定是一致的,请举出一个实例来说明这一点:
赛车,质量很高,但是可靠性很差 -
对于测试计划来说,最终生成详细的、书面的文档是***非必需***的
-
测试员不能保证软件质量。
-
软件的本地化不仅仅是翻译。
-
自动化测试工具***不能***取代测试员。
-
软件的错误提示信息用户很难理解***是***一种软件缺陷。
-
如果测试中一段时间里每天发现的软件缺陷的数目基本上保持不变,则说明此时测试工作还***不能***结束。
-
软件缺陷一旦被发现,***不一定***修复。
-
Beta测试***不是***可有可无的。
-
测试中提到的所谓的“猴子”做的测试,指的是***随机测试***。
-
软件缺陷总是成群出现,意味着如果你在某个部分已经发现了很多软件缺陷,那么这个部分还有很多没有发现的缺陷。
-
没有计划,仅凭测试员坐在电脑前自由探索以找到缺陷,这种测试方法叫做***特别测试***。
-
如果程序员声称缺陷已修复,则测试员重新测试该部分以验证缺陷是否真的不存在了,这叫做***回归测试***。
简答题
1. 软件测试执行阶段分为几个步骤?
单元测试、集成测试、确认测试、系统测试、验收测试
2. 请列举软件开发生命周期的主要模式。
大爆炸模式、边写边改模式、瀑布模式、螺旋模式、敏捷开发
3. 关于黑盒测试和白盒测试:
黑盒测试是看不到软件的内部构造和源代码,测试软件在给定输入下的行为;
白盒测试可以查看软件内部构造和源代码,从而帮助确定测试用例;
编写黑盒测试用例的基础是产品说明书(需求说明书);
编写白盒测试用例的基础是代码。
白盒测试的功能比黑盒测试更强,但是不能说做了白盒测试的话就可以不做黑盒测试了,两种测试都必须做;
白盒测试因为要求读懂源代码,由此对测试员的要求比较高;
4. 列举几种不修复软件缺陷的原因:
- 进度中没有安排足够的时间
- 不是软件缺陷
- 修复风险太大,不值得
- 软件缺陷没有正确报告
5. 质量是免费的吗?请说明理由。
质量是免费的。产品的费用包括了一致性费用和不一致性费用,生产高质量的产品在前期可能带来较多的一致性费用,但是质量低劣的产品会带来后期巨大的不一致性费用,从而可能总的费用远远高于高质量的产品。所以,生产高质量的产品的费用并比不上生产低质量产品多。
6. 什么是单元测试?什么是集成测试?两者应当先做哪一个?
在底层进行的测试叫做单元测试,它测试基本模块;单元经过测试,底层软件缺陷找出来并修复之后,集成在一起,对模块的组合进行测试叫做集成测试。先做单元测试再做集成测试。
7. 软件质量保证人员的职责是什么?他们和测试员有什么区别?
软件质量保证人员的职责是检查和评估当前软件的开发过程,找出改进过程的方法,以达到防止软件缺陷出现的目标。
质量保证人员和测试人员的区别是:
第一:质量保证人员有权干预软件开发过程,有权要求开发人员按照他的建议改进开发过程,而测试人员没有这个权力;
第二:质量保证人员负责保证软件的质量,而测试人员不负责保证软件的质量;
做质量保证人员比做测试员更难,在软件开发过程中,他有更大的权力,同时,他也需要承担更大的责任。
8. 什么是测试桩?什么是测试驱动?两者的区别是什么?
测试驱动:自底而上的递增测试,编写称为测试驱动的模块调用正在被测试的模块,测试驱动以和将来真正模块相同的方式挂接,向被测试模块发送测试用例数据,接受返回结果,验证结果是否正确。
测试桩:自顶而下的递增测试,编写称为测试桩的模块,替换底层模块,充当被测试模块的接口,向被测试模块发送数据。
测试驱动和测试桩的区别是:两者替换的部分不同,前者替换被测试模块的高层模块,后者替换被测试模块的底层模块。
9. 软件缺陷的生命周期中的三种基本状态和两种扩展状态分别是什么?
基本状态:打开、解决、关闭;扩展状态:审查、推迟
10. 软件缺陷的生命周期的有哪三种基本状态?它们之间如何转换?
三种基本状态:打开、解决、关闭。
测试员发现缺陷并公开,软件缺陷变成打开状态;程序员修复之后转入解决状态;测试员做回归测试,确认缺陷已修复,进入关闭状态。
11. 什么是灰盒测试?它与白盒测试和黑盒测试的区别是什么?
灰盒测试介于黑盒测试和白盒测试之间,它将黑盒测试和白盒测试的界限打乱,测试时,仍然将软件视为黑盒子,但是通过简单查看软件内部的工作机制作为补充。灰盒测试不能够向白盒测试那样完整地看到源代码,也不像黑盒测试那样对软件的工作原理和机制一无所知,它能够看到部分软件的源代码以及了解软件的基本工作原理。
12. 请列举并简单介绍软件测试的四种基本技术。
静态黑盒测试:检查说明书,看看有没有问题。
动态黑盒测试:运行软件,在给定输入下,看看能否得到正确输出。
静态白盒测试:察看软件的源代码,找出缺陷。
动态白盒测试:查看源代码,据此设计测试用例,执行测试用例。
13. 所谓的测试“猴子”做的测试是指哪一种测试?它分为几种类型?
指随机测试。测试猴子分为三种:笨拙的猴子、半聪明的猴子、聪明的猴子。
14. 什么是确认?什么是验证?两者是不是等价的?
确认是保证软件符合产品说明书的过程;验证是保证软件满足用户要求的过程。两者不等价,通过确认过程的产品不一定能通过验证。
15. 什么是通过性测试?什么是失效性测试?在软件测试工作中应当先做哪一种?
通过性测试时确认软件至少能做什么,而不会考验其能力,软件测试员不需要想尽办法来使软件崩溃,仅仅运用最简单、最直观的测试用例;失效性测试是确信软件能够正确运行之后,采用各种方法来搞垮软件,使其崩溃。测试时应当先做通过性测试。