一、为什么要进行安全测试
安全事故没有发生的时候,大家都相安无事,安全问题一旦发生,就会产生非常严重的后果,甚至可能导致企业倒闭。所以安全测试是我们测试中不可或缺的一环。
二、测试流程
安全角度评审——>代码、依赖安全性扫描——>安全测试用例——>安全测试执行
三、安全测试
3.1 需求评审
需求评审阶段,我们除了关注需求的合理性和价值,还要加入破坏者思维去审视这个需求——这个需求哪里有漏洞,可以让我去破坏他的规则。
比如商家做活动,评论的点赞越多就发送礼品,那么我是不是可以通过接口去不断的刷点赞,让接口tps过载,导致别人无法点赞,这样我就有更大的机会拿取礼品。所以这样就引申出来一个安全性需求——我们需要对活动的点赞和评论做限流处理。
3.2 代码、依赖安全性扫描
1.静态代码扫描(sonar)
SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java、C、C++、JavaScripe等等二十几种编程语言的代码质量管理与检测。
可以从七个维度检测代码质量:
(1)复杂度分布(complexity):代码复杂度过高将难以理解
(2) 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
(3) 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
(4) 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
(5) 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
(6) 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
(7) 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度
2.web安全漏洞扫描工具
参考:https://blog.csdn.net/liuhaiguang2012/article/details/79394971
参考:https://www.cnblogs.com/fulu/p/13562595.html