单元测试的原因
测试的目的
单元测试是对软件组成单元进行的测试。其目的是检验软件基本组成单位的正确性。要先做单元测试,然后再集成测试。否则集成测试全是 bug 。
单元测试的目的:
-
验证软件的正确性,稳定性
-
找出程序中的 bug
单元测试的益处:
提高软件之类;
促进代码优化;
提升研发效率;
单元测试的进行时间
边写码 边测试 Unit Test
最后集成测试:性能测试 + 稳定性测试
单元测试的内容
单元测试的 AIR 原则
A:自动化
能够保证单元测试自动化关闭或开启。
I:独立性
每个模块都相互独立
R:可重复性
可重复测试
单元测试 BCDE
B:Border
要考虑输入值的所有边界值
C:Correct
有正确的输入,得到正确的结果
E:Error
有错误的输入,得到错误的结果
D:Design
与设计文档相结合
单元测试框架
JUnit
Mockito
Spring TestContext Framework
使用 maven-surefire-plugin + Jacco 进行测试覆盖检测
系统安全实践
越权访问的类型
-
垂直越权访问
-
水平越权访问
越权访问漏洞防范措施
-
前后端同事对用户输入信息进行校验,使用双重验证机制
-
调用功能前,验证用户是否有权限调用相关功能
-
执行关键操作前必须验证用户身份,验证用户是否具有操作数据的权限
-
直接对象引用的资源ID要加密,防止攻击者枚举ID,敏感数据要进行脱敏
-
永远不要相信来自用户的输入,对于可控参数进行严格的检查和过滤
敏感数据处理规约
特殊数据授权
特殊信息脱敏
特殊信息加密
特殊信息传输
数据脱敏的原则
-
保持原有特征
-
保持数据之间的一致性
-
保持业务规则的关联性
-
多次脱敏之间的数据一致性
特殊信息脱敏:
前端展示时脱敏
日志记录时脱敏
数据存储加密:
在 Mybatis 中使用 Handler 进行处理。parameter handler 和 result handler
在 JDBC 中使用 statement 进行处理
SQL 注入问题
通过 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令。
$ 和 # 的使用: 避免使用 $
重放攻击
使用 sentinel 实现 API 接口防刷