版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、推荐精选 常州信息职业技术学院学生毕业设计(论文)报告系 别: 软件学院 专 业: 软件技术(对日外包) 班 号: 软件 117 学 生 姓 名: 居富山 学 生 学 号: 1108203719 设计(论文)题目: 软件测试方法技术的研究 _- -静态测试 指 导 教 师: 简勇 设 计 地 点: 常州信息职业技术学院 起 迄 日 期: 2013.6.25-2013.11.20 推荐精选毕毕业业设设计计(论论文文)任任务务书书专业专业 软件技术(对日外包) 班级班级 软件 117 姓名姓名 居富山 实践单位名称: 科大讯飞科技有限公司 实践岗位名称: 测试员 岗位职责:保证产品质量符合客户需求
2、,尽可能多的发现软件 bug 的存在,达到客户的期望目标 岗位能力要求: 有较强的逻辑思维能力和分析判断能力,能够与他人沟通,有团队协作的精神,具有良好的文档编写能力;熟悉相关开发语言 熟练编写测试脚本和使用测试工具; 一、课题名称: 软件测试技术方法的研究静态测试 二、主要技术指标(或基本要求): 1.对 Windows、Linux、Unix 等大型主流操作系统的使用和应用熟练掌握 2.对比较流行的语言,如 C、C+、JAVA、VB 等掌握一种或多种,具备简单应用开发能力 3.熟练掌握 SQL Server、Oracle、DB2 等一种或多种数据库系统,熟悉使用 SQL 语言 4.熟悉常用的
3、软件测试工具,如 QTP、TD、Runner 等,掌握一种或多种工具 三、主要工作内容: 1.编写测试计划:阅读项目说明书,掌握软件性能、特点、使用方法等制定测试计划 2.编写测试用例:按照测试计划,确认测试的范围重点、要求,编写测试用例 3.执行测试,根据测试用例进行测试,发现软件缺陷 4.编写测试报告,对测试结果进行分析 四、主要参考文献:1、Rex Black.郑丹丹,王华. 软件测试基础M.1.北京:人民邮电出版社,2013.5 2、Patton,R.张小松. 软件测试M.1-3.北京:机械工业出版社,2006.4 3、(美)James,Whittaker,Jason Arbon,Je
4、ff Carollo.黄利,李中杰,薛明. Google 软件测试之道M.1.北京:人民邮电出版社,2013.10 4、李龙. 软件测试实用技术与常用模版M.2.北京:机械工业出版社,2010.10 5、马瑟.王峰. 软件测试基础教程M.1.北京:机械工业出版社,2011.8 6、惠特克.方敏,张胜,钟颂东. 探索式软件测试M.1.北京:清华大学出版社,2010.04推荐精选7、利马耶.黄晓磊,曾琼. 软件测试原理、技术及工具M.1.北京:清华大学出版社, 2011.3 8、(美)凯纳.韩柯.软件测试经验与教训M.1.北京:机械工业出版社,2004.1 推荐精选9、古乐、史九林.软件测试技术概
5、论M.1.北京:清华大学出版社,2004 10、刘纯录、黄子河、陈渌萍.软件评测师教程M.1-3.北京:清华大学出版社,2011.9 学 生(签名) 年 月 日 指 导 教师(签名) 年 月 日 教研室主任(签名) 年 月 日系 主 任(签名) 年 月 日推荐精选毕毕业业设设计计(论论文文)开开题题报报告告设计(论文)题设计(论文)题目目软件测试方法技术的研究 静态测试一、选题的背景和意义:随着社会现代化的发展,软件越来越成为了人们生活中必不可少的工具。人们对于软件的依赖性也是越来越大,而软件的也是越来越丰富从而来满足人们的需求。但是软件的丰富性与复杂程度的提高,大大地增加了软件测试的难度,对
6、于测试者来说这无疑是一件很痛苦的事情。因为软件测试是软件质量的重要保证,其地位在软件开发过程中也更加重要。如何去提高软件的生命质量,深入研究软件的测试方法,提高软件的可靠性,满足的需求,成为了当今的软件设计的重要组成部分。二、课题研究的主要内容:本文主要是对软件测试方法技术的研究静态测试的研究。通过对软件测试基础知识的了解,以及静态测试的详细介绍,是大家对静态测试有了一个详细的认知。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、
7、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。三、主要研究(设计)方法论述:首先,对软件测试方法技术的研究静态测试简述,说明研究静态测试的意义。其次,对静态测试的内容、方法、工具、要点进行分析研究,如何去进行静态测试,需要注意什么。 随后, 对静态测试进行结论与展望,总结静态测试,描述静态测试的前景及未来。最后,对此次论文老师和同学进行感谢。推荐精选四、设计(论文)进度安排: 时间(迄止日期)工
8、 作 内 容2013.6.25-2013.6.30确定毕业设计内容及题目2012.7.1-2012.7.15理清思路,确定总方案,进行前期资料搜集,撰写开题报告2012.7.16-2012.7.25对系统进行系统分析,论证设计可行性,讨论数据库,创建数据库2012.7.26-2013.8.10熟悉业务知识,掌握项目流程,学习语言技术2013.8.11-2013.8.20系统详细设计,数据库设计2013.8.21-2013.8.31系统管理模块页面设计、编写代码2013.9.1-2013.9.10系统整合2013.9.11-2013.9.15系统模块测试2013.9.16-2013.9.30编写
9、项目设计报告并修改2013.10.1-2013.11.1毕业论文撰写2013.11.2-2013.11.20修改与完善,准备答辩五、指导教师意见: 指导教师签名: 年 月 日六、系部意见: 系主任签名: 年 月 日推荐精选目录摘要.1Abstract.2第一章 绪论.31.1 课题的研究背景及意义.31.2 国内软件测试的现状及前景.3第二章 软件测试概述.52.1 软件测试的定义和实质.52.1 .1 软件测试的定义 .52.1 .2 软件测试的实质 .52.2 软件测试的目的与原则.62.2.1 软件测试的目的.62.2.2 软件测试的原则.72.3 软件测试的工具.8第三章 静态测试.1
10、03.1 静态测试简介.103.2 静态测试学术解释.103.3 静态测试编码规范.113.4 静态测试质量度量.113.5 静态测试错误检测.123.6 静态测试分析工具.133.7 静态测试测试要点.143.7.1 挑选合适的复审员.143.7.2 管理部门的参与.143.7.3 注意事项.153.7.4 技术复审与项目管理.153.7.5 复审领导.153.7.6 记录员.163.7.7 规则和惯例.173.7.8 规则.173.7.9 用户与复审.173.8 静态测试与动态测试的区别 .17第四章 结论与展望.194.1 结论.194.2 展望.19致谢.20参考文献.21推荐精选摘要
11、随着社会现代化的发展,软件越来越成为了人们生活中必不可少的工具。人们对于软件的依赖性也是越来越大,而软件的也是越来越丰富从而来满足人们的需求。但是软件的丰富性与复杂程度的提高,大大地增加了软件测试的难度,对于测试者来说这无疑是一件很痛苦的事情。因为软件测试是软件质量的重要保证,其地位在软件开发过程中也更加重要。如何去提高软件的生命质量,深入研究软件的测试方法,提高软件的可靠性,满足的需求,成为了当今的软件设计的重要组成部分。回想一下数十年来软件测试技术在中国的发展,我们不难发现,软件测试技术在不断地发展,不断地细分,以满足当今社会的需求。从最初人们粗浅的认识软件测试,到如今系统化的发展,当真是
12、日新月异。本文主要介绍了静态测试方法,包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现 30%70%的逻辑设计和编码缺陷,可以有效及时地挽回成本损失。例如:航天飞机搭乘项目在设计或代码评审时消除一个缺陷的成本为一美元,在系统测试时为 13 美元,交付使用后 92 美元;电信公司审查时发现和纠正一个缺陷的平均费用为 200 美元,客户验收测试时发现的缺陷平均花费 4200 美元等等。这些事例都说明了静态测试在软件测试中的重要性。【关键词关键词】:软件测试;软件质量;静
13、态测试;测试要点;测试简介推荐精选AbstractWith the development of the society modernization, software increasingly become an essential tool in peoples life. People are more dependent on software is also increasing, while the software is becoming more and more rich in order to meet the needs of the people. But the ri
14、chness and complexity of software increase, greatly increased the difficulty of software testing, this is a very painful thing for testers. Because the software testing is an important software quality assurance, its status is more important in the software development process. How to improve the qu
15、ality of life of software testing methods, in-depth study of the software, improve software reliability, to meet the demand, has become an important part of todays software design.Recall that in the past dozens of years, the development of China software testing technology, we discover not hard, the
16、 development of software testing technology is constantly, constantly subdivision, in order to meet the needs of todays society. From the first people shallow understanding of software testing, up to now the development of systematic change rapidly, it is.This paper mainly introduces the static test
17、 method, including the code inspection, static structural analysis, code quality metrics. It can be carried out by the artificial, give full play to the advantages of logic thinking, can also automatically with the help of software tools. In actual use, the code checks than dynamic tests are more ef
18、ficient, can quickly find the defects found in 30% 70%, the logical design and coding defects, can effectively save the cost loss. For example: the shuttle on a project to eliminate the defects in the design or code review for the cost of one dollar, in the testing system for $13 to $92, after deliv
19、ery; Telecom review found and corrected a flaw of the average cost of $200, defects found customer acceptance test of the average cost of 4200 the dollar and so on. These examples illustrate the importance of static test in software testing.keywords:keywords:Software Testing; Software Quality; Stati
20、c Test; Test; Test.推荐精选第一章 绪论1.1 课题的研究背景及意义本课题主要是软件测试方法的研究静态测试的研究。随着软件技术的日益发展,软件系统的复杂性和规模性也在不断的扩大,软件的安全性和质量的保证成为了所有公司和个人关注的地方,软件中存在的各种问题也逐渐成为了我国制约软件产业发展的主要因素。一些小的软件开发公司,甚至连一个专门的软件测试人员都没有。可想而知,我国当今的软件产业是多么的薄弱,严重的制约了我国软件产业的发展。没有很好地软件测试工作为产品的开发把关,怎么会有完美的、符合客户要求的产品呈现。所以软件测试在软件开发中的地位日渐提高,软件测试影响也越来越大。软件测试
21、(software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。或者用他的经典定义来说,在规定的条件下对程序进行操作,以发现错误,衡量软件质量,并对其是否能满足设计要求进行的过程。软件系统,作为一种人类开发出来的工具,存在缺陷是必然的结果。毕竟,人类不是上帝,不是神,不可能做出一种完美无缺的软件系统出来。而软件测试存在的必要就是将这种存在的缺陷降到最低点,或者说降到符合客户的需求的阶段。你可能会认为软件中存在一个小错误没什么大不了的,只要软件能运行就不需要管它了。如果你真的这样认为,就是大错特错了,往往一个小错误造成上百万、千万的损失的不在少数。所以,软件的
22、缺陷要尽早在前期发现,发现的越早越能挽回巨大的损失,修改也越容易。所以,软件测试在软件开发过程中无疑是至关重要的。1.2 国内软件测试的现状及前景现状:随着软件产业的发展,竞争变得越来也激烈,市场对于软件产品的质量要求逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。国家信息产业部发布的最新报告显示,我国目前软件人才缺口高达 40 万。即使按照软件开发工程师与测试工程师 1:1 的岗位比例计算,我国对于软件测试工程师的需求有数十万之众,而目前,我国软件开发工程师与测试工程师岗位比例为6:1,远远低于国际水平。很多小规模的软件企业,都是开发人员兼职做测试。而且,最主要的是软件公司的对
23、于软件测试的重视程度不够,认为一个软件只有开发是最重要的,测试并不一定需要专业的人员去做。结果,后期需要软件修补花费的费用太高,以至于远远超过所能够允许的范围,发展前景惨淡。从总体上说,我国的软件行业发展还很不成熟,软件测试更是处于弱势地位。前景: 推荐精选随着人们对软件需求的提高,软件产品的质量控制与质量管理正逐渐成为软件企业生存与发展的核心。软件产品在发布前所需要的质量控制、测试和文档等工作,必须依靠拥有熟练技术的专业软件人才来完成。软件测试工程师就是这样的一个企业重头角色。软件产业的发展,市场对软件质量的不断提高,软件测试不断被重视。业内人士分析,该职位的需求主要集中在沿海发达城市,其中
24、北京和上海的需求分量分别占去 33%和 29%。民企需求量最大,占 19%,外商独资欧美类企业需求排列第二,占 15%。软件测试的必要性已经完全为业内决策人士所接受。因为软件工业已经发展到与其他主要工业相当的规模。软件测试具有“地位高”,“待遇高”的双高地位称号,前景光明;而且就业门槛低,人才需求量大,可以经过短期职业培训而进入这个行业。可以说,软件测试人员的就业竞争压力明显小于其他职业。而且,刚入行的软件测试人员,起步的月薪就在 3000-5000 左右,远高于同龄人 2000 元的薪资水品,随着工作经验的丰富以及能力的提升,薪水将一路上涨。与其他 IT 职位相比,软件测试人员最大的优势就是
25、发展方向太多了。由于工作的特殊性,测试人员不但需要对软件的质量进行检测,而且对于软件项目的立项、管理、售前、售后等领域都要涉及。在此过程中,测试人员不仅提升了专业的软件测试技能,还能接触到各行各业,从而为自己的多元化发展奠定了基础。如果把软件开发领域比作“男子单打”,那么,软件测试领域就是“混合双打”。由于工作的特殊性,软件测试人员更要具有认真、耐心、细致、敏感等个性元素,而这在一定程度上与女性的个性气质相吻合。据了解,很多 IT 企业中软件测试人员的比例更趋向男女平衡,甚至出现女性员工成主流的情况。可以说,软件测试这一职业将会成为近年来最火热的职业。推荐精选第二章 软件测试概述2.1 软件测
26、试的定义和实质2.1.1 软件测试的定义GrenfordJ.Myers 曾对软件测试的目的提出过以下观点:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能.但是只从字面意思理解,可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上并非如此!(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及
27、时改进;(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法图图 2.1.12.1.1 软件测试的类型图软件测试的类型图2.1.2 软件测试的实质软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念:验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Dotherightthing)推荐精选1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;2.程序正确性的形式证
28、明,即采用形式理论证明程序符号设一计规约规定的过程;3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Doitright) 软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横跨两
29、个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。图图 2.1.22.1.2 软件测试生命周期图软件测试生命周期图2.2 软件测试的目的与原则2.2.1 软件测试的目的(1)确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。推荐精选(2)提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。(3)软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产
30、品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产
31、品的质量才可以说是上去了。图图 2.2.12.2.1 软件测试过程软件测试过程 W W 模型图模型图2.2.2 软件测试的原则软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。为了达到上述的原则,那么需要注意以下几点:推荐精选(1)应当把“尽早和不断的测试”作为开发者的座右铭(2)程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完。(3)设计测试用例时应该考虑到
32、合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。(4)一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。(5)对测试错误结果一定要有一个确认的过程,一般有 A 测试出来的错误,一定要有一个 B 来确认,严重的错误可以召开评审会进行讨论和分析。(6)制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。(7)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。(8)妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
33、2.3 软件测试的工具Test Platform 软件测试平台,简称 TP,是业界唯一的对软件测试全过程进行支撑的软件测试工具。业界已有的软件测试工具基本上都局限在测试执行阶段,只能支撑测试执行阶段的活动,而测试分析、测试设计、测试实现这三个前期阶段的活动缺乏有效的测试工具支撑,直接影响了软件测试的完整性和充分性,从而影响最终研发的软件质量。David.yuan 这样说:企业使用了博为峰 TP 测试平台,整个软件测试过程的 测试覆盖率提高到前所未有的高度和广度,可以极好的达成软件在安全性、健壮性、稳定性和功能、性能方面的要求,即使是没有很多年测试经验的管理和测试人员,通过 TP 测试平台就可以
34、完成智能化地管理、设计、分析、执行整个测试过程,达到一流测试管理专家所做到的效果。TestPlatForm 简称 TP,在业界首先将各种有效的缺陷分析模型引入到该软件平台中,包括 ODC 分析、Gompertz 分析、Rayleigh 分析、四象限分析、缺陷注入分析、DRE/DRM 等工程方法,帮助管理者建立软件研发过程的质量基线、测试能力基线,并帮助管理者将项目实际缺陷、能力数据和基线数据进行对比分析,发现软件过程中的改进点,判断测试是否可以退出、软件是否可以发布,并对软件中残留缺陷数进行预测;TestPlatform 简称 TP,建立了测试分析和设计的理论框架和一整套工程方法,能够很好的支
35、撑测试的辅助分析和设计;TestPlatform 简称 TP,建立“开发需求项测试项测试子项测试用例缺陷”的测试跟踪关系,能够及时的反应开发需求和设计的变更对测试的影响范围,保证软件的一致性和测试的充分性,从而保证软件的质量;TestPlatform 简称 TP,能够全面的管理软件质量工作,具有高度的集成性,一款 TestPlatform 能够完成多款其他各类的相关质量管理工具集成在一起才能完成的软件质量管理工作。它集成了需求跟踪、静态测试、动态测试、测试人员管理、测试环境管理、测试计划管理、测试用例管理、缺陷管理、缺陷分析等软件质量相关的流程。推荐精选AutoRunner 是国内第一款自动化
36、测试工具,可以用来完成功能测试、回归测试、每日构建测试与自动回归测试等工作。是具有脚本语言的、提供针对脚本完善的跟踪和调试功能的、支持 IE 测试和 Windows native 测试的自动化测试工具。TestCenter 是一款功能强大测试管理工具,它可以帮助您:实现测试用例的过程管理,对测试需求过程、测试用例设计过程、业务组件设计实现过程等整个测试过程进行管理。实现测试用例的标准化即每个测试人员都能够理解并使用标准化后的测试用例,降低了测试用例对个人的依赖;提供测试用例复用,用例和脚本能够被复用,以保护测试人员的资产;提供可伸缩的测试执行框架,提供自动测试支持;提供测试数据管理,帮助用户同
37、意管理测试数据,降低测试数据和测试脚本之间的耦合度。TAR(Terminal AutoRunner)适用于 VT100、VT220 等标准的应用系统,支持命令行模式和窗口模式(使用 Cursors 编写的应用程序),支持自动录制脚本、所见即所得的资源和脚本编辑,稳定的自动同步功能。是目前国内最好的银行业务测试工具.TestDirector 是全球最大的软件测试工具提供商 Mercury Interactive 公司生产的企业级测试管理工具,也是业界第一个基于 Web 的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管
38、理,测试计划,测试执行以及错误跟踪等功能,TestDirector 极大地加速了测试过程。推荐精选第三章 静态测试3.1 静态测试简介静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充
39、分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。但是代码检查非常耗费时间,而且代码检查需要知识和经验的积累。代码检查应在编译和动
40、态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表等。静态测试具有的发现缺陷早、降低返工成本、覆盖重点和发现缺陷的概率高的优点以及耗时长、不能测试依赖和技术能力要求高的缺点。3.2 静态测试学术解释“静态测试”在学术文献中的解释:1、静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;2、静态测试是指测试不运行的部分:只是检查和审阅,如规范测试、软件模型测试、文档测试等。动态测试是通常意义上的测试,也就是运行和使用软件
41、;3、通过评审文档、阅读代码等方式测试软件称为静态测试,通过运行程序测试软件称为动态测试。在动态测试中,通常使用白盒测试和黑盒测试从不同的角度设计测试用例,查找软件代码中的错误;4、静态测试是指不用执行程序的测试,它主要采取方案代码走查、技术评审、代码审查的方法对软件产品进行测试。结构分析:推荐精选静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。其中,函数调用关系图以直观的图形方式描述一个应用程序中各个函数的调用和被调用关系;控制流图显示一个函数的逻辑结构,它由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边表示节点间的控制流向。检查项:
42、代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册。3.3 静态测试编码规范一个项目或者一个企业,如果要下决心实施软件质量,实施软件工程,第一步要做的就是软件编码规范。编码规范是程序编写过程中必须遵循的规则,一般会详细规定代码的语法规则、语法格式等。企业实施怎样的编码规范,取决于很多个因素:l 编程采用的语言,例如 C、C+、JAVA、ADA 等。项目的规范化程度。目前现成的 C/C+编码规范有很多,例如前几年网络上比较流行的华为公司编程规范、摩托罗拉 C+编程规范等。但项目不能完全照搬,应该根据自己所处的阶段,定制属于自己的规范,否则的话,会让程序员无所适从,
43、严重打击程序员的积极性。不同的行业对软件的可靠性有不同的要求,例如航空/航天的嵌入式软件对代码的要求很高,而传统的 windows 平台应用软件则相对要宽松。在嵌入式软件中,尤其是汽车行业,国际上目前流行的 C 语言编程规则为 MISRA-C:2004,其中包括 141 条规则,其中 121 条是强制(Required)遵守的,20 条是建议(Advisory)遵守的。有了统一的规范后,测试工程师或者程序员自身,就可以实施编码规范检查了。要真正把编码规范贯彻下去,单单靠测试员程序员的热情,很难坚持下去,所以笔者建议借助于一些专业的工具来实施。在 C/C+语言的编程规则检查方面,比较专业的工具有
44、 C+Test、LINT 工具、KlocWork(Insight)/QAC/QAC+等,这些工具通常可以和比较流行的开发工具集成在一起,程序员在编码过程中,在编译代码的同时即同时完成了编程规则的检查。3.4 静态测试质量度量有了严格的编程规范,只能算是万里长征迈出了第一步。要提高软件的可重用性,以及软件的可维护性,还需要进一步的努力,即静态质量度量。静态质量度量所依据的标准是 ISO9126。在该标准中,软件的质量用以下几个方面来衡量,即功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可维护性(Maintai
45、nability)、可移植性(Portability)。以 ISO9126 质量模型为基础,可以构造质量度量模型。具体到静态测试,这里主要关注的是可维护性。 要衡量软件的可维护性,可以从四个方面去度量,即可分析性(Analyzability)、可改变性(Changeability)、稳定性(Stability)以及可测试性(Testability)。具体到软件的可测试性怎么去衡量。又可以从三个度量元去考虑,例如圈复杂度、输入/输出的个数等。圈复杂度越大,说明代码中的路径越多;路径越多,意味着要去做测试,需要写更多的测试用例。输入/输出的个数同样的道理。在具体的实践中,专门的质量度量工具是必要的
46、。没有工具的支持,这一步很难只靠人工完成。在这个阶段,比较专业的工具有 Testbed、Logiscope 等。推荐精选图图 3.43.4 静态测试质量度量图静态测试质量度量图3.5 静态测试错误检测在传统意义上认为,错误检测应该是动态的系统测试的范围。但在 bug 的成本上分析,有以下公认的结论。bug 发现的越晚,修正的成本就越高,测试阶段修正 bug 的成本是编码阶段的约 4 倍的关系。为了减少成本,bug 被发现的越早越好。在编程阶段,静态的分析代码就能找到代码的 bug,是很多人的梦想。这个梦想在 21 世纪初变成了现实。以 PolySpacee、Klocwork、Coverity
47、为代表的静态分析软件,实现了只要静态分析代码,就可以发现代码的 bug,例如数组越界、除数为 0、缓冲区溢出等,虽然还不是特别完美。微软在其最新的开发工具 VisualStudio2005的 teamsystemediton 中集成了安全工具 PREFix。PREFix 原来就是著名的静态分析工具,后被微软收购过来。从微软的倾向看发展走势,类似的静态工具未来会成为市场的主流。推荐精选图图 3.53.5 静态测试缺陷成本图静态测试缺陷成本图3.6 静态测试分析工具 说明说明静态分析工具是一类实现静态分析方法的软件工具,通过对代码进行扫描并对其进行词法和语法分析,构造与代码结构特征相关的抽象模型以
48、达到对代码进行某些方面分析的目的。 分类分类按照功能,例如代码审核一致性检查交叉索引接口分析输入输出规格说明分析数据流分析错误检查类型分析单元分析 基于数据流分析方法的静态分析工具,可提供的缺陷信息基于数据流分析方法的静态分析工具,可提供的缺陷信息语法错误信息各种类型源语句出现的次数标识符使用的交叉索引标识符在每个与剧中使用的各种情况,如数据源点、数据中点、调用参数、哑参数和下标等每个程序所调用的子程序和函数未经初始化的变量推荐精选未曾使用过的变量任何输入数据都执行不到的孤立代码段违背编码标准之处,包括背离语言标准以及用户制定的实用标准错用的全程变量、公用变量及参数个数有误、类型不匹配、输入参
49、数未经初始化、输出参数未赋值、输出参数虽赋值但未使用、对输入和输出均无用的参数等等 按工具来源分按工具来源分商业工具Klocwork InsigntGIMPEL Software 的 PC-Lint(针对 C/C+语言)ParaSoft 的 C+ Test 和 JTest开源工具FindBugs3.7 静态测试测试要点3.7.1 挑选合适的复审员复审活动人数控制在 3-7 个人,每次复审活动不要超过 2 小时,否则应该功能分解或者形式分解。准备充分的复审一小时以内完成。3.7.2 管理部门的参与任何对使复审由只关注技术转变为与人事产生关系的情况都应该避免。技术经理分配复审给下面有潜力的员工是经
50、理自己成长的必然之路。为复审活动分配时间和资源,特殊情况关于时间、场地选取的一些建议。IBM 一个关于电话会议进行复审的一个案例。图图 3.6.23.6.2 静态测试评审模型图静态测试评审模型图推荐精选3.7.3 注意事项结队复审方法,对比结队编程。10-12 点是进行复审的完美时间,复审完成大家共进午餐可以帮助解决问题,想起新问题。选择那些不会引起争论不休的内容作为每次初期复审对象。对走查、审查和技术复审的活动指南进行复审,效果会很好。复审规则:复审过程本身的目的是提出问题,而不是解决这些问题。找一只愿意倾听的耳朵,即使这样,复审也会很有效果。(makesenseonbanian)复审比培训
51、来得更有效,这是推广新技术的好方法。双项目同时启动,并且互相担当复审主导的形式非常有效,还会有良性竞争出现。要求项目规模比较小。对复审领导进行工作中复审培训一个月左右,10-16 个领导就可以担当一年内培养公司 200 名员工的任务。正式复审与非正式复审的差距是由领导控制的,其中的灵活度,多少 push,多少愉快的气氛的培养正是做领导的艺术,也是他们拿那么多 Money 的原因。3.7.4 技术复审与项目管理确定两次复审之间的时间间隔的根据使你在完全失去对工作状况的了解的情况下能够坚持的最长时间。大多数这个时间是 2-4 个星期。不管做什么都会犯错误,因此把错误犯在最安全的地方是一个不错的策略
52、,这也是复审活动“宁缺勿滥”的理由。以随即选定的方法对审核的工作进行抽样,使会有风险的。尽量不要这么做。3.7.5 复审领导复审领导的工作是保证复审活动获得成功-或者是负责汇报复审活动未能获得成功的原因。未能成功原因比如:成员在材料充分的情况下依然没有做好准备、预定的会议室发现泥水匠正在拆墙。复审活动的成功与待复审产品的质量之间没有必然联系,复审领导不可能也不必承担待复审产品的质量的责任,而只需对复审活动本身的质量负责。但一旦宣布检验出合格产品,他就获得了一份对该产品因该承担的责任。复审领导应该有一些技术素质,至少应该精通开发的过程、使用的开发工具、现代的软件方法,特别应该了解复审活动在整个开
53、发过程中的位置。对于复审领导的个人品质很难一概而论,一句话:结果比方式更重要。毕竟领导风格千千种,很难说那种是对是错。技术领导最糟糕的性格特点就是不能主动置身于他碰巧很感兴趣的技术讨论之外。告诉那些以自己缺乏管理经验为由拒绝出任复审领导的“专业程序员”,这次复审正是他提高技能的绝好的锻炼机会。实际上,多人都可以胜任这个职位,确实是个不错的锻炼机会。任何可能因为职位的原因引起利益冲突的人都不应该出现在复审现场,所以,领导对自己的团队进行复审应该尽力避免。复审活动前,复审领导应该准备好充分的文档,并在会议当天应用 CheckList 检查是否符合开会条件。会议中要确保准备充分的参加者能够有时间阐述
54、自己意见,否则以后的会议之前没人会认真准备。如果复审偏离主题,复审领导首先要做的是,留心观察这次跑题是否是某些成员掩盖其缺乏准备的一个诡计。如果不是,提醒大家注意本次会议的目的。如果还不行,可以直接介入,公开终止对技术细节的讨论,还推荐精选要告诉记录员把它记下来。如果再有人没有停下来,提醒他本次会议的目的是提出问题,而不是解决问题。他的意见会被纪录,推荐精选复审会议后解决问题时再被讨论。如果真的有人蓄意妨碍,复审领导可以宣布这次会议不再有建设性而终止会议。并且记录你认为终止会议的真正原因上报,还要同事做好为自己做辩护的准备。对于没有勇气直接发言的腼腆成员可以直接提问题给他,没有人会害羞到不能回
55、答直接提问的地步。据说“专家就是在自己犯了大错误的过程中还在挑剔别人小错误的人”。复审领导应该保证复审组中没有这样的专家。如果再次复审的原因的成员的准备不够充分,那么下次进行复审还应该是原班人马。 关于如何鼓励复审组成员有勇气职责别人的工作,可以要求每人分别给出一个正面评价和一个负面评价。把批评仪式化,这样有利于得到真实正确的建议。如何对待迟到早退,这是每个领导一直会遇到的问题,可以参考温伯格的意见,也可以自按照从前的经验来。如果找麻烦的人想重新设计这个产品以“是他变得更好”,可以打断她,然后要求他提出一些“是产品变的更糟”的办法。这会增加一些幽默的气氛,同时让他们看到该产品并非遭到一无是处,
56、进而让他们知道他们的意见不怎么样。温伯格是如何控制开会的公共议程与每个人自己的私人议程:其中包含一个小的实验,验证会议每个人的真实私人议程。要求每个人说出材料中是否有遗漏是一个检查这个人对材料是否准备好了的好办法。只要牢记一条简单的规则,复审领导就能轻松些的结束会议,那就是:作为复审领导,我有责任保证复审的高效率。如果我认为这个目标没法实现,我有责任终止这次复审。图图 3.6.53.6.5 静态测试审查流程图静态测试审查流程图3.7.6 记录员记录员的首要职责是为确保复审报告的准确性提供信息。最好使用活动挂图,投影等方式使得记录员的即时记录信息能被大家同时看到。或者用高级可打印白板。最好不要使
57、用录像机在正式的场合,会导致某些人不自然,而且复审推荐精选会议也不需要那么大的信息量。不要让复审领导同时担当记录员,首先它会在进行记录的时候失去对会议的控制,其次,记录原有很大权利,很容易忘记或者多记一些内容,因此要使用分权这一屡试不爽的办法。不要怀疑,任何人都可以作为记录员,因此可以自己进行调度。还可以在会议开始的时候依次问询大家对这次复审的意见,挑选在某的 session 没什么话好说的人作为这个session 的记录员。确信会议中的任何人都可以很方便的看到记录,尤其是复审领导。当自己在做记录员并且有话要说的时候,把笔或者电脑交给身边的人。每个被安排为记录员的成员需要去检查 CheckLi
58、st。3.7.7 规则和惯例准备好你的工作。不要掩饰。要乐意合作。时刻注意自己评审的是产品而不是同事,任何人都可能犯错。注意你的语言。不要以“为什么”开头,最好用“我不明白”。正面和负面的评价。实在没有正面的评价可以“我喜欢你用来评审的水笔的颜色。”提出问题,但不要解决问题。可以在吃午饭的时候讨论解决方案。不要讨论风格。要遵循标准否则就扔掉它。只允许有技术能力的人参加复审。不是排斥技术新人,是为避免政治目的的人。所有的问题都要公开记录。坚持讨论技术问题。不要忘了教育。不要评价生产者。要尽早分发复审报告。让生产者决定他们的产品接受复审的时间。否则就是浪费时间。3.7.8 规则要表现出对复审过程的
59、信任。要为复审过程安排时间。要做好准备让真正合适的人去参加复审。鼓励复审活动的参与者做好准备工作。要帮忙解决会场问题。不要小事聪明大事糊涂。要奖励那些发现劣质产品的优质复审不管产品怎样,一定要惩罚所有的劣质复审要惩罚糟糕的复审行为。推翻复审决定只会让你自己担风险。3.7.9 用户与复审缺乏技术能力,不能为复审做出贡献的人不该出现在复审现场。生产者通常会试图让你为自己不能理解他们那些绝妙的产品而感到自卑,这是需要站稳立场,让他们在问题列表上写下这样的语句:“用户代表不能理解。”3.8 静态测试与动态测试的区别静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法律法规经济与施工-二级注册建筑师《法律、法规、经济与施工》押题密卷3
- 长春版语文三年级上册教案
- 老年人用药提醒助手
- 海洋生物医药产业布局
- 2024届辽宁省本溪某中学高考化学押题试卷含解析
- 2024高中物理第三章传感器章末质量评估含解析粤教版选修3-2
- 2024高中语文第5单元庄子蚜第2课鹏之徙于南冥训练含解析新人教版选修先秦诸子蚜
- 2024高中语文第五课言之有“理”第3节有话“好好说”-修改蹭训练含解析新人教版选修语言文字应用
- 2024高中语文综合阅读训练2含解析新人教版选修先秦诸子蚜
- 2024高考化学一轮复习第9章化学实验基础第29讲化学实验基础知识和技能精练含解析
- 2025年高考历史复习之小题狂练300题(选择题):秦汉时期(20题)
- 钻机安全操作规程(3篇)
- 2025年产业园区运营与管理企业组织结构及部门职责
- 岩土工程勘察.课件
- 第五章 无土育苗技术
- 福建省福州三牧中学2024-2025学年七年级上学期期中生物试题(无答案)
- 2024统战工作总结
- 银行营业网点诈骗、冒领等突发事件应急预案
- 《数字信号处理(第2版)》本科全套教学课件
- 2024-2025学年上海市杨浦区四年级数学第一学期期末教学质量检测试题含解析
- 2024年江苏苏州中考语文作文分析-面对石头
评论
0/150
提交评论