测试工程师如何帮助开发域的质量变好

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 测试工程师如何帮助开发域的质量变好

1、SonarQube的技术债务

SonarQube扫描出来Gitlab的repo的技术债务需要清零,在迭代过程中,团队需要持续关注技术债,保持技术债稳定下降的趋势,建立修复技术债的技术故事卡(举例如下),在对应的提交中需要将代码提交的commit message中的需求id填写该技术故事卡的ID。

前后端技术债务减少10%
AC1:后端代码库减少 sonar 扫描问题,BUG、漏洞、坏味道减少10%
AC2:后端开发配置 idea 本地 sonarlint 插件(开发时注意不引入新的问题)

2、单元测试

单元测试的两种实践:

  • 普通的开发模式实现开发实现故事卡的逻辑代码,然后再根据写好的代码编写单元测试,对单元模块进行测试。
  • 采用测试驱动开发的开发人员,根据用户故事中的AC或测试用例,先进行测试用例的编写,再进行功能模块的开发。

单元测试的一些规则:

  • 被测函数的外部函数调用,外部服务调用,都需要解耦(java推荐mockito)。
  • 被测试函数访问数据库、消息中间件、redis等中间件的,都需要解耦。
  • 测试类在test目录下所在的路径应与被测试的类在src/main/java下的路径保持一致。通过约定的规则,测试类和被测试类相对应,方便查看和定位。
  • 测试类的命名和被测试类保持一致,后缀加上Test。
  • 测试用例的命名应该采用should_get_when的方式:should_get_number_when_score_given_equal_60()。
  • 每一个测试用例必须有断言,用断言验证测试结果。
  • 单元测试代码和被测试业务逻辑代码最好再一次commit中提交,如果分开,也建议前后2-3个commit中提交,避免先写完逻辑代码,批量补单元测试的情况。

3、CodeReview

代码评审比较常用的有:

  • 基于Gitlab的Merge Request,相关评审人员走查通过后,代码合并到release分支中
  • 集体代码走查,在开发人员提交测试前,组织团队成员进行集体评审。目前组织级的实践要求通过Gitlab进行代码评审,各团队可以自行选择是否开展集体代码走查,并制定执行集体代码走查的条件和规则
    两种实践可以混合使用。

3.1 基于Merge Request的评审

    1. 开发人员在feature开发分支上完成代码提交,并推送到gitlab服务器
    1. 开发人员在Gitlab上发起Merge Request,目标分支为release分支。选择Assignee(指定Reviewer),选择审核人(approvers)及最小批准人数(Approvals required)。根据描述模板中的内容检查代码状况,然后进行提交。

image.png

    1. 代码审核人员审查提交的Merge Request,评审时为存疑的代码片段添加注释comments,MR的创建者应对相应的注释及时解答。
    1. 审核通过,可以提交Merge,将代码合并到目标分支。

3.2 集体代码走查

3.2.1 集体代码走查的意义

    1. 传播知识,避免对特定模块/特定人员的依赖。
    1. 达成共识,避免重复,改善设计。
    1. 让新人从讨论中学习到解决问题的思路和技术要点。
    1. 培养新人的最直接和最有效的途径,对已有代码的讨论,既实例化,又能直接提升质量。

3.2.2 集体代码走查的频次

频率建议一开始每天做一次代码走查。如果大家时间很难协调, 也要保证每周两到三次。时长根据团队大小决定,如果小团队(2~3人),时间控制在半小时以内。如果团队人员较多,1小时为宜。根据发现问题的情况,及时调整评审的范围和时长。频率和时⻓可以根据团队情况不断调整,最终找到最合适你团队的实践。

3.2.3 评审议程

    1. 检查上次代码走查所记录的改进点是否已经修复,更新记录表
    1. 代码作者简要介绍所走查的代码的业务上下文和开卡验卡验收条件
    1. 展示代码规范标准工具扫描结果
    1. 作者展示所修改的代码,参与者提问,作者答疑
    1. 作者记录改进点
目录
相关文章
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【8月更文挑战第27天】在软件开发的海洋中,自动化测试是确保航船不偏离航线的关键罗盘。随着人工智能(AI)技术的兴起,这艘航船正乘风破浪,以前所未有的速度前进。本文将探索如何通过AI技术优化自动化测试流程,不仅提高测试的效率和覆盖范围,而且增强测试用例的智能生成和结果分析能力。我们将从AI在自动化测试中的应用入手,深入探讨其对测试准确性和效率的影响,以及面临的挑战与未来的发展方向。
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试的未来:AI的崛起与质量保证的革新
在软件开发的世界中,测试一直是确保产品质量和用户满意度的关键步骤。随着人工智能技术的飞速发展,传统的软件测试方法正逐步被智能化工具所取代。本文将探讨AI如何重新定义软件测试流程、提升测试效率以及预测未来可能出现的挑战和机遇。
|
20天前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
42 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的自动化测试:提升软件质量的未来之路
【9月更文挑战第3天】AI驱动的自动化测试是提升软件质量的未来之路。它借助AI技术的力量,实现了测试用例的智能生成、测试策略的优化、故障预测与定位等功能的自动化和智能化。随着技术的不断进步和应用场景的不断拓展,AI驱动的自动化测试将在未来发挥更加重要的作用,为软件开发和运维提供更加高效、准确和可靠的解决方案。
|
15天前
|
监控 测试技术 UED
软件测试的艺术:确保质量的五个关键实践
【8月更文挑战第28天】 在软件开发领域,测试不仅是发现错误的工具,更是确保产品稳定性、性能和用户满意度的基石。本文将深入探讨五个关键的软件测试实践,包括单元测试、集成测试、系统测试、压力测试和回归测试,以及它们如何共同构建起一个坚实的质量保证体系。通过这些实践,我们不仅能够提升软件的质量,还能更好地预测和应对潜在的风险,从而为最终用户提供更加稳定可靠的软件产品。
32 5
|
21天前
|
机器学习/深度学习 敏捷开发 人工智能
软件测试的艺术:确保质量的哲学与实践
【8月更文挑战第21天】在软件工程的世界中,测试不仅仅是一项技术活动,它更像是一门艺术和哲学。本文旨在探索软件测试的核心价值和基本原则,强调其在软件开发生命周期中的重要性。通过分析测试的不同阶段和策略,我们揭示了如何通过细致的测试规划、创造性的测试设计、以及持续的改进过程来提升软件质量和用户体验。文章将展示如何在不断变化的技术环境中保持测试活动的相关性和有效性,同时也会讨论测试团队如何适应敏捷开发模式,以及如何利用自动化工具来提高测试效率。最终,我们将探讨测试的未来趋势,包括人工智能和机器学习在测试中的应用前景。
|
18天前
|
Web App开发 安全 Java
软件测试中的自动化:提升效率与质量
【8月更文挑战第24天】在软件开发的海洋中,测试是确保航行安全的灯塔。随着技术的发展,自动化测试工具如同现代化的导航系统,为软件的质量保驾护航。本文将带你了解自动化测试的重要性,探索如何利用这些工具提升测试效率和软件质量,并结合实例,展示自动化测试脚本的编写和应用。让我们一起启航,探索自动化测试的世界!
|
18天前
|
人工智能 Java 测试技术
自动化测试之美:如何用Selenium提升Web应用的质量保证
【8月更文挑战第24天】 在软件开发的海洋里,自动化测试如同一艘救生艇,帮助开发团队保持代码质量的同时,还能确保他们不会淹没在功能的迭代和bug修复中。Selenium,作为一个用于Web应用程序测试的工具,它的强大之处在于模拟真实用户操作的能力。本文将通过浅显易懂的语言和实际代码示例,引导读者理解Selenium的魅力所在,以及如何有效利用它来提升Web应用的测试效率和覆盖率。
|
18天前
|
测试技术 持续交付 数据安全/隐私保护
自动化测试的奥秘:揭开软件质量保证的面纱
【8月更文挑战第24天】在软件开发的海洋中,自动化测试如同一座灯塔,指引着项目安全地航行。本文将深入浅出地探讨自动化测试的重要性、实施策略以及它如何成为现代软件开发不可或缺的一部分。通过生动的例子和实用的建议,我们将一起探索自动化测试的世界,解锁其对提升软件质量和开发效率的秘密。
|
27天前
|
运维 测试技术
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别