• 0
  • 0
分享
  • 说说代码质量、代码安全和软件测试那些事——软件测试圈
  • 恬恬圈 2023-12-08 15:18:17 字数 2331 阅读 1237 收藏 0

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

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

  有关代码质量,我会借助 Sonar 这样的工具,将其纳入代码质量和代码规范管理,这对自研产品和外包项目质量把控都非常重要。

  快速体验下 Sonar,可以这样,克隆 Open Testng Suite,然后运行 mvn 命令。

1-1.png

  这是 Sonar 官方项目,大家也一同了解、感受下。

1-2.png

1-3.png

  除了代码质量外,代码安全也越来越备受关注。大家可以想想,如果代码都不安全,怎么可能做到软件系统安全呢。

  现在,开源项目也越来越多,如何保证使用和整合的开源软件是安全的、没有后门和被植入恶意软件。

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

  代码规范、安全编程,如何编写安全、更健壮的代码,都值得我们多去了解。

  代码扫描、机器学习、未来程序员一写出代码,代码机器人就能立即感知错误和安全问题。在未来,开发优秀代码应该比开发烂代码更容易才对。

  而且,技术人员可从测试人员进入这个行业,看多了丑陋和优美的代码后,你的审美观会逐步形成并不断提高,或许能帮助你未来成为优秀的程序员。

  这里有很多代码安全工作可做,一些关键检查包含:

  * 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

  另外,跟进领导厂商,持续更新知识结构和实践技能。

1-4.jpg

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

  传统测试一定要增加这样的代码质量管理,而不是仅仅只有功能上的黑盒测试,还应有进入程序内部和逻辑的白盒测试,这也能带来团队代码规范制度的逐步形成和长期执行。

  黑盒测试(功能测试):黑盒测试者不了解程序的内部情况,不需具备应用程序的代码、内部结构和编程语言的专门知识,所以不硬性要求具有编程知识和编程能力。

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

1-5.jpg

(图片来自网络)

  说到测试,聊到 Java 测试,绕不开 JUnit, TDD, BDD, Refactoring,有关它们的内容就不详细展开,就说说自己感受。

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

1-6.png

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

  有关 TDD 和 BDD,尤其这两句,意义非凡,大家细细品。

  Build the thing right, Build the right thing。

1-7.png

(图片来自网络)

  关于重构:任何一个傻瓜都能写出计算机可以理解的代码。惟有写出人类容易理解的代码,才是优秀的程序员。

1-8.jpg

(图片来自网络)

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

  所以,代码质量、代码安全、代码搜索、代码测试、代码重构是门生意,也是一个商业模式。


作者:灰狐    

来源:http://www.51testing.com/html/11/n-6657911.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 概述:边界值分析是测试设计一个稳定的部分,但是对黑盒测试人员来讲有时候边界并不是那么明显。这些不明显的边界被称作隐藏的边界。本文提供几个隐藏的边界的例子,还有一些以让隐藏边界显露来设计测试计划的要点方法。测试设计中隐藏的边界有哪些?这几个例子告诉你答案使用边界值分析和等价类划分是测试设计的基础做法之一。该理论的含义是对于一个特定的输入,测试中更常使用的值是在这些输入范围的边界附近的值。在边界之间的一类值当用到测试时常被认为是“等价的”。举个例子,如果你的APP有一个功能是让输入一个价格的打折值,有效的范围很可能就是0百分比到100百分比。将要测试的值就会是那些在边界附近的值,或-1百分比,0百...
            0 0 1279
            分享
          • 读者提问:『阿常你好,请问在敏捷开发的项目中,你作为项目中唯一的测试人员如何制定相对符合的测试计划推动项目进程呀 ?』阿常回答:一页纸的测试计划即可(简单列下当前迭代任务的测试点、测试策略、交付目标)。为了适应敏捷开发的节奏,我们采用敏捷测试——敏捷测试是持续地对软件质量问题进行及时的反馈,要达到快速反馈就需要对传统测试流程——比如制定测试计划、编写测试用例等流程做剪裁。在敏捷测试中,针对每一次版本迭代我们需要同时考虑对新功能的验证测试,以及对原有旧功能的回归测试。敏捷测试实现 “ 持续测试 ” 的关键在于自动化,而自动化主要用于对旧功能的回归测试。阿常...
            0 0 1054
            分享
          •   Twitter公司的前身 Twitter 正准备对其算法进行一次"重大更新"。马斯克说,目前该应用的"For You"推送会显示来自其更广泛网络的热门和趋势帖子,以及你关注的人的精彩内容,而新算法将显示来自相对影响力不那么大的一般账户的帖子。  他指出,这些帖子和账户将包括用户"好友和关注"网络之外的账户,这意味着这一变化将试图让用户接触到他们可能觉得有趣但尚未发现的新账户。这也将使小型创作者有机会被更多人发现,这也符合马斯克将 X 打造成一个创作者平台的计划。  在过去的几个月里,X 平台针对创作者推出了一些功能,比如支持长篇文...
            0 0 324
            分享
          •   赫芬顿邮报创始人阿里安娜?赫芬顿(Arianna Huffington)和 OpenAI CEO 萨姆?阿尔特曼(Sam Altman)宣布联合创办一家名为 Thrive AI Health 的公司,旨在利用人工智能技术帮助人们养成更健康的生活方式。  Thrive AI Health 由赫芬顿的健康公司 Thrive Global 和 OpenAI 创业基金会共同出资成立,致力于打造一款“AI 健康教练”,根据用户在睡眠、饮食、健身、压力管理和社交方面的情况提供个性化建议。该公司 CEO DeCarlos Love 此前曾在谷歌旗下可穿戴设备公司 Fitbit 担任健身和健康体验负责人。...
            0 0 184
            分享
          •   “系统软件配置不得当”占所有“环境配置不得当”至少30%,这其中数据库的参数配置对性能的影响最大,需要检查的点也最多,从这一期开始专门介绍数据库的性能测试检查(以Oracle为例,因为Oracle用的最广 ^v^),因为数据库的设计复杂,影响性能测试的点不计其数。  检查的目的是什么呢?如果是测试环境,首先需要检查参数配置是否和生产环境相同或相似,如果是生产环境,需要检查参数配置是否合理。并且,由于数据库的设计逻辑,相同的场景跑几遍,其性能结果也是不同的,所以,环境检查的目的也是要确保测试结果的稳定性、可重复性。  举个例子,第一次跑的时候,数据在磁盘了,跑到过程中调入了内存。第二次跑的时...
            0 0 1763
            分享
      • 51testing软件测试圈微信