软件测试方法技术的研究——静态测试_第1页
软件测试方法技术的研究——静态测试_第2页
软件测试方法技术的研究——静态测试_第3页
软件测试方法技术的研究——静态测试_第4页
软件测试方法技术的研究——静态测试_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常州信息职业技术学院 学生毕业设计(论文)报告 系 别: 软件学院 专 业: 软件技术(对日外包) 班 号: 软件 117 学 生 姓 名: 居富山 学 生 学 号: 1108203719 设计(论文)题目: 软件测试方法技术的研究 _- -静态测试 指 导 教 师: 简勇 设 计 地 点: 常州信息职业技术学院 起 迄 日 期: 2013.6.25-2013.11.20 毕毕业业设设计计(论论文文)任任务务书书 专业专业 软件技术(对日外包) 班级班级 软件 117 姓名姓名 居富山 实践单位名称: 科大讯飞科技有限公司 实践岗位名称: 测试员 岗位职责:保证产品质量符合客户需求,尽可能多的发现软件 bug 的存在,达到客户的期 望目标 岗位能力要求: 有较强的逻辑思维能力和分析判断能力,能够与他人沟通,有团队协作的 精神,具有良好的文档编写能力;熟悉相关开发语言 熟练编写测试脚本和使用测试工具; 一、课题名称: 软件测试技术方法的研究静态测试 二、主要技术指标(或基本要求): 1.对 Windows、Linux、Unix 等大型主流操作系统的使用和应用熟练掌握 2.对比较流行的语言,如 C、C+、JAVA、VB 等掌握一种或多种,具备简单应用开发能力 3.熟练掌握 SQL Server、Oracle、DB2 等一种或多种数据库系统,熟悉使用 SQL 语言 4.熟悉常用的软件测试工具,如 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,Jeff 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、古乐、史九林.软件测试技术概论M.1.北京:清华大学出版社,2004 10、刘纯录、黄子河、陈渌萍.软件评测师教程M.1-3.北京:清华大学出版社,2011.9 学 生(签名) 年 月 日 指 导 教师(签名) 年 月 日 教研室主任(签名) 年 月 日 系 主 任(签名) 年 月 日 毕毕业业设设计计(论论文文)开开题题报报告告 设计(论文)题设计(论文)题 目目 软件测试方法技术的研究 静态测试 一、选题的背景和意义: 随着社会现代化的发展,软件越来越成为了人们生活中必不可少的工具。人们对于软件的 依赖性也是越来越大,而软件的也是越来越丰富从而来满足人们的需求。但是软件的丰富性与 复杂程度的提高,大大地增加了软件测试的难度,对于测试者来说这无疑是一件很痛苦的事情。 因为软件测试是软件质量的重要保证,其地位在软件开发过程中也更加重要。如何去提高软件 的生命质量,深入研究软件的测试方法,提高软件的可靠性,满足的需求,成为了当今的软件 设计的重要组成部分。 二、课题研究的主要内容: 本文主要是对软件测试方法技术的研究静态测试的研究。通过对软件测试基础知识的 了解,以及静态测试的详细介绍,是大家对静态测试有了一个详细的认知。静态测试包括代码 检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也 可以借助软件工具自动进行。代码检查包括代码走查、桌面检查、代码审查等,主要检查代码 和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性 等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序 中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、 程序语法检查和程序结构检查等内容。 三、主要研究(设计)方法论述: 首先,对软件测试方法技术的研究静态测试简述,说明研究静态测试的意义。 其次,对静态测试的内容、方法、工具、要点进行分析研究,如何去进行静态测试,需要 注意什么。 随后, 对静态测试进行结论与展望,总结静态测试,描述静态测试的前景及未来。 最后,对此次论文老师和同学进行感谢。 四、设计(论文)进度安排: 时间(迄止日期)工 作 内 容 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 编写项目设计报告并修改 2013.10.1-2013.11.1 毕业论文撰写 2013.11.2-2013.11.20 修改与完善,准备答辩 五、指导教师意见: 指导教师签名: 年 月 日 六、系部意见: 系主任签名: 年 月 日 目录 摘要.1 Abstract.2 第一章 绪论.3 1.1 课题的研究背景及意义.3 1.2 国内软件测试的现状及前景.3 第二章 软件测试概述.5 2.1 软件测试的定义和实质.5 2.1 .1 软件测试的定义 .5 2.1 .2 软件测试的实质 .5 2.2 软件测试的目的与原则.6 2.2.1 软件测试的目的.6 2.2.2 软件测试的原则.7 2.3 软件测试的工具.8 第三章 静态测试.10 3.1 静态测试简介.10 3.2 静态测试学术解释.10 3.3 静态测试编码规范.11 3.4 静态测试质量度量.11 3.5 静态测试错误检测.12 3.6 静态测试分析工具.13 3.7 静态测试测试要点.14 3.7.1 挑选合适的复审员.14 3.7.2 管理部门的参与.14 3.7.3 注意事项.15 3.7.4 技术复审与项目管理.15 3.7.5 复审领导.15 3.7.6 记录员.16 3.7.7 规则和惯例.17 3.7.8 规则.17 3.7.9 用户与复审.17 3.8 静态测试与动态测试的区别 .17 第四章 结论与展望.19 4.1 结论.19 4.2 展望.19 致谢.20 参考文献.21 1 摘要 随着社会现代化的发展,软件越来越成为了人们生活中必不可少的工具。 人们对于软件的依赖性也是越来越大,而软件的也是越来越丰富从而来满足人 们的需求。但是软件的丰富性与复杂程度的提高,大大地增加了软件测试的难 度,对于测试者来说这无疑是一件很痛苦的事情。因为软件测试是软件质量的 重要保证,其地位在软件开发过程中也更加重要。如何去提高软件的生命质量, 深入研究软件的测试方法,提高软件的可靠性,满足的需求,成为了当今的软 件设计的重要组成部分。 回想一下数十年来软件测试技术在中国的发展,我们不难发现,软件测 试技术在不断地发展,不断地细分,以满足当今社会的需求。从最初人们粗浅 的认识软件测试,到如今系统化的发展,当真是日新月异。 本文主要介绍了静态测试方法,包括代码检查、静态结构分析、代码质 量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件 工具自动进行。在实际使用中,代码检查比动态测试更有效率,能快速找到缺 陷,发现 30%70%的逻辑设计和编码缺陷,可以有效及时地挽回成本损失。例 如:航天飞机搭乘项目在设计或代码评审时消除一个缺陷的成本为一美元,在 系统测试时为 13 美元,交付使用后 92 美元;电信公司审查时发现和纠正一个 缺陷的平均费用为 200 美元,客户验收测试时发现的缺陷平均花费 4200 美元等 等。这些事例都说明了静态测试在软件测试中的重要性。 【关键词关键词】:软件测试;软件质量;静态测试;测试要点;测试简介 常州信息职业技术学院 毕业设计(论文)报告 2 Abstract With 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 richness 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 quality 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 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 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 efficient, 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 delivery; 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:Software Testing; Software Quality; Static Test; Test; Test. 常州信息职业技术学院 毕业设计(论文)报告 3 第一章 绪论 1.1 课题的研究背景及意义 本课题主要是软件测试方法的研究静态测试的研究。随着软件技术的日 益发展,软件系统的复杂性和规模性也在不断的扩大,软件的安全性和质量的 保证成为了所有公司和个人关注的地方,软件中存在的各种问题也逐渐成为了 我国制约软件产业发展的主要因素。一些小的软件开发公司,甚至连一个专门 的软件测试人员都没有。可想而知,我国当今的软件产业是多么的薄弱,严重 的制约了我国软件产业的发展。没有很好地软件测试工作为产品的开发把关, 怎么会有完美的、符合客户要求的产品呈现。所以软件测试在软件开发中的地 位日渐提高,软件测试影响也越来越大。 软件测试(software testing),描述一种用来促进鉴定软件的正确性、 完整性、安全性和质量的过程。或者用他的经典定义来说,在规定的条件下对 程序进行操作,以发现错误,衡量软件质量,并对其是否能满足设计要求进行 的过程。 软件系统,作为一种人类开发出来的工具,存在缺陷是必然的结果。毕竟, 人类不是上帝,不是神,不可能做出一种完美无缺的软件系统出来。而软件测 试存在的必要就是将这种存在的缺陷降到最低点,或者说降到符合客户的需求 的阶段。你可能会认为软件中存在一个小错误没什么大不了的,只要软件能运 行就不需要管它了。如果你真的这样认为,就是大错特错了,往往一个小错误 造成上百万、千万的损失的不在少数。所以,软件的缺陷要尽早在前期发现, 发现的越早越能挽回巨大的损失,修改也越容易。所以,软件测试在软件开发 过程中无疑是至关重要的。 1.2 国内软件测试的现状及前景 现状: 随着软件产业的发展,竞争变得越来也激烈,市场对于软件产品的质量要 求逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。国家 信息 产业部发布的最新报告显示,我国目前软件人才缺口高达 40 万。即使按照 软件开发工程师与测试工程师 1:1 的岗位比例计算,我国对于软件测试工程师 的需求有数十万之众,而目前,我国软件开发工程师与测试工程师岗位比例为 6:1,远远低于国际水平。很多小规模的软件企业,都是开发人员兼职做测试。 而且,最主要的是软件公司的对于软件测试的重视程度不够,认为一个软件只 有开发是最重要的,测试并不一定需要专业的人员去做。结果,后期需要软件 修补花费的费用太高,以至于远远超过所能够允许的范围,发展前景惨淡。从 总体上说,我国的软件行业发展还很不成熟,软件测试更是处于弱势地位。 前景: 常州信息职业技术学院 毕业设计(论文)报告 4 随着人们对软件需求的提高,软件产品的质量控制与质量管理正逐渐成为 软件企业生存与发展的核心。软件产品在发布前所需要的质量控制、测试和文 档等工作,必须依靠拥有熟练技术的专业软件人才来完成。软件测试工程师就 是这样的一个企业重头角色。软件产业的发展,市场对软件质量的不断提高, 软件测试不断被重视。业内人士分析,该职位的需求主要集中在沿海发达城市, 其中北京和上海的需求分量分别占去 33%和 29%。民企需求量最大,占 19%,外 商独资欧美类企业需求排列第二,占 15%。软件测试的必要性已经完全为业内 决策人士所接受。因为软件工业已经发展到与其他主要工业相当的规模。软件 测试具有“地位高”,“待遇高”的双高地位称号,前景光明;而且就业门槛 低,人才需求量大,可以经过短期职业培训而进入这个行业。可以说,软件测 试人员的就业竞争压力明显小于其他职业。而且,刚入行的软件测试人员,起 步的月薪就在 3000-5000 左右,远高于同龄人 2000 元的薪资水品,随着工作经 验的丰富以及能力的提升,薪水将一路上涨。与其他 IT 职位相比,软件测试人 员最大的优势就是发展方向太多了。由于工作的特殊性,测试人员不但需要对 软件的质量进行检测,而且对于软件项目的立项、管理、售前、售后等领域都 要涉及。在此过程中,测试人员不仅提升了专业的软件测试技能,还能接触到 各行各业,从而为自己的多元化发展奠定了基础。如果把软件开发领域比作 “男子单打”,那么,软件测试领域就是“混合双打”。由于工作的特殊性, 软件测试人员更要具有认真、耐心、细致、敏感等个性元素,而这在一定程度 上与女性的个性气质相吻合。据了解,很多 IT 企业中软件测试人员的比例更趋 向男女平衡,甚至出现女性员工成主流的情况。可以说,软件测试这一职业将 会成为近年来最火热的职业。 常州信息职业技术学院 毕业设计(论文)报告 5 第二章 软件测试概述 2.1 软件测试的定义和实质 2.1.1 软件测试的定义 GrenfordJ.Myers 曾对软件测试的目的提出过以下观点: (1)测试是为了发现程序中的错误而执行程序的过程; (2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; (3)成功的测试是发现了至今为止尚未发现的错误的测试。 然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正 确功能.但是只从字面意思理解,可能会产生误导,认为发现错误是软件测试的唯 一目的,查找不出错误的测试就是没有价值的测试,实际上并非如此! (1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生 趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进; (2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效 率和有效性; (3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种 方法 图图 2.1.12.1.1 软件测试的类型图软件测试的类型图 2.1.2 软件测试的实质 软件测试主要工作内容是验证(verification)和确认(validation),下面 分别给出其概念: 验证(verification)是保证软件正确地实现了一些特定功能的一系列活动, 即保证软件做了你所期望的事情。(Dotherightthing) 常州信息职业技术学院 毕业设计(论文)报告 6 1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求 的过程; 2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定 的过程; 3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或 文件等是否和规定的需求相一致进行判断和提出报告。 确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外 部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件 (Doitright) 软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或 性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前, 对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步 骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横 跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测 试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对 软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试 阶段。 图图 2.1.22.1.2 软件测试生命周期图软件测试生命周期图 2.2 软件测试的目的与原则 2.2.1 软件测试的目的 (1)确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方 面是确认软件以正确的方式来做了这个事件。 常州信息职业技术学院 毕业设计(论文)报告 7 (2)提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估 所准备的信息。 (3)软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。 如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可 能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量 的。 软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一 个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操 作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是 软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的 高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重 要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使 用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件 产品的质量才可以说是上去了。 图图 2.2.12.2.1 软件测试过程软件测试过程 W W 模型图模型图 2.2.2 软件测试的原则 软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度 出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑 是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不 存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。 为了达到上述的原则,那么需要注意以下几点: 常州信息职业技术学院 毕业设计(论文)报告 8 (1)应当把“尽早和不断的测试”作为开发者的座右铭 (2)程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试 机构来完。 (3)设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件, 特殊情况要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。 (4)一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有 很大的关系。 (5)对测试错误结果一定要有一个确认的过程,一般有 A 测试出来的错误,一 定要有一个 B 来确认,严重的错误可以召开评审会进行讨论和分析。 (6)制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的 时间内完成一个高水平的测试。 (7)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错 误出现的现象并不少见。 (8)妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠 测试文档。 2.3 软件测试的工具 Test Platform 软件测试平台,简称 TP,是业界唯一的对软件测试全过程 进行支撑的软件测试工具。 业界已有的软件测试工具基本上都局限在测试执行阶段,只能支撑测试执 行阶段的活动,而测试分析、测试设计、测试实现这三个前期阶段的活动缺乏 有效的测试工具支撑,直接影响了软件测试的完整性和充分性,从而影响最终 研发的软件质量。David.yuan 这样说:企业使用了博为峰 TP 测试平台,整个 软件测试过程的 测试覆盖率提高到前所未有的高度和广度,可以极好的达成软 件在安全性、健壮性、稳定性和功能、性能方面的要求,即使是没有很多年测 试经验的管理和测试人员,通过 TP 测试平台就可以完成智能化地管理、设计、 分析、执行整个测试过程,达到一流测试管理专家所做到的效果。 TestPlatForm 简称 TP,在业界首先将各种有效的缺陷分析模型引入到该软 件平台中,包括 ODC 分析、Gompertz 分析、Rayleigh 分析、四象限分析、缺陷 注入分析、DRE/DRM 等工程方法,帮助管理者建立软件研发过程的质量基线、 测试能力基线,并帮助管理者将项目实际缺陷、能力数据和基线数据进行对比 分析,发现软件过程中的改进点,判断测试是否可以退出、软件是否可以发布, 并对软件中残留缺陷数进行预测; TestPlatform 简称 TP,建立了测试分析和设计的理论框架和一整套工程方 法,能够很好的支撑测试的辅助分析和设计; TestPlatform 简称 TP,建立“开发需求项测试项测试子项测试 用例缺陷”的测试跟踪关系,能够及时的反应开发需求和设计的变更对测试 的影响范围,保证软件的一致性和测试的充分性,从而保证软件的质量; TestPlatform 简称 TP,能够全面的管理软件质量工作,具有高度的集成性, 一款 TestPlatform 能够完成多款其他各类的相关质量管理工具集成在一起才能 完成的软件质量管理工作。它集成了需求跟踪、静态测试、动态测试、测试人 员管理、测试环境管理、测试计划管理、测试用例管理、缺陷管理、缺陷分析 等软件质量相关的流程。 常州信息职业技术学院 毕业设计(论文)报告 9 AutoRunner 是国内第一款自动化测试工具,可以用来完成功能测试、回归 测试、每日构建测试与自动回归测试等工作。是具有脚本语言的、提供针对脚 本完善的跟踪和调试功能的、支持 IE 测试和 Windows native 测试的自动化测 试工具。 TestCenter 是一款功能强大测试管理工具,它可以帮助您:实现测试用例 的过程管理,对测试需求过程、测试用例设计过程、业务组件设计实现过程等 整个测试过程进行管理。实现测试用例的标准化即每个测试人员都能够理解并 使用标准化后的测试用例,降低了测试用例对个人的依赖;提供测试用例复用, 用例和脚本能够被复用,以保护测试人员的资产;提供可伸缩的测试执行框架, 提供自动测试支持;提供测试数据管理,帮助用户同意管理测试数据,降低测 试数据和测试脚本之间的耦合度。 TAR(Terminal AutoRunner)适用于 VT100、VT220 等标准的应用系统,支持 命令行模式和窗口模式(使用 Cursors 编写的应用程序),支持自动录制脚本、 所见即所得的资源和脚本编辑,稳定的自动同步功能。是目前国内最好的银行 业务测试工具. TestDirector 是全球最大的软件测试工具提供商 Mercury Interactive 公 司生产的企业级测试管理工具,也是业界第一个基于 Web 的测试管理系统,它 可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用 系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及 错误跟踪等功能,TestDirector 极大地加速了测试过程。 常州信息职业技术学院 毕业设计(论文)报告 10 第三章 静态测试 3.1 静态测试简介 静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、 结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明 书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静 态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套 和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。 静态测试结果可用于进一步的查错,并为测试用例选取提供指导。 静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人 工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检 查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代 码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方 面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分, 找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和 类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。 在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现 30%70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。但是 代码检查非常耗费时间,而且代码检查需要知识和经验的积累。代码检查应在 编译和动态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、 程序的源代码清单、代码编码标准和代码缺陷检查表等。静态测试具有的发现 缺陷早、降低返工成本、覆盖重点和发现缺陷的概率高的优点以及耗时长、不 能测试依赖和技术能力要求高的缺点。 3.2 静态测试学术解释 “静态测试”在学术文献中的解释: 1、静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软 件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现 编写的程序的不足之处,减少错误出现的概率; 2、静态测试是指测试不运行的部分:只是检查和审阅,如规范测试、软件 模型测试、文档测试等。动态测试是通常意义上的测试,也就是运行和使用软 件; 3、通过评审文档、阅读代码等方式测试软件称为静态测试,通过运行程序 测试软件称为动态测试。在动态测试中,通常使用白盒测试和黑盒测试从不同 的角度设计测试用例,查找软件代码中的错误; 4、静态测试是指不用执行程序的测试,它主要采取方案代码走查、技术 评审、代码审查的方法对软件产品进行测试。 结构分析: 常州信息职业技术学院 毕业设计(论文)报告 11 静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关 系图、函数内部控制流图。其中,函数调用关系图以直观的图形方式描述一个 应用程序中各个函数的调用和被调用关系;控制流图显示一个函数的逻辑结构, 它由许多节点组成,一个节点代表一条语句或数条语句,连接结点的叫边,边 表示节点间的控制流向。 检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核; 走查、审查与技术复审手册。 3.3 静态测试编码规范 一个项目或者一个企业,如果要下决心实施软件质量,实施软件工程,第 一步要做的就是软件编码规范。编码规范是程序编写过程中必须遵循的规则, 一般会详细规定代码的语法规则、语法格式等。企业实施怎样的编码规范,取 决于很多个因素:l 编程采用的语言,例如 C、C+、JAVA、ADA 等。项目的规 范化程度。目前现成的 C/C+编码规范有很多,例如前几年网络上比较流行的 华为公司编程规范、摩托罗拉 C+编程规范等。但项目不能完全照搬, 应该根据自己所处的阶段,定制属于自己的规范,否则的话,会让程序员无所 适从,严重打击程序员的积极性。不同的行业对软件的可靠性有不同的要求, 例如航空/航天的嵌入式软件对代码的要求很高,而传统的 windows 平台应用软 件则相对要宽松。在嵌入式软件中,尤其是汽车行业,国际上目前流行的 C 语 言编程规则为 MISRA-C:2004,其中包括 141 条规则,其中 121 条是强制 (Required)遵守的,20 条是建议(Advisory)遵守的。 有了统一的规范后,测试工程师或者程序员自身,就可以实施编码规范检 查了。要真正把编码规范贯彻下去,单单靠测试员程序员的热情,很难坚持下 去,所以笔者建议借助于一些专业的工具来实施。在 C/C+语言的编程规则检 查方面,比较专业的工具有 C+Test、LINT 工具、KlocWork(Insight) /QAC/QAC+等,这些工具通常可以和比较流行的开发工具集成在一起,程序员 在编码过程中,在编译代码的同时即同时完成了编程规则的检查。 3.4 静态测试质量度量 有了严格的编程规范,只能算是万里长征迈出了第一步。要提高软件的可 重用性,以及软件的可维护性,还需要进一步的努力,即静态质量度量。静态 质量度量所依据的标准是 ISO9126。在该标准中,软件的质量用以下几个方面 来衡量,即功能性(Functionality)、可靠性(Reliability)、可用性 (Usability)、有效性(Efficiency)、可维护性(Maintainability)、可移植 性(Portability)。以 ISO9126 质量模型为基础,可以构造质量度量模型。具体 到静态测试,这里主要关注的是可维护性。 要衡量软件的可维护性,可以从四 个方面去度量,即可分析性(Analyzability)、可改变性(Changeability)、 稳定性(Stability)以及可测试性(Testability)。具体到软件的可测试性 怎么去衡量。又可以从三个度量元去考虑,例如圈复杂度、输入/输出的个数等。 圈复杂度越大,说明代码中的路径越多;路径越多,意味着要去做测试,需要 写更多的测试用例。输入/输出的个数同样的道理。在具体的实践中,专门的质 量度量工具是必要的。没有工具的支持,这一步很难只靠人工完成。在这个阶 段,比较专业的工具有 Testbed、Logiscope 等。 常州信息职业技术学院 毕业设计(论文)报告 12 图图 3.43.4 静态测试质量度量图静态测试质量度量图 3.5 静态测试错误检测 在传统意义上认为,错误检测应该是动态的系统测试的范围。但在 bug 的 成本上分析,有以下公认的结论。 bug 发现的越晚,修正的成本就越高,测试阶段修正 bug 的成本是编码阶 段的约 4 倍的关系。为了减少成本,bug 被发现的越早越好。在编程阶段,静 态的分析代码就能找到代码的 bug,是很多人的梦想。这个梦想在 21 世纪初变 成了现实。以 PolySpacee、Klocwork、Coverity 为代表的静态分析软件,实现 了只要静态分析代码,就可以发现代码的 bug,例如数组越界、除数为 0、缓冲 区溢出等,虽然还不是特别完美。微软在其最新的开发工具 VisualStudio2005 的 teamsystemediton 中集成了安全工具 PREFix。PREFix 原来就是著名的静态 分析工具,后被微软收购过来。从微软的倾向看发展走势,类似的静态工具未 来会成为市场的主流。 常州信息职业技术学院 毕业设计(论文)报告 13 图图 3.53.5 静态测试缺陷成本图静态测试缺陷成本图 3.6 静态测试分析工具 说明说明 静态分析工具是一类实现静态分析方法的软件工具,通过对代码进行扫描 并对其进行词法和语法分析,构造与代码结构特征相关的抽象模型以达到对代 码进行某些方面分析的目的。 分类分类 按照功能,例如 代码审核 一致性检查 交叉索引 接口分析 输入输出规格说明分析 数据流分析 错误检查 类型分析 单元分析 基于数据流分析方法的静态分析工具,可提供的缺陷信息基于数据流分析方法的静态分析工具,可提供的缺陷信息 语法错误信息 各种类型源语句出现的次数 标识符使用的交叉索引 标识符在每个与剧中使用的各种情况,如数据源点、数据中点、调用参数、 哑参数和下标等 每个程序所调用的子程序和函数 未经初始化的变量 常州信息职业技术学院 毕业设计(论文)报告 14 未曾使用过的变量 任何输入数据都执行不到的孤立代码段 违背编码标准之处,包括背离语言标准以及用户制定的实用标准 错用的全程变量、公用变量及参数个数有误、类型不匹配、输入参数未经 初始化、输出参数未赋值、输出参数虽赋值但未使用、对输入和输出均无用的 参数等等 按工具来源分按工具来源分 商业工具 Klocwork Insignt GIMPEL Software 的 PC-Lint(针对 C/C+语言) ParaSoft 的 C+ Test 和 JTest 开源工具 FindBugs 3.7 静态测试测试要点 3.7.1 挑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论