软件静态测试
7.1.静态测试概念:通常是指不执行程序代码而寻找代码中可能存在的错误或评估程序代码的过程。
7.2.静态测试测试对象:各种与软件相关的有必要进行测试的产物,比如各类文档、源代码等。
7.3.静态测试的特点:
(1)不必动态地运行程序;
(2)可以人工进行,充分发挥人的思维优势;
(3)不需要特别的条件,容易展开;
7.4.静态测试的主要内容
(1)各阶段的评审:一般评审包括:培训评审、预备评审、同行评审,我们所关心的是同行评审
(2)代码检查:主要检查代码和设计的一致性、代码对标准的遵循、代码的可读性、代码的逻辑表达正确性,代码的合理性
(3)软件复杂性分析:主要包括软件复杂性度量与控制,软件复杂性度量元,面向对象的软件复杂性度量
(4)软件质量度量:就是从整体上对软件质量进行评测,用于软件开发中对软件进行质量控制,并最终对软件产品进行评价和验收
7.5.评审定义:
评审是对软件元素或项目状态进行评估的活动,用以确定与预期结果之间的偏差和相应的改进意见,一般评审包括培训评审、预备评审、同行评审;
7.6.同行评审:
同行评审一般包括审查、小组评审、走查、桌面评审、临时评审五种类型。
同行评审越正式,发现的缺陷越多,但评审越正式,花费成本越高。被评审对象越重要或者风险越高,采用的评审方式就越正式;一般这5种方法中使用最多的是临时评审
同行评审审查 |
小组评审 |
走查 |
同级桌查 |
临时评审 |
非作者等专家在内的针对特定对象进行检查以发现缺陷的过程,最正式 |
一种“轻型审查”,可采用审查的指导方针和流程 |
是产品的作者向一组同事说明该产品,希望获得他们的意见以满足自己的需要 |
指除作者以外只有一位评审专家对工作产品进行检查 |
请团队内其他同事帮忙,在短时间内解决一些问题,最不正式 |
审查流程 |
没有审查那么正式和严格 |
没有标准的流程可循 |
无标准流程 |
无标准流程 |
每个阶段需要确定的内容 |
会议期间读者的角色由评审组长代替 |
过程由作者主持 |
只有一位评审专家 |
团队同时帮忙 |
审查原则 |
发现问题的数量是审查的2/3 |
比审查发现的缺陷数量要少一半 |
发现问题较少 |
发现问题较少 |
7.7代码检查
(1)定义:是以组为单位阅读代码,是一系列规程和错误检查技术的集合
(2)代码评审开展时间:代码全部或部分完成后
(3)测试目的:及早发现缺陷
(4)具体方法:一般采用静态“白盒”测试的方法
(5)代码检查输出的信息:度量标准、易产生错误的代码、代码规则的执行、流图和调用图的分析
(6)代码检查方法
代码审查 |
桌面检查 |
代码审查组由组长、资深程序员、程序编写者与专职测试人员等,组长不能是被测程序的编写者 |
程序员自己检查自己所编写的程序 |
代码走查 |
技术评审 |
代码走查的讨论过程是非正式的 |
最正式的审查类型,具有高度的组织化,要求每一个参与者都接受训练 |
7.8软件复杂性分析
7.8.1定义:软件复杂性度量是对软件复杂性的定量描述,是软件复杂性分析和控制基础。
7.8.2软件复杂性度量元
把程序结构的控制流程图转化为有向图(即程序图),然后计算强连通有向图的环数来衡量软件的质量,用此方法得到的复杂度称为圈复杂度。(为了使之强连通,我们可以从出口点到入口点画一条虚弧。)
计算公式为V(G)=m-n+p
G是强连通有向图,V(G)是强连通有向图G中的环数,m是G中的弧数,n是G中的节点数,p是G中分离部分的数目