静态自动化测试(一)
作者:网络转载 发布时间:[ 2012/3/26 11:08:02 ] 推荐标签:
一:静态测试含义:
静态测试是指无须执行被测代码,而是借助专用的软件测试工具评审软件文档或程序,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率。
静态测试包括代码检查、静态结构分析、代码质量度量等。
二:静态测试检查点
个人总结的静态测试检查点如下(疏漏不足肯定有,欢迎大家补充):
三. 代码检查点实例:
下面举几个代码中常见的错误示例,讲讲静态测试的作用和使用角度。
1.空指针风险
Person person = aMap.get(“bob”);
if (person != null) {
person.updateAccessTime();
}
String name = person.getName();
当MAP中不存在” bob”的key值时,name会取到空指针。
2.资源连接未关闭,比如文件,数据流,DB的连接操作完成后,
try {
fr = new FileReader(“D:/userSecondCheckRecoder.txt”);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
需要补充关闭IO语句,fr.close()
3.性能处理技巧,减少内存无谓的耗损
String s = “”;
for (int i = 0; i < field.length; ++i) {
s = s + field[i];
}
以上代码功能上是通过的,但存在性能上不必要的耗损,在每次迭代中,字符串转换为stringbuffer/Builder,并转换回一个字符串。随着越来越多的字符串中的每一次迭代中,这会增加二次迭代的次数,使用StringBuffer效率更高。
更改为以下方式更好:
StringBuffer buf = new StringBuffer();
for (int i = 0; i < field.length; ++i) {
buf.append(field[i]);
}
String s = buf.toString();
4.规范:包含命名规范(类名,方法名,常量变量名),未被使用的变量或者方法,硬编码路径等。比如
File file = new File(“D:/ CheckRecoder.txt”);
5.非法的参数和计算
List<Long> a = new ArrayList<Long>();
a.add(10L);
a.add(11L);
System.out.println(a.contains(10));
应该修改为:
System.out.println(a.contains(10L));
或者比如荒谬的计算:
code = code ? code;
从例子可以看出,代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;静态测试具有发现缺陷早、降低返工成本、覆盖重点和发现缺陷的概率高的优点。自动化维护成本低,且测试较为提前,对缺陷预防很有帮助。
四:主流静态测试工具介绍:
主流的JAVA代码静态自动化扫描工具:FINDBUGS介绍
FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。FindBugs可以在ECLIPSE插件,构建工具(MAVEN,ANT),命令行等方式运行。FindBugs自带了丰富的故障探测器,每种探测器对应的详情如下:http://findbugs.sourceforge.net/bugDescriptions.html,且支持用户自定义规则探测器。运行FindBugs对代码扫描后根据故障类型结果如图:
关于更多故障类型的解读和检测器的自定义方式,将在后面的博文中总结。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11