说说代码质量、代码安全和软件测试

...

鸿铭黑客-黑客24小时在线接单网站 2022-05-08 0阅读

文章最后更新时间:2022年05月08日

作者 | 灰狐

来源 | 灰狐

最近的工作需要,把代码质量、代码梳理安全和软件测试,思考更好地融入日常研发和 DevOps 流水线。

今天就和大家简单聊聊。代码质量、代码软件测试的安全和主题。

有关代码质量,我会用 Sonar 这样的工具,包在内代码质量和代码规范管理对自主研发产品和外包项目的质量控制非常重要。

快速体验Sonar,是的,克隆 Open Testng Suite,然后运行 mvn 命令


这是 Sonar 官方项目,我们也一起理解和感受。



除了代码质量外,代码安全也越来越受到关注。你可以想想,如果代码软件系统怎么能安全呢?

如今,开源项目越来越多,如何确保使用和集成的开源软件是安全的,没有后门和植入恶意软件。

静态分析和软件安全测试可作为一个突破口,因为有大量的开源软件可供分析和评估。并且可以参与到开源项目中进行静态分析和软件测试,贡献力量,提升影响力。

代码规范安全编程,如何编写安全更强代码,值得多了解。

代码写下扫描、机器学习、未来程序员代码,代码机器人可以立即感知错误和安全问题。在未来,优秀的发展代码比开发差代码更容易正确。

此外,技术人员可以从测试人员进入这个行业,看到更丑陋和美丽代码之后,你的审美观会逐渐形成并不断提高,这可能会帮助你在未来成为一名优秀的程序员。

这里有很多代码一些关键检查包括:

* API错误使用

* 最佳安全编码实践

* 常见编码错误

* 缓冲区溢出

* 建系统安全问题 (Maven,Gradle,Bazel)

* 类型和级别不匹配

* 代码可维护性问题(没有单元测试,难以重构)

* 并发数据访问冲突

* 控制流问题

* 要求伪造跨站(CSRF)

* 跨站脚本(XSS)

* 死锁

* 处理异常和错误问题

* 不安全的数据处理

* 边界问题,溢出

* 内存问题:脏内存、内存损坏、非法访问内存、指针、空指针引用等

* 路径操作

* 如何性能低效,如何改进和提高

* 考虑引入分布式调用链

* 配置设置错误(尤其是 Spring 和 Java 应用程序需要维护大量的配置信息。

* SQL注入

还有很多事情要做 ...

接下来,我们应该做好静态分析,因为它非常重要。

静态程序分析是在程序不执行的情况下进行的。通过编写代码快速发现和修复安全和质量问题。也是静态分析,静态应用安全测试 (SAST) 等相关内容。

想想看,若能随代码及时识别编写代码软件质量缺陷和安全漏洞严重。将自动安全测试无缝集成到CI/CD Pipeline支持现有的开发工具和工作流将是一项非常重要和酷的工作。并管理安全政策的合规性(如:OWASP Top 10、CWE/SANS Top 25和PCI DSS),支持多语言、多框架、模板、多平台、各种编译器和主流IDE。

代码安全试验后,常以安全审计报告的形式呈现。

这里有一份安全审计报告供您学习参考。

这是分布式应用运行时的 Dapr 接受了 CNCF 经批准的网络安全公司 Cure53 安全审计。测试的重点是:

* Dapr 运行时代码库评估

* Dapr 组件代码基础评估

* Dapr CLI 代码基础评估

* 权限升级

* 流量欺骗

* 密钥管理

* RBAC

* 验证基本假设:mTLS、作用域、API 身份验证

* 排列强化 ( Kubernetes)

* DoS 攻击

* 渗透试验

本报告还可以指导我们日常安全审计工作的一些思路、流程和重点。

可以关注一些静态分析资源。

Awesome Static Analysis

此外,跟进领导厂商,不断更新知识结构和实践技能。


聊了代码质量和代码安全后,我们来谈谈软件测试。

必须增加传统测试代码质量管理,而不仅仅是功能上的黑盒测试,还有程序内部和逻辑上的白盒测试,也能带来团队代码规范制度的逐步形成和长期实施。

黑盒测试(功能测试):黑盒测试人员不了解程序的内部情况,也不需要有应用程序代码、内部结构和编程语言的力的内部结构和编程语言专业知识。

白盒测试(逻辑测试):白盒测试人员需要了解待测试程序的内部结构、算法和其他信息,这是从程序设计人员的角度进行的。根据测试水平的复杂性,白盒测试需要具有更高知识和能力的程序员。


(图片来自网络)

说到测试,说到 Java 测试,不能绕过 JUnit,TDD,BDD,Refactoring,不详细介绍他们的内容,就说说自己的感受。

JUnit 在 Java 世界是单元测试的事实标准,必须掌握。


(图为JUnit5架构,JUnit 5 = Platform Jupiter Vintage)

有关 TDD 和 BDD,尤其是这两句话,意义重大,大家细细品味。

Build the thing right,Build the right thing.


(图片来自网络)

关于重构:任何傻瓜都可以写电脑可以理解的东西代码。只写人类容易理解的东西代码,是优秀的程序员。


(图片来自网络)

我们有无数的开源软件可以阅读,无数的系统等待测试,无数的代码需要重构。

所以,代码质量、代码安全、代码搜索、代码测试、代码重建不仅是一种商业,也是一种商业模式。

软件测试工程师的职业发展计划可以简单参考。这本书于2003年出版,仍然很有用。



个人 Development,Testing,DevOps 三位一体,学习体系,供参考:

1、Spring(Spring Boot,Spring Cloud),MicroProfile JHipster

2、JUnit,TDD & BDD,Refactoring Open Testing Suite(OTS)

3、Sonar,Elasticsearch,Jenkins Open DevOps Dashboard(ODD)

另外,一套主要软件测试栈应包括:

* 使用 JUnit 5 单元测试;

* 使用 Spring Test Context 框架集成测试;

* 用 Jest 进行 UI 测试;

* 使用 ArchUnit 架构测试;

* 用 Gatling 性能测试;

* 行为驱动(BDD)的 Cucumber 测试;

* Karate 全自动化测试

* 用 Cypress 或者 Protractor 进行 Angular/React/Vue 集成测试


(Karate: Test Automation Made Simple.)

参考书籍:

《Google 软件测试之道Google Testing Blog (有空就刷行业标杆)

《重构-改善即有代码的设计》

测试驱动开发

软件自动化测试

...


文章来源:http://www.schmyw.com/
声明:如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!

相关阅读

2971 文章数
3674 评论数

项目介绍

最近发表

随便看看

热门文章

咋样能彻底删除微信聊天记录「如果发现老公天天跟女人聊天怎么办」
永久删除微信聊天记录「怎么查别人微信聊天记录」
微信聊天记录能查到吗「微信聊天记录有没有办法恢复」

热评文章

标签列表