1、 1 渤 海 大 学 软件测试方法和技术 报告 题目: SourceMonitor软件测试 院 (系): 信息科学与技术学院 专业班级: 计算机 09级 1班 学 号: 09060006 学生姓名: 承复明 指导教师: 鄂旭 教师职称: 教授 2 目录 第一章、软件测评的意义 . 3 一、软件测评技术的发展背景 . 3 二、软件测评技术的发展历程 . 3 第二章、测试软件的安装 . 8 一、总体介绍 . 8 二、 C 语言度量值 (C Metrics) . 8 三、度量值的呈现样式 . 9 13.查看 Kiviat Graph。右击此行 (上面的 LogManager.cpp 行 )选择 Di
2、splay File Metrics Kiviat Graph。说明:所有的红星或红加号在绿色区域内符合标准。图示如下: . 15 第三章、软件测试过程 . 16 一、软件测试概述 . 16 二、识别缺陷 . 19 三、 管理缺陷报告 . 21 四、 软件开发过程和测试流程 . 23 五、 系统测试与软件测试分类 . 28 六、编写测试用例和测试计划 . 31 七、需求分析和评审 . 32 八、总结报告与团队组织 . 36 九、正确理解软件测试 . 37 第四章、总结 . 39 一、 测试的分类 . 39 二、 BUG 的定义 . 42 第五章、参考文献 . 42 3 第一章、 软件测评的意义
3、 一、软件测评技术的发展背景 随着软、硬件技术的发展计算机的应用领域越来越广,而其中软件的功能也越来越强大,软件也越来越复杂。这就使保证软件的质量,保证软件的高度可靠性,面临巨大的挑战。特别是诸如通讯、交通、金融、医疗、军事、航空航天等行业,软件的微小瑕疵就可能造成对生命安全、天文数字的巨额财产、甚至对国家安全严重威胁。 因此,对软件产品质量的度量、评估和保证,成了用户和项目承揽公司都十分关注的问题。基于这些原因,国际上的标准化和认证组织已经制定出了一些软件标准(在 ISO-9001 以及 SEICMM 框架中)。对于软件的开发过程可通过这些标 准进行约束和度量。 软件测试属于软件工程范畴,研
4、究范围包括: 1. 测试基本概念和定义 -包括测试术语、理论基础等; 2. 测试层次 -如单元 /集成 /系统测试;或验收 /回归测试等; 3. 测试技术 -如黑盒 /白盒测试;或基于错误 /风险测试等; 4. 测试度量 -包括对于测试工作自身和被测试程序的度量; 5. 管理测试过程 -包括宏观管理层面和具体的测试活动。 二、软件测评技术的发展历程 随着软件测试理论及应用研究工作的不断深入,软件测试的社会分工也经历了如下发展历程: 1. 70 年代以前, Ad-hoc testing,与调试没有区分; 2. 70 年代末 80年代中期,测试基础理论和实用技术形成,测试作为软件质量保证( SQA
5、)的主要职能; 3. 80年代末 90年代中期,测试工具在质量和数量上不断增长,测试与 SQA(注重于过程和质量监督)分离。注重于工具对测试效率的影响; SQA为另一专业领域 4. 90 年后期 目前,关注有效的过程管理对于软件测试的重要性,形成各种测试模型、测试能力成熟度模型。 三、目前国内软件测评技术的发展情况 随着软件测试分工的细化和成熟,软件企业注重于自身核心竞争力的提升,促使大 量的独立软件测试服务机构涌现出来,这些测试服务机构运作机制日趋成熟,从单一的第三方认证评测,逐步转向参与整个软件开发过程的测试服务,并按照4 软件领域形成市场细分,已经形成一个成熟和广阔的市场区间。可以认为,
6、这种情况在一定程度上反映了目前国内软件业可能面临的变革。 在当前的软件开发行业,包括嵌入式系统的开发中 ,由于对系统功能要求越来越多 ,使用的 CPU 功能越来越强大 ,对应的软件也越来越复杂 ,代码量急剧增加 (一般一个单版程序都要几万到几十万行 ),而另一方面 ,软件,尤其是嵌入式系统的软件往往应用在对产品质量要求非常严 格的领域。仅仅就在深圳市存量最大的通讯行业,国内外同行业的竞争越演越烈,而我们国家以及我市的软件企业不同程度的存在开发体系不规范,过程控制不科学,软件测试盲目性,软件质量不稳定的问题。对软件质量的控制时我们的薄弱环节,特别是对底层的嵌入式系统软件的测试还没有一套完善的科学
7、的方案。国内的一些专家也多次提到,目前国内产品与国外产品的主要是在可靠性和稳定性上有一定的差距。随着加入 WTO 的临近,一场恶战即将展开,而市场对产品质量的要求必将越来越高,为了在残酷的竞争中获胜,就必须满足市场的要求,对产品的质量,从产品研 发的各个环节进行严格的控制,形成以用户需求(应做什么)和产品质量(不应做什么)为核心的软件产品研发体系。 软件评测中心的发展方向软件评测中心的成立,可以发展成为集软件第三方评测、设备租赁、软件开发技术资源库、通用软件设计平台的提供、测试技术咨询,测试体系构建的指导,软件工程技术研究为一体的组织机构 . 之所以我们需要建立一个具备综合服务能力的软件评测中
8、心的原因,主要有以下几点: l 软件开发过程质量保证的要求。 l 软件企业现实的需求。 1. 第三方评测多年来,作为政府的职能部门,我们对企业生产的产品的质量 控制多停留在以硬件为主,软件为辅的阶段,即便是对一些在主机平台上运行的软件,也多停留在对功能进行检验上 ,问题的关键在于对企业开发的软件缺乏行之有效的检测、管理的手段和工具,进而造成许多不合格的产品流向市场。面对市场的压力,现在产品推向市场的时间越来越短,产品尽快上市的压力,要求大大压缩产品的研发时间,在通常的情况下,企业因为精力、人员、资金、设备的不足,常常放弃软件产品的测试;而与此同时,在实际应用中,用户复杂的应用要求,使我们开发出
9、的软件越来越复杂,软件中一定存在着错误,软件的质量控制面临着相当严峻的挑战 。而嵌入式软件、工业应用软件因为实时性要求高,又常用于一些关键性任务的控制管理,所以,由它产生的错误往往会导致无可挽回的、5 致命的损失! 面对这种局面, 作为一家中立的第三方评测机构,更需要本着对国家负责,对社会负责,对任命负责的严谨态度,采用先进的技术、方法和工具,把好产品上市的质量关。 2. 设备租赁对软件开发而言,一般所谓的 “质量保证 ”是指在产品完成后对其进行测试和检查,但实际上这能 “保证 ”什么呢?当然, 作为国家授权的软件质量验证单位,在适当授权下可以确保不让不合格产品出厂,然而这样却不能能够保证最初
10、制 造的产品就是一个合格产品,这一做法背后的理论是开发人员最终会懂得应该开发合格的产品,并将切实应用并改变他们的工作方法。然而,因为我国软件行业独特的发展特点,大多数的软件开发企业没有软件质量控制的观念,或者即便意识到了软件质量控制的重要性,但也不知如何开展,或者无实力开展。这样,造成软件开发的过程不规范,软件开发更多是一种个体的行为,无法做到组织的管理,质量无法重复,时间无法控制,项目无法得到持续不断的优化。最终造成在确认性测试之前,没有对各开发阶段的中间产品进行完善的验证,也会造成最终的软件测试难以执行或者 没有效果。 每个产品都会有缺陷,在开发过程中应争取尽早发现缺陷,开发的时候提高软件
11、质量要远比开发完成后再进行测试更为有效。验证和确认技术要求整个产品开发周期中,能确保所制造的是正确的产品,同时产品是 在按正确的方法制造。问题发现得越早,解决问题的代价就越小。 可以看出,尽早的开始测试,可以降低测试和修改错误的费用,提早发现绝大多数的在影响系统级运行的错误,有效的防止它们的恶性膨胀。您可以通过软件开发人员,使用适当的静态分析工具,代码检查工具,单元测试工具,辅助开发人员开发健壮的高质量的代码,预防尽可能多的错误以 及尽早发现和改正错误,尽早消灭错误,防止错误和费用的指数增长。这样,最初的测试常常把焦点放在单个程序模块上,进一步的测试重点转向模块的集成,最后在整个系统中寻找错误
12、。这也是软件测试的常用策略。 时间 代码行 错误控制工作对错误数量的影响 这样的测试要求,使得测试的工作在软件的开发和测试人员来协作进行。对于软件测试,在单元和部分的集成阶段的测试是极其重要的,并且以上测试的完备程度,直接影响系统测试和确认性测试的效果和可行性;同时第三方的软件测试人员因为软件产品版权和时间的问题,也很难实施对软件的单元测试和部分 集成测试。为了充分发挥第三方评测机构的作用,切实的提高软件企业的综合竞争实力,提6 高上市软件产品的质量,所以我们针对软件测试的某些阶段,提出开展工具的租赁服务,软件评测中心的任务重点放在对测试报告的检查和抽样上。这样,一方面解决了企业的资金问题,提
13、高了资源的利用率;另一方面,使软件的质量、测试融入产品中去,融入整个产品开发周期中去,确保所制造的是正确的产品,同时产品是在按正确的方法制造,提高企业的质量管理、项目管理的水平,扶植一批符合 CMM 高级别开发水平要求的企业,使我们软件企业在数量和质量上有个显著的提高。 3. 测试技术咨询通过上节的分析,我们看到,通过将软件测试融入到整个产品开发周期中,可以确保所制造的是正确的产品,同时产品是在按正确的方法制造。测试是需要的,但测试的产品在最初制造时就必需达到一定的质量水平,特别当产品是某种嵌入式系统时更是如此,质量必需设计在软件中。但如何判定质量在最初是否融入到设计中了呢?一个重要的思路就是
14、要在整个产品开发周期中始终注重质量,从提出要求直到第一个产品发运的整个过程。要想在软件开发的每个阶段都注重质量,需要有一个流程进行管理,大多数软件流程改进模型 (像CMM 和 ISO 9000)都认为有效和正确的流程必然会导致生产出高质量软件。正确的软件开发流程中的质量控制行为分为评审、检查、验证、确认 。不但如此,即使是软件的测试工作,我们通常认为测试是在软件己编写完成后进行的。显然不能测试不存在的东西。这种观点假设测试仅仅指测试执行。当然没有软件运行测试不可能执行。但需要指出的是,测试活动不仅仅包括运行测试本身。附图 1。软件开发的 V 模型说明了何时应进行测试。 V 模型指出每个开发活动
15、都有相应的测试活动。每一层的测试检验都对应于相应的开发活动。成功应用 V 模型的关键因素是设计测试事例的时机。无 论在哪个阶段的测试设计的目标都是发现缺陷。例如,设计验收测试事例应发现需求的缺陷,设计系统测试事例应发现功能说明的缺陷,设计集成测试事例应发现设计的缺陷,设计单元测试事例应发现编码的缺陷。测试设计不能等到测试运行的时候才进行;测试设计可以在获得所需要的信息后的任何时候开始。这样发现缺陷的效果较好,而且对系统来说不是破坏性的,因为在软件进行下一阶段前可以将缺陷改正。 而要做到以上这些工作,我们除了要给用户提供代理测试和设备租赁服务以外,还需要通过广泛的培训和咨询服务才可以做到。 7
16、4. 软件开发技术资源库软件的 开发和测试工作,有许多可以借鉴的经验。在国外,通过多年的开发实践,总结出许多行之有效的编程的规则和方法,嵌入式系统软件开发中,还有许多器件驱动程序和板级支持封装 (BSP)都是可复用。软件评测中心通过中心的组织和协调作用,可以组织相关企业提供错误现象,分析错误原因,不但可以大力引进国外的现有的编码规则,还可以根据现实错误编制新的编码规则,形成深圳市特有的知识库,吸引软件企业来深,筑巢引凤。还可以为广大的中小企业提供可复用的代码 IP 库,形成规模优势。 同时,软件测试也需要测试标准。从理论上讲,我们可以基于概率论 和软件可靠性理论建立一种模型,用来描述软件的故障
17、率(执行时间的函数)。当软件的故障率低于一个可以接受的程度时,我们就认为测试可以结束了。在测试中不可能穷举所有的路径,但充分覆盖程序逻辑,并确保软件的所有条件都至少执行一次,是有可能的,在现实中是很难实现的。我们需要针对不同的测试阶段,定一个标准来决定什么时候可以停止测试,发行产品了。这是一种权衡投入产出比的原则,测试既不要不充分,也不要过分。不充分和过分都是一种不负责任的表现。 Zero-bug 是一种理想,Good-enough 是我们的原则。建立标准,也是我 们可以为企业所做的贡献。 5. 通用软件设计平台在软件开发领域中,有相当一部分工具软件,对无论何种规模的软件企业都可以起到巨大的帮
18、助,但因为诸如价格的因素、使用维护的难度、使用的频率,造成了在中小企业无法使用,障碍了软件企业产品质量的改善、生产效率的提高和规模的扩大,例如版本管理软件、器件驱动程序开发环境 (3DE)、虚拟建模工具等。 我们软件评测中心可以发挥面向社会的优势,为我市提供统一的产品开发工具和管理平台,采用网络访问和设备租赁等多种形式,服务于社会,服务于企业。 6. 测试体系构建的指导软件测试, 是一门需要专业技术和经验积累的行业,而对于我们软件企业的现实,也正处于逐步重视软件测试,有缺乏专业基础知识的阶段。作为专业的软件测试部门,我们有能力为广大软件企业提供他们所需要的服务。 7. 软件工程技术研究软件质量
19、的保证,是一个涉及软件生命周期各个方面的系统工程,它涉及项目管理,虚拟建模,错误跟踪,文档体系建设,版本管理,软件测试,产品维护等方面,建立一个完整的体系。 8 第二章、测试软件的安装 SourceMonitor 一、 总体介绍 SourceMonitor 是一款免费的软件,运行在 Windows 平台下。它可对多种语言写就的代码进行度量,包括 C、 C+、 C#、 Java、 VB、 Delphi和 HTML,并且针对不同的语言,输出不同的代码度量值。 像其他代码度量工具一样, SourceMonitor 只关注代码,并为编码人员提供及时的反馈,它不是一款项目管理工具,不关注项目实施中从功能
20、分析到设计编码,再到测试这整个过程。 二、 C 语言度量值 (C Metrics) 前面讲了那么多,还没提到代码度量的核心内容 度量值。下面以 C 语言度量值为例,看看SourceMonitor都给我们反馈了哪些信息。 总行数 (Lines):包括空行在内的代码行数; 语句数目 (Statements):在 C 语言中,语句是以分号结尾的。分支语句 if,循环语句 for、while,跳转语句 goto 都被计算在内,预处理语句 #include、 #define 和 #undef 也被计算在内,对其他的预处理语句则不作计算,在 #else 和 #endif、 #elif 和 #endif 之
21、间的语句将被忽略; 分支语句比例 (Percent Branch Statements):该值表示分支语句占语句数目的比例,这里的 “分支语句 ”指的是使程序不顺序执行的语句,包括 if、 else、 for、 while 和 switch; 注释比例 (Percent Lines with Comments):该值指示注释行(包括 /*/和 /形式的注释)占总行数的比例; 函数数目 (Functions):指示函数的数量; 平均每个函数包含的语句数目 (Average Statements per Function):总的函数语句数目除以函数数目得到该值; 函数圈复杂度 (Function
22、Complexity):圈复杂度指示一个函数可执行路径的数目,以下语句为圈复杂度的值贡献 1: if/else/for/while 语句,三元运算符语句, if/for/while 判断条件中9 的 “&“或 “|”, switch语句,后接 break/goto/ return/throw/continue 语句的 case 语句,catch/except 语句; 函数深度 (Block Depth):函数深度指示函数中分支嵌套的层数。 对其他语言, SourceMonitor输出不同的度量值,例如在 C+度量值中包括类的数目 (Classes),在 HTML中包括各个标签的数目 (HTML
23、 Tags)、超链接数目 (Hyperlinks)等。 三、 度量值 的呈现样式 SourceMonitor 从几个不同的视图层次,为我们展示以上列举的度量值,包括项目视图、检查点视图和函数视图。 项目视图 (project view) SourceMonitor 下建立项目须在一个文件夹下进行,该文件夹下的源码文件可以被分成一个或几个检查点,项目视图下列出了各个检查点的度量值信息。 检查点视图 (checkpoint view) 检查点视图中列出了某个检查点中包含的各个源代码文件的度量值信息。 函数视图 (method view) 10 函数视图中展示了某个检查点下,某个源文件中所有函数的度量信息,双击某函数可以跳转到源文件中该函数的相应位置。 代码行统计工具 SourceMonitor SourceMonitor 可以为 C+、 C、 C#、 VB.net、 Java、 Delphi、 Visual Basic 和 HTML 的源代码文件测试代码数量和性能。最终结果可以描绘成图、输出打印。 SourceMonitor 除去常规的代码规模统计外,可以统计出代码的复杂度,嵌套深度、类个数等度量数据,方便对项目进行重构。 1.新建工程 2.选择开发语言,如 C+