测试体系搭建之代码扫描基础——软件测试圈软件测试文章

静态源代码扫描是近年来软件测试过程当中,被人提及较多的软件应用安全解决方案之一,也是大厂必备考题。

它是指在软件工程当中,程序员在写好源代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷、安全漏洞的解决方案。

静态扫描技术已经从90年代时候的,编码规则匹配这种由编译技术拓展过来的分析技术向程序模拟,全路径执行的方向发展。

由此,这种模拟执行相对的执行路径比动态执行更多,能够发现很多动态测试难以发现的缺陷,在源代码环节就减少bug,更快地提高测试的效率。

关于代码扫描工具,比较主流的有SonarQube、FindBugs、AlibabaJavaCodingGuidelines、CheckStyle。

今天我们主要从SonarQube做一个切入,细细了解。

SonarQube大致分为idea插件版本和带有非常友好功能强大GUI的SonarQube代码质量平台,完全能满足我们的需求。

SonarQube的优势

个人使用之后认为,sonarQube的优势如下(相比于阿里编码规约这种市面上常见类似软件):

更加优秀的图形化界面基本上通过界面就可以对自己项目的代码状况一目了然。

可以查询出其它软件难以定位到的问题。

比如:

·可能导致空指针异常的问题(对象在进行使用前没有加空的判断);

·可能导致内存泄漏的问题,在trycatch块里面,直接使用e.printStackTrace()将堆栈信息打印到内存;

·可能导致的漏洞,成员变量使用public定义。

还有诸如流等未关闭或者是非正常关闭,都能够检测出来,功能非常强大。

支持Java、C#、C/C++、PL/SQL、Cobol、JavaScrip、Groovy等等二十几种编程语言的代码质量管理与检测。

Sonar(SonarQube)是一个开源平台,用于管理源代码的质量,开源意味着可信赖,安全可靠,不需要担心代码泄露的风险。

SonarQube的检测维度

复杂度维度检测

如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

重复性代码检测

重复显然程序中包含大量复制粘贴的代码是质量低下的,Sonar可以展示源码中重复严重的地方。

代码规范

不遵循代码标准,都可以检测出来。

自定义规则编写

Sonar可以通过PMD、CheckStyle、Findbugs等等代码规则检测工具规范代码编写。

代码注释检查

注释不足或者过多没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降。

而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

单元测试结果展示

缺乏单元测试Sonar可以很方便地统计并展示单元测试覆盖率。

循环嵌套代码检测

糟糕的设计通过Sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则。

通过Sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测藕合。

SonarQube架构

SonarQube服务器

主要包括web服务器,基于ElasticSearch的搜索服务器,计算引擎服务器。

其中,web服务器是供开发人员浏览查看代码分析结果、进行相应的配置等。

计算引擎服务器主要是处理代码分析报表并将其存储在数据库。

SonarQube数据库

存储配置信息和代码分析报表。

多个Soanr插件

包括分析各种语言的插件。

多个SonarScanner

主要运行在开发人员的代码端,可以单独部署,也可以集成在Maven、Gradle等。

SonarQube实战

下载

根据对应的操作系统下载安装包。

解压

解压安装包,如果是windows环节的话,配置环境变量到path,见图:

验证

验证是否成功,如下提示则表示成功:

以上安装完毕,接下来我们通过扫描器结合SonarQube来完成对代码的质量扫描。

创建口令

在Sonar系统内创建token口令,建项目名称,下一步用到:

这里的token在第一次登陆SonarQube系统时会提示你录入,见下图,也可以跳过,登陆系统后可以在如上图位置进行设置。

检查

cd到你需要进行代码检查的项目目录,执行如下命令(Windows服务器):

SonarQube报告解析

点击项目名称,查看报告总览:

异味是轻微问题,不影响代码,如创建一个变量,但从未使用过。

严重程度:严重程度是开发人员用来标记问题等级,排序为阻断、严重、主要、次要、提示。

处理方式:处理方式是开发人员用来标记问题的产生。

如当评估一个问题需要修改,开发人员要确认此个问题,修改后点击解决。

如果认为这个问题是代码规则不符,不需要修改,则点击误判或不修复。

THE END
1.对PHP源码的测试php源码检测从2月24号左右,开始从源码阅读并且二改,由于中途网站需要备案就隔了一个星期多没搞了,直到今早起来看到信息,备案通过了,吃完饭就开始改,终于在下午全部测试完成! 我看了一下原作者用的是MDUI+腾讯云的服务器,MDUI是0.4.2版本,现在MDUI更新到了1.0.1了,不过不影响基本的功能,于是开始搭建并且测试功能。 https://blog.csdn.net/qq_53325717/article/details/129324105
2.怎么测试php源码?Worktile社区1. 单元测试框架:选择适合的单元测试框架,比如PHPUnit,来编写和运行PHP源码的单元测试。使用单元测试框架可以对PHP代码的功能进行测试,确保代码行为符合预期。 四、功能测试1. 编写测试用例:根据PHP源码的功能特点,编写相应的功能测试用例。测试用例应该覆盖尽可能多的场景,以验证PHP源码的正确性。 五、性能测试1. https://worktile.com/kb/ask/102968.html
3.网页测试Java代码测试网页源码mob6454cc623087的技术博客网页测试Java代码 测试网页源码 网站有错误代码?不兼容?有时候就在状态栏显示错误,代码很长挨个看实在头疼。于是百度一下,狂搜网页错误在线检测工具,结果还真发现了不少,把用过的工具进行了整理,分网页代码测试、网页兼容性、网速测试、seo优化四大类收集了30多个可以在线测试网页的工具,推荐也收藏一下,以后备用。https://blog.51cto.com/u_16099170/9146276
4.个人源码测试数据可视化中心 将文件拖到此处,或点击上传 只能上传csv文件,且不超过500MBhttp://www.china1.fun/
5.php最新版微测试源码v1.02源码下载适用范围: 微应用平台源码APP微博应用程序,微趣源码,微趣应用平台,微测试源码 运行环境: PHP、MYsql 其他说明:最新微应用平台源码,无后台(后台也没用),不用数据库,支持腾讯QQ空间,支持关注认证空间,共60多个测试~~ 之前我们也首发了2012微趣应用平台/微趣源码/APP微博应用程序/微应用平台源码,是微博登录的,这次发布https://www.jb51.net/codes/89769.html
6.最新周易测算系统源码完美运行(无需授权)新版测算系统海外多语言源码 2024-09-18 PHP姓名配对测试源码 2024-07-16 最新周易测算系统源码完美运行(无需授权) 2024-07-03 最新测算塔罗源码/算命源码(可以运营) 2023-08-12 星座运势在线查看网站开源源码 2023-03-29 2022在线算命网站源码(周易测算h5源码) 2022-09-22 (最新开运网)算命网/周公八字婚姻预测https://www.huizhanii.com/34714.html
7.搬运FAQ丨《数码宝贝:源码》链接测试须知数码宝贝源码吧各位被选召者们好,《数码宝贝:源码》「链接测试」将于12月12日10:00正式启动!为了帮助大家更好地了解本次测试,请仔细阅读以下【测试须知】。Q:本次测试的具体信息A:测试时间为12月12日10:00至12月19日22:00,测试期间不开放充值服务,测试结束后所有游戏数据将被清除。Q:如何获得本次测试的资格?A:12月12日https://tieba.baidu.com/p/9322273574
8.搜狐视频解析源码测试时间:2024.09.18搜狐视频解析源码【测试时间:2024.09.18】 此内容为付费资源,请付费后查看 ¥588 VIP¥538SVIP¥388 立即购买 您当前未登录!建议登陆后购买,可保存购买订单,凭订单享受售后更新服务 付费资源介绍 搜狐视频解析源码,PHP代码,支持mp4和m3u8解析,mp4可免VIP账号cookie,高清画质;m3u8会员视频需配置VIP账号cookie,支持多账号https://www.leafone.cn/315.html
9.数码宝贝源码链接测试资格怎么获取链接测试资格获取方法数码宝贝源码是一款童年经典的养成冒险回合制游戏,游戏采取了次世代PBR写实风格数码宝贝和奇幻数码世界风格,给玩家们带来全新的玩法体验,游戏在今日上线了链接测试的活动,玩家们对这个测试资格的获取方法也是比较关注的,下面就让小编给大家带来《数码宝贝源码》链接测试资格获取方法,一起来看看吧。 https://shouyou.3dmgame.com/gl/541580.html
10.单元测试Parasoft中国官网验证目标代码中无错误,并且遵循相关安全标准。而在测试驱动开发(TDD)环境中,代码功能和质量保持不变,所以不用担心需要对已有代码的更改。https://www.parasoftchina.cn/solutions/unit-testing/
11.我个人的LinuxTCPserver和client测试源码,C语言(2)(★firecat简介:我个人的Linux TCP server和client测试源码,C语言(2)(★firecat推荐★) 二、echo源码2如下,main.c #include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/epoll.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <sys/rehttps://developer.aliyun.com/article/803527
12.通达信几天几板行情排序指标副图源码测试图通达信公式指标引用到GPJYVALUE交易类数据,需要下载专业财务数据才能使用 去除ST和停牌:=NOT(NAMELIKE('S') OR NAMELIKE('*S')) AND VOL1; ZDF:=IF(INBLOCK('创业板'), 0.2, IF(INBLOCK('科创板'),0.2,IF(INBLOCK('ST板块'), http://www.gszx.com.cn/html/tongdaxingongshi/gs280602.html
13.AI面相测试源码AI面相手相大师小程序源码最新版AI面相测试源码安装前准备的资料1、微信公众号(认证服务号)2、服务器3、备案域名解析4、申请支付5、AI人脸识别接口自行申请 AI面相测试源码安装环境Linuxphp 5.6+mysql 5.6 AI智能面相——2019现象级、刷屏级全网爆红产品AI人工智能算法PK传统线上风水吸金行业 https://www.songma.com/product/view138762.html
14.干货!手把手教小白批量制造测试数据!(附源码)(附源码) 造数据核心思想 在性能测试的工作中,我们经常会遇到造数据的需求,这个工作可以让开发同学来配合,但这必定还要看开发同学的脸色行事!遇到nice的开发同学自然工作顺利,但是遇到配合度不高的开发同学,往往需要协调领导来促成此事,这就比较麻烦了!本文就通过循环批量插入数据的实例来模拟造数据这个场景,提供的都https://www.jianshu.com/p/d96aafc102fe
15.「翔博精选指标」金手指(通达信公式主图源码测试图)箱底箱本指标有未来函数 发现未来函数DVOL! 发现未来函数DCLOSE! 发现未来函数TROUGH! 发现未来函数PEAK! {金手指} MA1:MA(CLOSE,5); MA2:MA(CLOSE,10); MA3:MA(CLOSE,25); MA4:MA(CL 本指标有未来函数 发现未来函数DVOL! 发现未来函数DCLOSE! 发现未来函数TROUGH! http://www.xiangbosoft.com/shenghuo/9592.html
16.同花顺GS趋势策略副图指标多指标组合趋势买卖策略源码测试图授权方式:指标源码 公式分类:同花顺公式 指标类型:副图 运行环境:同花顺软件 所需积分:0 相关Tags: 同花顺GS趋势策略副图指标 多指标组合趋势买卖策略 源码 测试图介绍 好股网(www.goodgupiao.com)提示:您正在下载的是:同花顺GS趋势策略副图指标 多指标组合趋势买卖策略 源码 测试图 https://www.goodgupiao.com/gupiaogongshi/65601.html
17.PHP开发的DJ音乐网整站源码PC+WAP亲测完美运行3000多数据带8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别! 站长QQ:1754646538 站长邮箱:1754646538@qq.com dj源码音乐网 YUANLEISVIP 全网VIP视频解析网站源码 带后台 可自定义广告【免费分享】 https://www.yuanlei.net/157131.html
18.2021年1月16日随着我国软件产业与信息化建设的深入发展,软件安全测试技术逐渐成为软件企业生存和信息化项目建设好坏的关键,提升我国软件测试能力,已成为保障软件质量的必要手段。培养测试高级人才、提供高效、优质的软件质量测试服务是当前共同的目标。 为进一步帮助各单位相关人员深入了解软件安全测试技术及渗透测试技巧,提升各相关单位的应https://www.cesi.cn/202101/7184.html