软件静态测试是相对于动态测试来说的,是指不运行软件系统,而是通过检查程序代码的语法、结构、过程、接口等来判断程序的正确性。软件静态测试方法一般有代码审查、技术评审、交叉评审、走查等方式,通常都是通过阅读文档和代码来检查软件程序是否存在问题。这要求走查人员或评审人员有深厚的开发经验和技术知识。与我们通过评审来检查测试大纲、测试用例的覆盖率、准确性和规范性有异曲同工之妙。
一般审查以下方面:
1、 代码是否与设计一致,是否符合软件需求、概要和详细设计,这不仅可以看出代码问题,也可以反过来更早发现需求或设计是否正确。
2、 代码书写的规范性和可读性。每个项目都有有代码编写规范,如Java编写规范,C语言编写规范等。规范的代码包括清晰且充分的注释、漂亮的对齐、没有冗余、规范的命名等等。
3、 代码逻辑是否正确,有没有死循环、内存泄露,异常处理是否充分,事务处理是否正确等等
4、 代码是否有安全漏洞、易被攻击
5、 代码文件组织目录是否合理,代码的结构是否合理
6、 代码的重用性或复用性是高还是低
7、 代码嵌套调用是否过多
等等
在实际项目中,代码检查比动态测试还有效果,能发现30%到70%的缺陷,是预防程序缺陷的有效手段。而且静态测试方法一般发生在软件程序编译成机器代码(二进制文件)之前,是发生在项目早期阶段,因此缺陷发现更及时,缺陷修复成本更低。不过静态测试方法很耗时间,对走查人员的知识和经验要求很高。所以很多代码走查的自动化工具应运而生。其中有代表性的工具有 Telelogic公司的Logiscope,PR公司的PRQA,Coverity,Klocwork,C++ Test,Findbugs,Checkstyle等等。有些工具只针对Java语言,有些工具只针对C和C++语言,有些工具可以两者都测试。还有特地针对代码安全的静态测试工具,如Fortify公司的Fortify SCA,Security Innovation公司的CheckmarxSuite和Armorize公司的CodeSecure。很多大型公司,尤其是大型软件研发公司,都会购买一款代码走查分析的工具来进行静态测试,更早、大批量的揪出缺陷,减少后期测试发现的问题数,从而降低软件研发成本。以后将专文分析这些软件静态测试工具。
领取专属 10元无门槛券
私享最新 技术干货