《软件测试面试题带复习资料.docx》由会员分享,可在线阅读,更多相关《软件测试面试题带复习资料.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、企业面试题试卷 测试基础 附带答案 软件测试 1. 试述软件的概念与特点?软件复用的含义?构件包括哪些?2. 瀑布模型与螺旋模型的主要区别是什么?3. 软件生存周期及其模型是什么?4. 什么是软件测试?软件测试的目的及原则5. 净室软件工程的策略是什么?6. 软件配置管理的作用?软件配置包括什么?7. 什么是软件质量?软件包是什么?8. 目前主要的测试用例设计方法是什么?9. 软件的安全性应从哪几个方面去测试?1、 答案如下:a) 软件是计算机系统中及硬件相互依存的另一部分,它是包括程序、文档的完整集合。b) 软件复用(Software Reuse)是将已有软件的各种有关知识用于建立新的软件,
2、以缩减软件开发与维护的花费。软件复用是提高软件生产力与质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码与文档等一切有关方面。c) 可以被复用的软件成分一般称作可复用构件2、 答案如下:a) 参照TP书上第六章45/46页的讲解,参考一下书上的说法进行对比即可。考虑弹性、风险、成本,等几个方面。3、 答案如下:a) 软件生存周期是软件开发全部过程、活动与任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。b) 在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护
3、阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为”生命周期模型”(Life Cycle Model)。4、 答案如下:a) 使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果及实际结果之间的差别。b) 软件测试的目的:i. 测试是程序的执行过程,目的在于发现错误ii. 一个成功的测试用例在于发现至今未发现的错误iii. 一个成功的测试是发现了至今未发现的错误的测试iv. 确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。v. 确保产品满足性能与效率的要求vi. 确保产品是健壮的与适应用户环境的c) 软件测
4、试的原则:教材的说法:i. 软件测试应尽早执行,并贯穿于整个软件生命周期ii. 软件测试应追溯需求iii. 测试应由第三方来构造iv. 穷举测试是不可能的,要遵循Good-enough原则v. 必须确定预期输出(或结果)vi. 必须彻底检查每个测试结果vii. 充分注意测试中的群集现象viii. 缺陷的二八定理ix. 严格执行测试计划,排除测试的随意性x. 注意合法合理的输入,也要注意非法的非预期的输入xi. 检查程序是否是否做了不该做的xii. 测试应从“小规模”开始,逐步转向“大规模”xiii. 反复使用同样的测试会使软件具有抵抗力xiv. 关注缺陷的修复另一种说法:i. 应当把“尽早与不
5、断地测试”作为开发者的座右铭。ii. 程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。iii. 设计测试用例时,应该考虑到合法的输入与不合法的输入,以及各种边界条件,特殊情况下要制造极端状态与意外状态,比如网络异常中断、电源断电等情况。iv. 一定要注意测试中的错误集中发生现象,这与程序员的编程水平与习惯有很大的关系。v. 对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论与分析。vi. 制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。vii. 回归测试的关
6、联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。viii. 妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。5、 答案如下:a) 增量计划。开发一个采用增量策略的项目计划,建立每个增量的功能、它的项目大小、以及净室开发进度表。必须特别小心以保证通过认证的增量将被定时集成。b) 需求收集。使用类似于在第11 章引入的技术,为每个增量开发一个客户级需求的更详细的描述。c) 盒结构规约。使用一个运用盒结构的规约方法HEV93来描述功能规约。遵从操作分析原则,盒结构“在每一个精化级别上分离与分开行为、数据及过程的创造性定义”。d) 形式化设计。使用盒结
7、构方法,净室设计是规约的自然的无缝的扩展。虽然,在两个活动间可进行清楚的区分,但是,规约(称为“黑盒”)是被递进地求精(在一个增量内)以成为类似于体系结构的与过程的设计(分别称为“状态盒”与“清晰盒”)。e) 正确性验证。净室小组对设计及代码进行一系列严格的正确性验证活动。验证从最高层次的盒结构(规约)开始,然后移向设计细节与代码。正确性验证的第一层次通过应用一组“正确性问题”LIN88来进行,如果这没有证明规约是正确的,则使用更形式化的(数过学的)验证方法。f) 代码生成、检查与验证。以某种专门语言表示的盒结构规约被转换为合适的程序设计语言。然后,使用标准的走查或检查技术(第8 章)来保证代
8、码与盒结构的语义相符性,以及代码的语法正确性。然后,对源代码进行正确性验证。g) 统计性测试计划。分析软件的项目级使用情况,计划与设计一组执行用途的“概率分布”的测试用例(25.4 节)。如图251 所示,这个净室活动是与规约、验证及代码生成并行进行的。h) 统计性使用测试。记住,对计算机软件进行彻底测试是不可能的,因此,总需要设计有限数量的测试用例。统计性使用技术POO88执行一系列由特定对象的所有用户的所有可能的程序执行的统计样本(上面提到的概率分布)所导出的测试。认证。一旦完成验证、检查与使用测试(并且所有错误被修正),则开始进行增量集成前的认证工作。6、 答案如下:a) 软件配置管理作
9、为软件开发过程的必要环节与软件开发管理的基础,贯穿整个软件生命周期,同时对软件开发过程的宏观管理即项目管理也有重要的支持作用。一个软件开发组织真正有效的实施软件配置管理,将会使软件开发过程有更好的可预测性,使系统具有可重复性,大大提高软件组织的竞争力。b) 软件配置包括如下内容:i. 配置项识别ii. 工作空间管理iii. 版本控制iv. 变更控制v. 状态报告vi. 配置审计7、 答案如下:a) 简单的说:软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。比较长的说法:现代质量管理认为,质量是客户要求或者期望的有关产品或者服务的一组特性,落实到软件上,这些特性可以是软件的功能、性能
10、与安全性等等。这些特性决定了软件产品保证客户满意的能力,并且,这些特性应该是可以度量的。我们还可以从另一个角度,即软件产品是如何生产出来的,来间接的推断软件质量。我们称之为软件的流程质量,以有别于前面所说的软件产品质量。所谓流程,我们可以将其理解为一个活动序列与及此相关的输入、输出、约束条件、实现方法、辅助工具等等因素共同组成的系统。ISO9001 与SW-CMM 都主要是从流程角度来探讨软件质量与质量改进的。当然,我们还能从其它角度,比如软件的生产者-人的素质,来诠释软件质量,但不管怎样,软件的产品质量是最终的检验标准,而最终的检验者就是客户。从这个意义上说,软件质量就是客户满意度。b) 软
11、件包(Software Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包与系统软件包两大类。应用软件包及特定的应用领域有关,又可分为通用包及专用包两类。通用软件包根据社会的一些共同需求开发,专用软件包则是生产者根据用户的具体需求定制的,可以为适合其特殊需要进行修改或变更。8、 答案如下:a) 白盒测试:i. 逻辑覆盖ii. 循环覆盖iii. 基本路径覆盖b) 黑盒测试:i. 边界值分析法ii. 等价类划分iii. 错误猜测法iv. 因果图法v. 状态图法vi. 测试大纲法vii. 随机测试viii. 场景法9、 答案如下:软件安全性测试包括程序、数据库
12、安全性测试。根据系统安全指标不同测试策略也不同。a) 用户认证安全的测试要考虑问题:i. 明确区分系统中不同用户权限ii. 系统中会不会出现用户冲突iii. 系统会不会因用户的权限的改变造成混乱iv. 用户登陆密码是否是可见、可复制v. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)vi. 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统b) 系统网络安全的测试要考虑问题i. 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上ii. 模拟非授权攻击,看防护系统是否坚固iii. 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻
13、击工具攻击试一下,现在最常用的是 NBSI 系列与 IPhacker IP )iv. 采用各种木马检查工具检查系统木马情况v. 采用各种防外挂工具检查系统各组程序的外挂漏洞c) 数据库安全考虑问题:i. 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)ii. 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)iii. 系统数据可管理性iv. 系统数据的独立性v. 系统数据可备份与恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)1. 试述软件的概念与特点?软件复用的含义?构件包括哪些?2. 瀑布模型与螺
14、旋模型的主要区别是什么?3. 软件生存周期及其模型是什么?4. 什么是软件测试?软件测试的目的及原则5. 净室软件工程的策略是什么?6. 软件配置管理的作用?软件配置包括什么?7. 什么是软件质量?软件包是什么?8. 目前主要的测试用例设计方法是什么?9. 软件的安全性应从哪几个方面去测试?1、 答案如下:a) 软件是计算机系统中及硬件相互依存的另一部分,它是包括程序、文档的完整集合。b) 软件复用(Software Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发与维护的花费。软件复用是提高软件生产力与质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指
15、程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码与文档等一切有关方面。c) 可以被复用的软件成分一般称作可复用构件2、 答案如下:a) 参照TP书上第六章45/46页的讲解,参考一下书上的说法进行对比即可。考虑弹性、风险、成本,等几个方面。3、 答案如下:a) 软件生存周期是软件开发全部过程、活动与任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。b) 在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为”生命周期模型”(Life Cycle Model)。4、
16、答案如下:a) 使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果及实际结果之间的差别。b) 软件测试的目的:i. 测试是程序的执行过程,目的在于发现错误ii. 一个成功的测试用例在于发现至今未发现的错误iii. 一个成功的测试是发现了至今未发现的错误的测试iv. 确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。v. 确保产品满足性能与效率的要求vi. 确保产品是健壮的与适应用户环境的c) 软件测试的原则:教材的说法:i. 软件测试应尽早执行,并贯穿于整个软件生命周期ii. 软件测试应追溯需求iii. 测试应由第三方
17、来构造iv. 穷举测试是不可能的,要遵循Good-enough原则v. 必须确定预期输出(或结果)vi. 必须彻底检查每个测试结果vii. 充分注意测试中的群集现象viii. 缺陷的二八定理ix. 严格执行测试计划,排除测试的随意性x. 注意合法合理的输入,也要注意非法的非预期的输入xi. 检查程序是否是否做了不该做的xii. 测试应从“小规模”开始,逐步转向“大规模”xiii. 反复使用同样的测试会使软件具有抵抗力xiv. 关注缺陷的修复另一种说法:i. 应当把“尽早与不断地测试”作为开发者的座右铭。ii. 程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。iii.
18、 设计测试用例时,应该考虑到合法的输入与不合法的输入,以及各种边界条件,特殊情况下要制造极端状态与意外状态,比如网络异常中断、电源断电等情况。iv. 一定要注意测试中的错误集中发生现象,这与程序员的编程水平与习惯有很大的关系。v. 对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论与分析。vi. 制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。vii. 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。viii. 妥善保存一切测试过程文档,意义是不言而
19、喻的,测试的重现性往往要靠测试文档。5、 答案如下:a) 增量计划。开发一个采用增量策略的项目计划,建立每个增量的功能、它的项目大小、以及净室开发进度表。必须特别小心以保证通过认证的增量将被定时集成。b) 需求收集。使用类似于在第11 章引入的技术,为每个增量开发一个客户级需求的更详细的描述。c) 盒结构规约。使用一个运用盒结构的规约方法HEV93来描述功能规约。遵从操作分析原则,盒结构“在每一个精化级别上分离与分开行为、数据及过程的创造性定义”。d) 形式化设计。使用盒结构方法,净室设计是规约的自然的无缝的扩展。虽然,在两个活动间可进行清楚的区分,但是,规约(称为“黑盒”)是被递进地求精(在
20、一个增量内)以成为类似于体系结构的与过程的设计(分别称为“状态盒”与“清晰盒”)。e) 正确性验证。净室小组对设计及代码进行一系列严格的正确性验证活动。验证从最高层次的盒结构(规约)开始,然后移向设计细节与代码。正确性验证的第一层次通过应用一组“正确性问题”LIN88来进行,如果这没有证明规约是正确的,则使用更形式化的(数过学的)验证方法。f) 代码生成、检查与验证。以某种专门语言表示的盒结构规约被转换为合适的程序设计语言。然后,使用标准的走查或检查技术(第8 章)来保证代码与盒结构的语义相符性,以及代码的语法正确性。然后,对源代码进行正确性验证。g) 统计性测试计划。分析软件的项目级使用情况
21、,计划与设计一组执行用途的“概率分布”的测试用例(25.4 节)。如图251 所示,这个净室活动是与规约、验证及代码生成并行进行的。h) 统计性使用测试。记住,对计算机软件进行彻底测试是不可能的,因此,总需要设计有限数量的测试用例。统计性使用技术POO88执行一系列由特定对象的所有用户的所有可能的程序执行的统计样本(上面提到的概率分布)所导出的测试。认证。一旦完成验证、检查与使用测试(并且所有错误被修正),则开始进行增量集成前的认证工作。6、 答案如下:a) 软件配置管理作为软件开发过程的必要环节与软件开发管理的基础,贯穿整个软件生命周期,同时对软件开发过程的宏观管理即项目管理也有重要的支持作
22、用。一个软件开发组织真正有效的实施软件配置管理,将会使软件开发过程有更好的可预测性,使系统具有可重复性,大大提高软件组织的竞争力。b) 软件配置包括如下内容:i. 配置项识别ii. 工作空间管理iii. 版本控制iv. 变更控制v. 状态报告vi. 配置审计7、 答案如下:a) 简单的说:软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。比较长的说法:现代质量管理认为,质量是客户要求或者期望的有关产品或者服务的一组特性,落实到软件上,这些特性可以是软件的功能、性能与安全性等等。这些特性决定了软件产品保证客户满意的能力,并且,这些特性应该是可以度量的。我们还可以从另一个角度,即软件产品
23、是如何生产出来的,来间接的推断软件质量。我们称之为软件的流程质量,以有别于前面所说的软件产品质量。所谓流程,我们可以将其理解为一个活动序列与及此相关的输入、输出、约束条件、实现方法、辅助工具等等因素共同组成的系统。ISO9001 与SW-CMM 都主要是从流程角度来探讨软件质量与质量改进的。当然,我们还能从其它角度,比如软件的生产者-人的素质,来诠释软件质量,但不管怎样,软件的产品质量是最终的检验标准,而最终的检验者就是客户。从这个意义上说,软件质量就是客户满意度。b) 软件包(Software Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包与系统软
24、件包两大类。应用软件包及特定的应用领域有关,又可分为通用包及专用包两类。通用软件包根据社会的一些共同需求开发,专用软件包则是生产者根据用户的具体需求定制的,可以为适合其特殊需要进行修改或变更。8、 答案如下:a) 白盒测试:i. 逻辑覆盖ii. 循环覆盖iii. 基本路径覆盖b) 黑盒测试:i. 边界值分析法ii. 等价类划分iii. 错误猜测法iv. 因果图法v. 状态图法vi. 测试大纲法vii. 随机测试viii. 场景法9、 答案如下:软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。a) 用户认证安全的测试要考虑问题:i. 明确区分系统中不同用户权限ii.
25、 系统中会不会出现用户冲突iii. 系统会不会因用户的权限的改变造成混乱iv. 用户登陆密码是否是可见、可复制v. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)vi. 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统b) 系统网络安全的测试要考虑问题i. 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上ii. 模拟非授权攻击,看防护系统是否坚固iii. 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列与 IPhacker IP )iv. 采用各种木马检查工具检查系统木马情况v. 采用各种防外挂工具检查系统各组程序的外挂漏洞c) 数据库安全考虑问题:i. 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)ii. 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)iii. 系统数据可管理性iv. 系统数据的独立性v. 系统数据可备份与恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
限制150内