软件测试实验 FindBugs
1.配置 FindBugs
打开 Eclipse,通过【Window -> Preferences】下【Java -> FindBugs】查看 FindBugs的
配置情况。问题: 这里可以配置 FindBugs的哪些特性?
选择导入的项目,通过【Window -> Preferences】下【Java -> FindBugs】查看 FindBugs的
配置情况,得出由图所示可知FindBugs的特性:
1.Run Automatically开关
(1)当此项选中后,FindBugs将会在你修改Java类时自动运行,如你设置了Eclipse自动编译开关后,当你修改完Java文件保存,FindBugs就会运行,并将相应的信息显示出来。
(2)当此项没有选中,你只能每次在需要的时候自己去运行FindBugs来检查你的代码。
2.Minimum confidence to report选择项
这个选择项是让你选择哪个级别的信息进行显示,有Low、Medium、High三个选择项可以选择,很类似于Log4J的级别设置。 比如:
(1)你选择了High选择项,那么只有是High级别的提示信息才会被显示。
(2)你选择了Medium选择项,那么只有是Medium和High级别的提示信息才会被显示。
(3)你选择了Low选择项,那么所有级别的提示信息都会被显示。
此外,还有一个拖动条供选择rank等级(1-20),rank越高,严重程度越低,显示的信息越多。
3.Reported(visible) bug categories选择项(左侧是分类,右侧是等级)
在这里是一些显示Bug分类的选择:
Correctness关于代码正确性相关方面的
Performance关于代码性能相关方面的
Multithreaded correctness关于代码多线程正确性相关方面的
Malicious code vulnerability关于恶意破坏代码相关方面的
Internationalization关于代码国际化相关方面的
严重程度:Scariest>Scary>Troubling>Of concern,这个和rank的设置1-20是匹配的。
4. Detector configuration选择项
在其他的tab标签页中,显示了更多更详细的bug check configuration,用户可以根据需要进行选择和配置。
2.在 Sudoku上运行 FindBugs
打开 Eclipse,在 Sudoku项目上右键选择 FindBugs。
A. 查看 FindBugs发现的问题,一共有几类问题,各是什么含义?将这几类问题翻译成
中文;
答:三类问题。如图:
1. 对数组使用toString方法
Bug: Invocation of toString on combination in solver.Matrix.main(String[])
The code invokes toString on an array, which will generate a fairly useless result such as [C@16f0472. Consider using Arrays.toString to convert the array into a readable String that gives the contents of the array. See Programming Puzzlers, chapter 3, puzzle 12.
解释:在数组上调用toString,这将得到一个没有用处的结果。在考虑使用数组时,toString将数组转换成一个可读的字符串数组的内容。
2. matrix .compute()在循环中使用+连接字符串
Bug: solver.Matrix.compute() concatenates strings using + in a loop
The method seems to be building a String using concatenation in a loop. In each iteration, the String is converted to a StringBuffer/StringBuilder, appended to, and converted back to a String. This can lead to a cost quadratic in the number of iterations, as the growing string is recopied in each iteration.
Better performance can be obtained by using a StringBuffer (or StringBuilder in Java 1.5) explicitly.
解释:该方法似乎是在循环中使用连接构建字符串。在每次迭代中,字符串被转换为
StringBuffer/StringBuilder,附加到字符串,然后再转换回字符串。这可能导致迭代次数的二次成本,因为不断增长的字符串在每次迭代中重复出现。
通过显式地使用StringBuffer(或Java 1.5中的StringBuilder)可以获得更好的性能。
3.读取问题
Bug: Unread field: gui.MainWindow.m_gameOutput
This field is never read. Consider removing it from the class.
解释:存在未读字段:gui.MainWindow.m_gameOutput,也就是说这个字段永远不会被读取。
B. 如何解决 FindBugs指出的问题?请修改 Sudoku程序,以改正所有 FindBugs指出的
问题。注意:同类错误仅需记录一次修改思想即可。
答:修改方法如下:
1. 对数组使用toString方法
解决方法:可以利用Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法
使用时需要导入包:import java.util.Arrays;
修改之后,我们发现bug已经消失。
解决结果:
2. matrix .compute()在循环中使用+连接字符串
(由于思想一样,这里只举例一个来修改)
旧代码为:
String fixed = "";int total = 0;for(int i=0, rows = m_field.length; i<rows; i++){for(int j=0, cols = m_field[i].length; j<cols; j++) {total ++;index ++;if(m_field[i][j] == 0)m_unfixedNumber ++;elsefixed += m_field[i][j]; }}
将原来的代码改成:
StringBuffer buf = new StringBuffer();int total = 0;for(int i=0, rows = m_field.length; i<rows; i++){for(int j=0, cols = m_field[i].length; j<cols; j++) {buf.append(m_field[i][j]);}}{ String fixed = buf.toString();
解决结果:
Normal confidence只剩9个。该Bug已经解决。
3.读取问题
解决方法:可以将语句private GameOutput m_gameOutput = null; 与m_gameOutput = new GameOutput(m_sashForms, SWT.BORDER, m_gameField);语句删除即可
解决结果:
Unread field已经不再提示。该Bug已经解决。
软件测试实验 FindBugs相关推荐
- 软件测试实验4白盒测试,软件测试实验报告白盒测试
<软件测试实验报告白盒测试>由会员分享,可在线阅读,更多相关<软件测试实验报告白盒测试(8页珍藏版)>请在人人文库网上搜索. 1.软件测试与质量课程实验报告实验3:白盒测试姓名 ...
- 前一天日期软件测试需求,软件测试实验日期前一天.doc
<软件测试实验日期前一天.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<软件测试实验日期前一天.doc>文档请在天天文库搜索. 1.软件测试实 ...
- qtp软件测试网站实验报告,软件测试实验报告-QTP的使用
软件测试实验报告-QTP的使用 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 西南科技大学计算机学院实验报告实验名称 QTP的使丿tl ...
- 软件测试实验课ppt,软件测试实验Jmppt课件.ppt
软件测试实验Jmppt课件 软件测试实验三 Jmeter walkerlm@ Jmeter agenda Jmeter简介 Jmeter安装 脚本录制 脚本开发 Web压力测试 数据库测试性能测试 上 ...
- 黑龙江大学软件测试实验报告
软件测试 实 验 指 导 书 黑龙江大学软件学院 实验要求 在<软件测试>的课程实验过程中,要求学生做到: (1)预习相关理论. (2)仔细阅读实验内容提纲,记录测试中所遇到的主要问题, ...
- 软件测试性能实验报告,软件测试实验报告.doc
软件测试实验报告 实验报告 课程名称 软件测试技术 实验项目名称 性能测试工具LoadRunner的使用 班级与班级代码 实验室名称(或课室) 专 业 软件工程 任课教师 学 号: 姓 名: 实验日期 ...
- 5种常用翻译软件测试实验
5种常用翻译软件测试实验 摘要 引言 实验设计 结论 比较 摘要 测试了五种现有的翻译软件,基于不同文本的翻译准确度.将初始中文文本与迭代翻译后的中文文本进行文本相似度计算,得出最优的翻译软件.实验结 ...
- 软件测试实验五脚本扩展,软件测试实验五
1.内蒙古工业大学信息工程学院实 验 报 告课程名称: 软件测试 实验名称: "海信社区"性能测试 实验类型: 验证性 综合性设计性实验室名称: 软件实验室 班级: 软件12-2 ...
- 软件测试文件路径,软件测试---实验2-基本路径测试法
<软件测试---实验2-基本路径测试法>由会员分享,可在线阅读,更多相关<软件测试---实验2-基本路径测试法(4页珍藏版)>请在人人文库网上搜索. 1.实验2 基本路径测试法 ...
最新文章
- Myeclipse中修改项目默认编码还是乱码?一步永久解决!
- Ferderweisser
- 【论文解读】FcaNet:频率通道注意力网络论文解读
- 画箱线图_箱线图的N种画法
- 使用DDD、事件风暴和Actor来设计反应式系统
- matlab曲线拟合 新浪,Matlab曲线拟合
- EasyUI扩展方法
- springboot自定义starter启动器
- 【DPS专题】工业篇:从“低谷”走向“巅峰”,DPS如何成为工业智能制胜法宝?...
- 地理编码的概念及作用
- snipaste滚动截图方法_Snipaste——这是我用过最好用的截图贴图工具!
- 知乎:1.03亿月活用户,获得感战略下的内容质量和商业化布局难平衡
- 麻将开金算法java代_通用麻将胡牌算法
- 类微信卡包应用实现(附源码)
- Swift可选类型(Optional)之星耀
- word文档打不开的常见原因?好的处理方法
- 开手游该如何选用服务器?
- php 如何获取真实的客户端ip
- AVA Actions Dataset 详解
- JDK8 stream流的骚操作
热门文章
- 也谈隐藏盘符等windows 的管理员的策略实现
- 学生认证,专业版pycharm
- c++类成员函数做函数参数
- 董付国老师与Python大事记
- provider: 命名管道提供程序, error:provider: 命名管道提供程序, error:40 - 无法打开到 SQL Server 的连接
- 电脑本地连接,电脑怎么设置本地连接具体方法
- 写给ERP选型的伙伴们!
- python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...
- python爬虫软件-3款你必须知道的爬虫工具
- 静态语言和脚本语言的区别