如何提高代码质量:5 个基本步骤

软件开发团队有时会遇到各种挑战,导致他们难以按时生产高质量的项目。在这里,我们讨论了通过持续测试快速保证质量的五种策略。

每个人都想要更高质量、更快的软件。对现代软件开发团队的要求是巨大的——从日益激烈的竞争和市场压力、不断增加的功能和复杂性,到对产品质量、安全性和可靠性的更高期望。敏捷开发方法经常受到追捧,因为它有望更快地响应变化并更好地实现客户需求。

但敏捷和 DevOps 经常被作为一种用更少的资源更快地完成软件的方式来销售,尽管这并不是其本意。实际上,多达 70% 的 IT 项目失败或未达到目标,聪明的开发团队正在寻求改进他们的开发实践,以便他们不仅可以成功完成项目,还可以为未来的迭代和产品创建可重复的流程。在这篇文章中,我们将讨论如何实现敏捷和迭代方法所需的敏捷性,同时不仅实现最终产品,而且实现满足并超越质量和安全目标的产品。

Parasoft 产品免费试用icon-default.png?t=N7T8https://www.evget.com/consult/parasoft/#Aps_contact

通过持续测试确保代码质量

事实证明,测试既是问题也是更快地实现更好的代码质量的解决方案。在敏捷过程中,可以缩小许多开发步骤,以创建合理的功能来设计和实现。然而,集成新功能存在风险,并且测试范围尚不清楚。测试是软件团队在采用敏捷方法时遇到困难的关键原因之一。团队会失去他们所追求的敏捷性,因为他们陷入测试过多或不足的困境。

持续测试被视为采用 DevOps 和敏捷开发的软件团队所面临问题的解决方案。维基百科将持续测试定义为“……作为软件交付管道的一部分执行自动化测试的过程,以获得与候选软件发布相关的业务风险的即时反馈。” 尽管定义很简单,但实施持续测试并随着时间的推移对其进行优化完全是另一回事,这就是我今天要重点讨论的内容。

从蛋卷冰淇淋转向基于金字塔的测试策略

理想的 测试金字塔 定义了在项目中最好投入时间和精力的地方。在理想的金字塔中,您将宝贵的时间和精力投入到金字塔基础上的一套全面的单元测试中,该测试由 API 和服务测试支持,而在金字塔的顶部,则有数量少得多的系统以及基于 GUI 的测试。

显示测试金字塔的图像

然而,这个金字塔经常倒转成我们所说的蛋卷冰淇淋。团队在脆弱且复杂的系统级 GUI 测试上花费了太多的时间和精力,这些测试需要实现和集成完整的功能 - 导致测试在 SDLC 的早期阶段无法连续执行。实现成功的持续测试的关键是融化蛋卷并专注于创建自动化单元和 API 测试,这些测试可以在开发人员实现新功能时持续执行。

图像显示金字塔倒转成圆锥形冰淇淋

通过持续测试确保质量的五个步骤

1. 建立单元测试的基础

通过自动创建、执行和维护测试来构建单元测试的基础。只有使单元测试工作更容易创建和维护,开发团队才会对所有组件采用项目范围的单元测试。

采用测试自动化来进行测试创建、执行和管理,扩展当前的单元测试套件以包含尽可能多的产品代码。

2. 避免依赖后期以 UI 为中心的测试

避免依赖后期、脆弱、以 UI 为中心的测试,这最终只会导致诊断和修复最耗时且成本最高。与其专注于自动化所有手动测试场景,不如投资于坚实的单元和 API 测试基础,以确保与 UI 通信的架构首先是可靠的。

尽管系统级测试仍然很重要并且是必需的,但它不应该是第一位的。现在也不是发现关键架构、性能和安全问题的时候。软件团队可以通过构建坚实的单元和 API 测试基础来减少对这些 UI 和系统测试的依赖。通过遵循此处的其他建议,大部分系统应该在系统级测试开始之前得到充分验证。

确保还使用静态分析 来分析整个代码库,包括遗留代码和第三方代码,以帮助检测测试可能遗漏的错误和安全漏洞。静态分析对于执行项目编码标准也很重要。

3.了解整个测试金字塔的代码覆盖率

了解整个金字塔上下的代码覆盖率,以及对需求/用户故事的可追溯性,因为没有它,开发团队就不知道哪些内容已经过测试,哪些内容尚未测试。此外,不了解测试覆盖率意味着不知道在金字塔的每个级别要测试什么,这意味着即使很小的更改也需要大量测试,从而使整个过程陷入困境。请参阅我之前关于基于变更的测试的文章。

4. 通过服务虚拟化向左移动

利用应用程序依赖项的服务虚拟化,以便在开发生命周期的早期进行自动化 API 测试。提高自动化程度和及早发现错误对于成功至关重要。尽早推动 API 测试有助于发现系统的关键方面,例如性能和架构的健全性。这也是安全测试的一个重要阶段。

5. 利用变革影响分析来加速敏捷

通过基于每个构建的变更影响分析来加速敏捷开发,以了解每个新迭代引入的风险。变更影响分析提供的分析是使测试仅关注需要测试的内容而不是其他情况下使用的霰弹枪方法的关键。

只有通过基于数据的智能决策才能真正实现持续测试。让开发团队专注于最少的测试集,以确保每次迭代的正确覆盖率,是将敏捷性带回敏捷开发方法的关键。

绘制持续改进之路

毫不奇怪,最好的开始方法是审查测试金字塔,然后评估项目当前的状况。

  • 是否有基于每个构建运行的自动化单元测试的坚实基础?
  • 是否对尽可能多的产品 API 进行了自动化测试?
  • 是否使用虚拟化?
  • 测试是否依赖于一套复杂的手动 UI 测试,而这些测试在系统几乎完成之前无法运行?

改进之路基于构建适当的测试金字塔、自动化以及数据收集和分析。

提高代码质量:基本的测试方法和工具

现代软件开发团队面临的巨大压力使得按时、按规格构建产品变得困难。像敏捷这样的开发方法可以帮助团队专注于为客户构建正确的东西,但项目仍然迟到并且容易出错,而测试是开发的一个关键方面,它继续困扰着现代开发方法。为了获得显着的改进,请采用自动化单元测试的坚实基础,并尽早并经常通过Parasoft Virtualize等服务虚拟化解决方案执行 API 测试。不要忘记,通过使用高级软件测试分析的数据 来驱动测试管理,测试结果会大大改善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php-ssrf

漏洞描述: SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求…

POI根据表头模板导出excel数据,并指定单个单元格样式,多sheet。

最近的公司需求,因为Excel表头样式较为复杂,不易直接用poi写出。 需要的Excel为这种: 直接模板导出不能成为这样。 public void exportCheckCsdn(HttpServletResponse response) {//获取到MNR 和 MNR-DT 的List// 此处写 获取到指定li…

是德科技E9304A功率传感器

是德科技E9304A二极管功率传感器测量频率范围为9 kHz至6 GHz的平均功率,功率范围为-60至20 dBm。该传感器非常适合甚低频(VLF)功率测量。E系列E9304A功率传感器有两个独立的测量路径,设计用于EPM系列功率计。功率计自动选择合适的功率电平路径。为了避免…

【微信小程序二维码配置】微信公众平台配置二维码,小程序测试二维码,小程序动态二维码,然后扫码打开对应页面进行操作

微信小程序二维码 操作添加二维码地址配置配置项 生成二维码动态二维码生成 操作 微信公众平台地址:微信公众平台 选择 开发管理 – 开发设置 – 扫普通链接二维码打开小程序 添加二维码地址 配置 配置项 二维码规则: URL 为内含下载校验文件的服务器 URL, 可以…

HTML-基础知识-基本结构,注释,文档说明,字符编码(一)

1.超文本标记语言不分大小写。 2.超文本标签属性名和属性值不区分大小写。 3.超文本标签属性值重复&#xff0c;听取第一个。 4.html结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…

uniapp项目如何引用安卓原生aar插件(避坑指南三)

官方文档说明&#xff1a;uni小程序SDK 【彩带- 避坑知识点】 如果引用原生aar插件&#xff0c;都配置好之后&#xff0c;云打包&#xff0c;报不包含此插件&#xff0c;除了检查以下步骤流程外&#xff0c;还要检查一下是否上打包的原生插件aar流程有问题。 1.第一步在uniapp项…

关于“Python”的核心知识点整理大全44

目录 ​编辑 15.3.4 模拟多次随机漫步 rw_visual.py 注意 15.3.5 设置随机漫步图的样式 15.3.6 给点着色 rw_visual.py 15.3.7 重新绘制起点和终点 rw_visual.py 15.3.8 隐藏坐标轴 rw_visual.py 15.3.9 增加点数 rw_visual.py 15.3.10 调整尺寸以适合屏幕 rw_vi…

Linux磁盘与文件管理

目录 一、磁盘介绍 1. 磁盘数据结构 2. 磁盘的接口类型 3. 磁盘在Linux上的表现形式 二、磁盘分区与MBR 1. 分区优缺点 2. 分区方式 3. MBR分区 4. GPT分区 三、文件系统 1. 文件系统的组成 2. 默认的文件系统 3. 文件系统的作用 4. 模拟破坏文件与修复文件 4…

C语言二维数值数组常用算法------------(C每日一编程)

--主、次对角线求和 --上、下三角求和 --N*N方阵转置 --杨辉三角 正文开始&#xff1a; 主对角线&#xff1a; 用两个双重for循环 int a[3][3], i, j, s 0; for (i 0; i < 3; i)for (j 0; j < 3; j)if (i j)s s a[i][j]; 次对角线&#xff1a; 用两个双重…

Next Station of Flink CDC

摘要&#xff1a;本文整理自阿里云智能 Flink SQL、Flink CDC 负责人伍翀&#xff08;花名&#xff1a;云邪&#xff09;&#xff0c;在 Flink Forward Asia 2023 主会场的分享。Flink CDC 是一款基于 Flink 打造一系列数据库的连接器。本次分享主要介绍 Flink CDC 开源社区在过…

uniapp实现前端银行卡隐藏中间的数字,及隐藏姓名后两位

Vue 实现前端银行卡隐藏中间的数字 主要应用了 filters过滤器 来实现效果 实现效果&#xff0c;如图&#xff1a; <template><div><div style"background-color: #f4f4f4;margin:50px 0 0 460px;width:900px;height:300px;"><p>原来&#…

python之Selenium WebDriver安装与使用

首先把python下载安装后&#xff0c;再添加到环境变量中&#xff0c;再打开控制台输入: pip install selenium 正常情况下是安装好的&#xff0c;检查一下“pip show selenium”命令&#xff0c;出现版本号就说明安装好了。 1&#xff1a;如果出现安装错误&#xff1a; 那就用“…

代码随想录 Leetcode27. 移除元素

题目&#xff1a; 代码(首刷看解析 2023年12月28日)&#xff1a; class Solution { public:int removeElement(vector<int>& nums, int val) {int n nums.size();int slowIndex 0;for(int fastIndex 0; fastIndex < n; fastIndex){if(val ! nums[fastIndex])…

电影“AI化”已成定局,华为、小米转战入局又将带来什么?

从华为、Pika、小米等联合打造电影工业化实验室、到Pika爆火&#xff0c;再到国内首部AI全流程制作《愚公移山》开机……业内频繁的新动态似乎都在预示着2023年国内电影开始加速进入新的制片阶段&#xff0c;国内AI电影热潮即将来袭。 此时以华为为首的底层技术科技企业加入赛…

leaflet学习笔记-地图缩略图(鹰眼)的添加(三)

介绍 地图缩略图控件有助于用户了解主窗口显示的地图区域在全球、全国、全省、全市等范围内的相对位置&#xff0c;也称为鹰眼图。Leaflet提供了好几种地图缩略图控件&#xff0c;本文介绍其中一个最常用控件&#xff0c;即插件Leaflet.MiniMap。 依赖添加 这些地图控件都可以…

使用机器学习进行语法错误检测/纠正

francescofranco_39234 一、说明 一般的学习&#xff0c;特别是深度学习&#xff0c;促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天&#xff0c;我们将研究另一个流行的用途&#xff1a;我们将使用Gramformer构建一个用于机器…

React学习计划-React16--React基础(七)redux使用与介绍

笔记gitee地址 一、redux是什么 redux是一个专门用于做状态管理的js库&#xff08;不是react插件库&#xff09;它可以用在react、angular、vue的项目中&#xff0c;但基本与react配合使用作用&#xff1a;集中式管理react应用中多个组件共享的状态 二、什么情况下需要使用r…

sheng的学习笔记-卷积神经网络

源自吴恩达的深度学习课程&#xff0c;仅用于笔记&#xff0c;便于自行复习 导论 1&#xff09;什么是卷积神经网络 卷积神经网络&#xff0c;也就是convolutional neural networks &#xff08;简称CNN&#xff09;&#xff0c;使用卷积算法的神经网络&#xff0c;常用于计…

感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 近期&#xff0c;[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法&#xff0c;将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…

linux 网络工具(一)

linux 网络工具 1. nmcli命令1.1 介绍1.2 networking 网络控制1.3 connection 连接管理1.4 device 设备管理1.5 nmcli 返回状态码 2. ifcfg命令家族2.1 ifconfig2.2 route2.3 netstat 3. 静态路由CentosUbuntu - netplanUbuntu - network-manager 1. nmcli命令 1.1 介绍 RHEL…