软件静态测试
(3)提高自主学习能力、创新能力
重 点
难 点
重点:软件静态测试
难点:软件静态测试要点
教学方法
分组教学法、演示教学法、任务驱动教学法
能力训练
(作业)
教学体会
授课班级
授 课 时 间 及 地 点
年 月 日 (星期 )第 节, 楼 室
年 月 日 (星期 )第 节, 楼 室
年 月 日 (星期 )第 节, 楼 室
5’
80’
5’
在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。但是代码检查非常耗费时间,而且代码检查需要知识和经验的积累。代码检查应在编译和动态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表等。静态测试具有的发现缺陷早、降低返工成本、覆盖重点和发现缺陷的概率高的优点以及耗时长、不能测试依赖和技术能力要求高的缺点。
静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
有了统一的规范后,测试工程师或者程序员自身,就可以实施编码规范检查了。
四、质量度量
有了严格的编程规范,只能算是万里长征迈出了第一步。要提高软件的可重用性,以及软件的可维护性,还需要进一步的努力,即静态质量度量。
五、错误检测
在传统意义上认为,错误检测应该是动态的系统测试的范围。但在bug的成本上分析,有以下公认的结论。
bug发现的越晚,修正的成本就越高,测试阶段修正bug的成本是编码阶段的约4倍的关系。为了减少成本,bug被发现的越早越好。
六、测试要点
1、挑选合适的复审员
2、管理部门的参与
3、技术复审与项目管理
4、复审领导
5、记录员
6、对复审员有所帮助的规则和惯例
本次课重点学习静态测试的简介、技术解释、编码规范、质量度量、错误检测和测试要点等相关知识,希望同学们课后能够自行拓展,更好地了解静态测试。
二、学术解释
1、静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;
2、静态测试是指测试不运行的部分:只是检查和审阅,如规范测试、软件模型测试、文档测试等。动态测试是通常意义上的测试,也就是运行和使用软件;
3、通过评审文档、阅读代码等方式测试软件称为静态测试,通过运行程序测试软件称为动态测试。在动态测试中,通常使用白盒测试和黑盒测试从不同的角度设计测试用例,查找软件代码中的错误;
4、静态测试是指不用执行程序的测试,它主要采取方案—代码走查、技术评审、代码审查的方法对软件产品进行测试。(t)称为:时刻的瞬时利息率(是无风险利率)。
三、编码规范
一个项目或者一个企业,如果要下决心实施软件质量,实施软件工程,第一步要做的就是软件编码规范。编码规范是程序编写过程中必须遵循的规则,一般会详细规定代码的语法规则、语法格式等。企业实施怎样的编码规范,取决于很多个因素:l编程采用的语言,例如C、C++、JAVA、ADA等。项目的规范化程度。目前现成的C/C++编码规范有很多,例如前几年网络上比较流行的《华为公司编程规范》、《摩托罗拉C+编程规范》等。但项目不能完全照搬,应该根据自己所处的阶段,定制属于自己的规范,否则的话,会让程序员无所适从,严重打击程序员的积极性。
年 月 日 (星期 )第 节, 楼 室
教学环节
教 学 内 容
备结
1、软件开发的生命周期
2、软件测试的生命周期
软件测试分为静态测试和动态测试,本次课重点研究软件静态测试相关内容。
一、静态测试简介
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
No.4
授课题目
软件静态测试
教学单元
学 时
2[]
4[ ]
教学目标
[知识目标]:
(1)软件静态测试的概述
(2)软件静态测试的学术解释
(3)软件静态测试的要点
[能力目标]:
(1)提高对软件静态测试和动态测试的分辨能力
(2)提高对静态测试的应用能力
[素质目标]:
(1)提高组织管理能力、团队协作能力
(2)提高语言表达能力、沟通能力