软件测试技术 第七章 系统测试 课后习题参考答案 - 杨胜利

                                            第七章 系统测试

1.什么是系统测试?系统测试和集成测试有什么区别?

系统测试就是将经过良好的集成测试的软件系统,作为整个计算机系统的一部分,与计算机硬件、外部设备、支持软件、数据及人员等其他系统元素结合在一起,在实际使用(运行)环境下对计算机系统进行一系列的严格测试来发现软件中的潜在缺陷,保证系统交付给用户之后能够正常使用。

系统测试不仅限于软件;系统测试不能省略。

2.功能测试的主要工作内容有哪些?如何选择测试用例设计方法? 

功能测试的主要工作内容有:

(1)仔细阅读并理解需求文档或其他相关文档。

(2)整理测试需求。

(3)设计测试用例。

(4)评估测试用例覆盖率。

测试用例设计方法的选择:

(1)首先进行等价类划分。按照功能、业务规则和约束、输入条件和输出条件进行等价类划分,将无限测试变成有限测试,这是减少工作量和提高测试效率的最有效方法。

(2)在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出来的测试用例发现程序错误的能力最强,它需要与等价类划分结合进行使用。

(3)对于系统中一些逻辑关系,可以考虑用因果图和决策表进行测试用例设计。

(4)对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用其他测试方法。

3.什么是回归测试?回归测试有什么特征?

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误的一种测试方法。

回归测试具有如下特征:

(1)回归测试是指重复以前的全部或部分的相同测试。

(2)新加入测试的模组,可能对其他模组产生副作用,故需进行某些程度的回归测试。

(3)回归测试以关键性模组的测试为核心。

4.测试用例的维护主要包括哪些内容?

测试用例的维护是一个不间断的过程,通常可以将软件开发的基线作为基准,维护的主要内容包括下述几个方面。

(1)删除过时的测试用例。因为需求的改变等原因可能会使一个基线测试用例不再适合被测试系统,这些测试用例就会过时。例如,某个变量的界限发生了改变,原来针对边界值的测试就无法完成对新边界测试。所以,在软件的每次修改后都应进行相应的过时测试用例的删除。

(2)改进不受控制的测试用例。随着软件项目的进展,测试用例库中的用例会不断增加,其中会出现一些对输入或运行状态十分敏感的测试用例。这些测试不容易重复且结果难以控制,会影响回归测试的效率,需要进行改进,使其达到可重复和可控制的要求。

(3)删除冗余的测试用例。如果存在两个或者更多个测试用例针对一组相同的输入和输出进行测试,那么这些测试用例是冗余的。冗余测试用例的存在降低了回归测试的效率,所以需要定期地整理测试用例库,并将冗余的用例删除掉。

(4)增添新的测试用例。如果某个程序段、构件或关键的接口在现有的测试中没有被测试,那么应该开发新测试用例重新对其进行测试,并将新开发的测试用例合并到基线测试包中。

5.常用的选择回归测试的方式有哪些?

(1)再测试全部用例。选择基线测试用例库中的全部测试用例组成回归测试包。这是一种比较安全的方法,再测试全部用例具有最低的遗漏回归错误的风险,但测试成本最高。全部再测试几乎可以应用到任何情况下,基本上不需要进行分析和重新开发,但是随着开发工作的进展,测试用例不断增多,重复原先所有的测试带来的工作量往往超出了我们的预算和进度。

(2)基于风险选择测试。基于一定的风险标准从基线测试用例库中选择回归测试包。首先运行最重要的、关键的和可疑的测试,而跳过那些非关键的、优先级别低的或者高稳定的测试用例,这些用例即便可能测试到缺陷,其严重性也是靠后的、次要的。

(3)基于操作剖面选择测试。如果基线测试用例库的测试用例是基于软件操作剖面开发的,测试用例的分布情况反映了系统的实际使用情况。回归测试所使用的测试用例个数可以由测试预算确定,回归测试可以优先选择那些针对最重要或最频繁使用功能的测试用例,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障。这种方法可以在一个给定的预算下最有效地提高系统可靠性,但实施起来有一定的难度。

(4)再测试修改的部分。当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。通常,一个回归错误一定涉及一个新的、修改的或删除的代码段。在允许的条件下,回归测试尽可能覆盖受到影响的部分。

6.性能测试包括哪些类型?

(1)争用测试:核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求处理是否可以接受。

(2)性能配置:核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。

(3)负载测试:核实在保持配置不变的情况下,测试对象在不同操作条件(如不同用户数、事务数等)下性能行为的可接受性。

(4)强度测试:核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。

(5)容量测试:核实测试用户同时使用软件程序的最大数量。

压力测试 是指持续不断地给被测系统增加压力,直至被测系统不能正常工作,以确定系统能承受的最大压力;压力测试应注意累积效应问题。

负载测试 通常是让被测系统在其能忍受的压力极限范围内(或临界状态下)连续运行,来测试系统的稳定性;目的是找到系统的处理极限,为系统调优提供依据;负载测试侧重于压力持续的时间,压力测试则更加强调施加压力的大小。

可靠性测试 是在给被测系统加载一定业务压力的情况下,使系统运行一段时间,以此来测试系统是否稳定;通常采用24×7(24小时×7天)的方式来连续运行系统,一般采用平均无故障时间 (Mean Time Between Failure,MTBF)来衡量被测系统的可靠性。该值越大,系统越稳定。

大数据量测试 针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力测试、负载测试、疲劳测试等并发测试相结合的极限状态下的综合数据量测试。

7.简述性能测试的基本过程。

1)制定目标和分析系统

2)选择测试度量的方法

3)相关技术和工具的学习

4)制定评估标准

5)设计测试用例

6)运行测试用例

7)分析测试结果

8.压力测试和容量测试有什么不同?

(1)压力测试是在给系统不断加压,增加并发量,直到崩溃,找到系统所能承受的极限值。(2)容量测试是在预先分析的极限值下,系统能否正常运行。                                                             

9.目前主要的安全性测试方法有哪些?

(1)静态的代码安全测试

(2)动态的渗透测试

(3)程序数据扫描

10.什么是正向测试和反向测试?二者有什么区别?

反向测试过程是从缺陷空间出发,建立缺陷威胁模型,通过威胁模型来寻找入侵点,对入侵点进行已知漏洞的扫描测试。

为了规避反向设计原则所带来的测试不完备性,需要一种正向的测试方法来对软件进行比较完备的测试,使测试过的软件能够预防未知的攻击手段和方法。

区别:

正向测试过程是以测试空间为依据寻找缺陷和漏洞.

反向测试过程则是以已知的缺陷空间为依据去寻找软件中是否会发生同样的缺陷和漏洞,两者各有其优缺点。

11.常见的软件安全性缺陷和漏洞有哪些?

(1)缓冲区溢出

(2)加密弱点

(3)错误处理

(4)权限过大

12.兼容性测试一般包括哪些内容?

(1)测试软件是否能在不同的操作系统平台上兼容,或测试软件是否能在同一操作平台的不同版本上兼容。

(2)软件本身能否向前或向后兼容。

(3)测试软件能否与其他相关的软件兼容。

(4)数据兼容性测试,主要是指数据能否共享等。

13.兼容性测试主要可以分为哪几类?

(1)软件兼容性测试:测试平台的兼容性、应用软件的兼容性以及浏览器的兼容性。

(2)硬件兼容性测试:测试整机的兼容性、板卡和外设的兼容性。

(3)数据共享兼容性测试:测试数据格式的兼容性、数据库的兼容性以及其他数据兼容性。

14.可靠性测试有什么特点?

第一,软件失效是由设计缺陷造成的,其输入数据决定了是否会遇到软件内部存在的故障,所以,软件可靠性测试强调按实际使用的概率分布随机选择输入数据,并强调测试需求的覆盖度。因此,软件可靠性测试实例的采样策略与一般的功能测试不同,它必须按照使用的概率分布,随机地选择测试实例,这样才能得到比较准确的可靠性评估,也有利于找出对软件可靠性影响较大的故障。

第二,在软件可靠性测试过程中,要比较准确地记录软件的运行时间,其输入覆盖一个般也要大于普通软件功能测试的要求。

第三,软件可靠性测试对使用环境的覆盖比一般软件测试的要求高,测试时应覆盖所有可能影响程序运行方式的物理环境。尤其是一些特殊的软件,如容错软件、实时嵌入式软件等,其中对意外情况的处理,在一般的使用环境下很难进行有针对性的测试,这时常常需要有多种测试环境。

15.可靠性测试有哪些方式?

(1)组件压力测试

(2)集中压力测试

(3)真实环境测试

(4)随机破坏测试

你可能感兴趣的:(软件测试,单元测试,junit)