试题6(2005年上半年试题23)
关于白盒测试,以下叙述正确的是 (23) 。
(23)A.根据程序的内部结构进行测试
B.从顶部开始往下逐个模块地加入测试
C.从底部开始往上逐个模块地加入测试
D.按照程序规格说明书对程序的功能进行测试,不考虑其内部结构
试题6分析
软件测试的工作量约占软件开发总工作量的40%以上,其目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷,并改正软件中的错误。测试的过程大致是:
(1)设计测试用数据(称为测试用例);
(2)执行程序;
(3)分析结果找出错误并改正。
这个过程可能会有反复。测试用例的设计是测试的重要环节,设计测试用例的目标是选用少量高效的测试用例尽可能多地发现软件中的问题。
测试的关键是测试用例的设计,设计方法可分成两类,分别是白盒测试和黑盒测试。
(1)白盒测试:把程序看成是装在一只透明的盒子里,测试者完全了解程序的结构和处理过程。白盒测试根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作,白盒测试的具体方法主要是逻辑覆盖,由于覆盖的详尽程度不同,逻辑覆盖由弱到强又分为语句覆盖、判定覆盖、条件覆盖、条件组合覆盖和路径覆盖等。
(2)黑盒测试:把程序看成是装在一只不透明的盒子里,测试者完全不了解(或不考虑)程序的结构和处理过程。黑盒测试根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。黑盒测试方法具体有等价类划分、边界值分析、错误推测和因果图等,其中最常用的是等价类划分和边界值分析。
软件测试的主要步骤有单元测试(模块测试)、集成测试(组装测试)、系统测试和确认测试(验收测试)。
(1)单元测试:通常在编码阶段进行,主要用来发现编码和详细设计中产生的错误,一般采用白盒测试。
(2)集成测试:对由各模块组装而成的模块进行测试,主要检查模块间的接口和通信。集成测试主要用来发现设计阶段产生的错误,通常采用黑盒测试。
(3)系统测试:把软件放在实际的硬件和网络环境中进行测试,主要测试软件的非功能需求和质量属性是否得到满足。系统测试通常采用黑盒测试。
(4)确认测试:检查软件的功能、性能和其他特征是否与用户的需求一致,它是以需求规格说明书作为依据的测试,通常采用黑盒测试。
在确认测试时,如果一个软件是为某个客户定制的,那么由客户实施验收测试,以便确认该软件是他所需要的。但是,对于那些作为产品被众多客户使用的软件,就不可能为每个客户做验收测试。大多数软件生产商使用一种α测试和β测试的过程。
(1)α测试:在开发者的现场由客户来实施的,被测试的软件是在开发者从用户的角度进行常规设置的环境下运行的。
(2)β测试:在一个或多个客户的现场由该软件的最终用户实施的。与α测试不同的是,进行β测试时开发者通常是不在场的。
从使用的工具来看,软件测试的方法又可分为静态测试、动态测试。
(1)静态测试:指人工评审软件文档或程序,借以发现其中的错误,由于评审的文档或程序不必运行,所以称为静态测试。人工评审的手续虽然比较简单,但事实证明这是一个相当有效的检验手段。由于评审人员的能力有限,静态测试显然不可能发现所有的错误。
(2)动态测试:指通常的上机测试,这种方法是使程序有控制地运行,并从多种角度观察程序的行为,以发现其中的错误。
在软件维护阶段,当修改软件后,除了对修改部分的软件进行常规的测试外,还应对软件的其他部分进行回归测试,所谓回归测试是指全部或部分地重复已做过的测试,它主要检查软件的修改是否在软件的未修改部分引入了新的错误。
模块测试、集成测试一般以软件系统开发人员为主来测试。系统测试和验收测试,一般不能以开发人员为主来测试。这是因为系统测试是整体性的测试,而测试的根本任务是做“否定性”工作,为减少或避免开发人员的主观影响,使系统测试具有更大的客观性,一般应由开发该系统的部门外人员来承担。
试题6答案
(23)A