权威解析,软件测试的当下分析现状

news2024/11/22 16:42:12

Parasoft是一家专门提供软件测试解决方案的公司,Parasoft通过其经过市场验证的自动化软件测试工具集成套件,帮助企业持续交付高质量的软件。Parasoft的技术支持嵌入式、企业和物联网市场,通过将静态代码分析和单元测试、Web UI和API测试等所有内容集成到交付管道中,再加上服务虚拟化和完整的代码覆盖率,减少了交付安全、可靠和合规软件所需的时间、精力和成本。

在没有清晰能见度的情况下驾驶汽车不仅非常危险,也十分鲁莽。这会让我们和我们周边的人随时面临着碰撞、受伤、甚至死亡的风险。如果不能看到前方的道路,我们就无法预测潜在的危险或障碍,从而无法做出明智的决定并采取适当的行动。

同样,在开发软件的过程中不增加可视性,就像盲目驾驶。而软件指标提供了所需的可视性,能够帮助我们识别需要立即关注的潜在质量和安全问题,以便您可以决定何时加快项目进度,何时放缓速度进行调整。

可以提供分析的智能软件能够帮助我们:

  • 理解指标

  • 评估风险

  • 衡量质量

  • 预测结果

  • 与团队有效协作

而所有这些都有助于团队:

  • 遵守截止日期

  • 交付高质量产品

  • 满足客户需求

如何规划现代软件

现代软件项目通常是通过权衡用户现状成本和团队能力来规划的。通常,这些现状被记录在JiraGitHubAzure DevOps等工具中。

产品经理与开发经理会经过协商,以确定在当前的发布周期内实际能完成哪些工作。接下来,开发经理可以根据以下情况进行计划:

  • 新的需求。

  • 需要修复的现有问题

  • 要解决的潜在技术债务

当然,计划可能会发生改变。大多数软件项目都会遇到问题或者障碍,从而改变计划的结果。特别是安全漏洞,可能会是一个非常重大的问题。项目中断是不可避免的,但如果无法衡量安全漏洞的影响,就很难控制项目的最终发展。

快速访问的可视性

可视性对于开发软件是至关重要的。监测工具和分析结果可以为做出安全有效的决策提供非常大的帮助。

在一个易于使用的仪表盘中快速访问软件开发指标,对于了解软件开发的状态和进展非常重要。通过仪表盘等可视化工具的快速访问,使敏捷开发团队能够:

  • 通过对关键指标的单一、综合视图,识别可能需要注意的趋势、模式和问题

  • 通过对软件开发指标的实时更新,及时做出明智的决定

  • 以更直观、更有视觉吸引力的方式理解复杂的数据

跟踪哪些指标很重要?

指标通常在软件测试自动化工具 "接触" 代码的地方收集。通常情况下,收集行为发生在静态分析测试执行期间。收集的详细信息可以交叉引用,例如文件、特定的测试、已知的安全漏洞或软件弱点以及要求。

静态分析结果

 

" 当我刚开始做开发时,我对静态分析带来的好处还是持怀疑态度。我这样做只是因为这是公司的规定。而多年来,我开始受益于此。静态分析能够持续地检测出某些原本不会被发现的问题,并表现为代码缺陷。相比于静态分析带来的好处,抑制掉静态分析过程中不可避免的误报真的不算什么大事。

静态分析有助于将安全性代码质量的考虑转移到软件开发生命周期的早期,使开发人员能够在问题变得更加棘手和耗时之前解决它们。

通过将静态分析集成到开发过程中,开发人员可以在安全问题影响到最终用户之前识别和修复。对于某些安全关键行业,静态分析是保持代码库符合编码和行业指南要求的必要条件

静态分析的指标可以为应用程序的质量安全状况提供有价值的见解,帮助团队更好地规划他们的软件开发工作。像缺陷数量严重程度以及它们在代码库中的位置等指标,可以帮助团队确定问题的优先次序并相应地分配资源。您可以跟踪一段时间的进展,并确定需要改进的地方。

静态分析也有助于遵守标准。收集的指标为团队提供他们所需的数据,以证明符合行业或监管标准。”

—— Jeehong Min(Parasoft DTP产品总监)

测试结果

测试结果是软件开发团队最重要的指标。如果测试失败了,就说明出了问题,需要立即关注。由于测试类型多种多样,团队应该每天收集审查每种类型的指标。

单元测试

单元测试是测试套件的基本组成部分,

主要好处有:

  • 确保代码单元正常工作

  • 一旦新的代码提交,与代码的每个构建一起运行,并确保设备继续工作

  • 快速运行意味着它们可以在编写新代码或变更现有代码时频繁运行

  • 能够自信地重构代码

  • 强制编写可测试的代码

  • 使您能够轻松地测量代码覆盖率,大多数框架都让这个工作变得非常简单

API集成测试

集成测试的目的是确定独立开发的软件单元在相互连接时是否正常工作。API测试是集成测试的一种。

在软件开发中,有一句话很流行:尽早集成,经常集成。

集成测试使开发团队受益良多,因此它是必不可少的。集成测试用例比单元测试用例更难编写,但使用一个好的测试工具或框架会大有帮助。在运行集成或API测试时,我们需要花费更多的时间来测量代码覆盖率。

UI测试

UI测试是另一种类型的测试,它通过用户界面驱动应用程序。这些不同种类的测试都是有价值的,如果我们能将UI测试自动化,那么团队就没有必要一次又一次地运行手动测试。

但这些测试是最难编写的,而且维护成本很高。想要运行这些测试开发团队还需要对测试基础设施投入成本,用户可以在某些浏览器或Headless模式下运行它们,当然了,测量代码覆盖率也是需要成本投入的。

幸运的是,Parasoft为每种测试类型都提供了工具和框架,以便用户更容易编写和维护这些测试,并能够在运行时测量代码覆盖率。

手工测试

手工测试要求质量保证(QA)团队从最终用户的角度手动验证软件的功能。团队可以从手工测试的结果深入了解软件的可用性用户体验,突出可能需要改进的地方。

什么是代码覆盖率?

代码覆盖率是一个与用户测试结果相辅相成的指标。有时候,您的代码可能有100%的测试用例通过率,但如果您的代码只有5%被覆盖,那您仍然是在“盲目驾驶”。

在一次旅行之前,相比仅通过10%的汽车检查,若您的汽车能通过100%的汽车检查,您肯定会更安心。同样,代码覆盖率是一个有用的度量指标,它与您的测试套件的深度质量相关联。

什么是优质覆盖率?这视情况而定。

如果您正在启动一个新的项目,从一开始就以80%或更高的代码覆盖率为目标,这是合理的,这意味着您代码的80%都被测试了。如果您的代码库是新代码和一些遗留代码的混合体,那么可能很难达到80%的代码覆盖率。在这种情况下,您可以跟踪另外两个指标:

  1. 代码覆盖率趋势

  2. 变更后的代码覆盖率

覆盖率趋势&变更后的代码覆盖率

如果您的整体代码覆盖率在一开始就很低,比如10%,那么试图将覆盖率提升到80%,将会非常困难。但是,确保代码的覆盖率始终保持稳定上升却是个可行的方案。

随着时间推移,您可以通过跟踪趋势来提高代码覆盖率。除此之外,Parasoft建议的做法是测量变更后的代码覆盖率。这是您整体代码覆盖率的一个子集--是从您开始测量代码覆盖率以来发生变更的代码覆盖率。

Parasoft建议将80%作为变更代码覆盖率的目标。通过这种做法,即使一开始的整体代码覆盖率很低,也可以确保整体代码覆盖率不断提高,逐步达到80%的目标。

不同类型的覆盖率测试

对于许多团队来说,测量代码行覆盖率可能就已经足够。但对于某些安全关键行业,测量行覆盖率是远远不够的。安全标准,如ISO 26262IEC 62304DO-178C,需要足够的代码覆盖率指标作为相关证据,如语句分支MC/DC和其他覆盖率。而获得这些标准认证的TÜV SÜD工具,如Parasoft C/C++test,能够提供多达九种覆盖率指标,可以覆盖上述提及的各种覆盖率指标。

整合方案

既然现在已经了解哪些指标是需要跟踪的,那您肯定想更轻松快速地了解这些指标。这个时候您就需要用到DTP平台了。Parasoft DTP是一个软件质量控制管理平台,它通过仪表盘和报告工具,让用户能够一目了然地看到所有这些指标,而不必再花费更多的时间去整理这些指标。


开发团队可以在日常工作会议中使用这样的仪表盘,并在冲刺审查期间向相关人员展示项目的质量状态。

质量和合规团队可以使用仪表盘来持续监控他们对某些行业标准的合规性工作。

快速了解一下Parasoft DTP,看看DTP如何帮助开发团队全面地监控软件开发周期。

更好的代码质量带来价值

当我们关键的质量指标有可视性时,我们就不会在”盲目驾驶”。相反,在每一个步骤中,我们都可以做出明智的决定,从而得到更好的结果。

  • 按时保质地交付

  • 更少的技术支持问题

  • 提高客户满意度

  • 提高品牌声誉

如果我们可以“看清远方”,为什么我们还要“盲目驾驶”呢?

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

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

相关文章

详解树与二叉树的概念,结构,及实现(下篇)

目录 一, 二叉树链式实现 1. 前置说明 2. 二叉树遍历(主打的就是一个分治思想) 2. 1 前序遍历 2. 2 中序遍历 2. 3 后序遍历 2. 4 层序遍历 3. 二叉树结点个数及高度 3. 1 二叉树节点个数 3. 2 二叉树叶子节点个数 3. 3 二叉树第…

数字信号处理技术(三)自适应噪声完备集合经验模态分解(CEEMDAN)-Python代码

本文仅对自适应噪声完备集合经验模态分解(CEEMDAN)的原理简单介绍和重点介绍模型的应用。 1. CEEMDAN原理 CEEMDAN(Complete Ensemble Empirical Mode Decomposition with Adaptive Noise)的中文名称是自适应噪声完备集合经验模…

一文全解经典机器学习算法之支持向量机SVM(关键词:SVM,对偶、间隔、支持向量、核函数、特征空间、分类)

文章目录 一:概述二:间隔与支持向量三:对偶问题(1)什么是对偶问题(2)SVM对偶问题(3)SMO算法 四:核函数(1)核函数的概述和作用&#xf…

车载应用生态:小程序容器技术成为保障安全的有力措施

随着智能交通和车联网技术的快速发展,越来越多的车载应用程序(APP)进入人们的视野,从而推动了车载业务生态的不断发展。然而,车载应用程序的安全问题也引起了人们的广泛关注。为此,小程序容器技术作为一种有…

4.24每日一练

题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 来源:力扣(LeetCode) 链接:https://leetcod…

毕业设计 医学图像阅读器 DICOM CT MRI 阅读器 三维重建 可视化编程技术及应用

一、 概述 此系统实现了常见 VTK 四视图,实现了很好的 DICOM 图像显示,可用于 DICOM 超声 X线 CT MR 三维重建 拾取像素值 窗宽 窗位 像素,距离测量,角度测量,提供源码; 并且通过三维重建实现可视化。使用…

客快物流大数据项目(一百一十七):网关 Spring Cloud Gateway

文章目录 网关 Spring Cloud Gateway 一、简介 1、功能特性

OSCP-Exfiltrated(Subrion、exiftool提权)

目录 扫描 WEB 提权 其他方法 扫描 WEB 添加 host信息 访问了该网站,并立即注意到该网站上制作的CMS(Subrion CMS)。

机器学习笔记之密度聚类——DBSCAN方法

机器学习笔记之密度聚类——DBSCAN方法 引言基本思想概念介绍算法过程完整算法描述 DBSCAN \text{DBSCAN} DBSCAN的优点和缺陷 引言 本节将介绍密度聚类—— DBSCAN \text{DBSCAN} DBSCAN方法。 对于其他聚类任务的笔记: K-Means \text{K-Means} K-Means聚类算法&…

PXE高效批量网络装机

PXE 定义 PXE(预启动执行环境,在操作系统之前运行)是由Intel公司开发的网络引导技术,工作在client /server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 具备以下三个优点 1 规模化: 同时…

高通 Android 12 framework添加自定义按键上报应用层

Android下添加新的自定义键值和按键处理流程 首先分析下Android下怎么添加新的自定义键值。在Android的原生系统中键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值…

Linux系统应用编程(五)Linux网络编程(上篇)

本篇主要内容: Linux系统应用编程(五)Linux网络编程(上篇)一、网络基础1.两个网络模型和常见协议(1)OSI七层模型(物数网传会表应)(2)TCP/IP四层模…

详解C语言string.h中常用的14个库函数(一)

我计划讲解C语言string.h这个头文件中,最常用的14个库函数。为了让大家更加深入的理解这些函数,部分函数我会模拟实现。篇幅所限,如果文章太长了,可能会较难坚持读完,所以我会分几篇博客来讲述。本篇博客主要讲解的函数…

FPGA时序约束(三)时序约束基本路径的深入分析

系列文章目录 FPGA时序约束(一)基本概念入门及简单语法 FPGA时序约束(二)利用Quartus18对Altera进行时序约束 文章目录 系列文章目录前言基本时序路径时钟偏差寄存器到寄存器(reg2reg)建立时间余量保持时…

PHP实现以数组var_dump,array_combine等函数的方法功能举例

目录 前言 一、什么是数组 二、把两个数组合并成一个数组 1.1运行流程(思想) 1.2代码段 1.3运行截图 三、自动创建数组的一个案例 1.1运行流程(思想) 1.2代码段 1.3运行截图 前言 1.若有选择,可实现在目录里…

小朋友排队

[蓝桥杯 2014 省 B] 小朋友排队 题目描述 n n n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是 0 0 0。 如果某个小朋友…

Python 学习曲线 从 Python 新手到 Pro

Python 学习曲线 从 Python新手到 Pro 使用代码片段介绍: Python 是世界上最通用和使用最广泛的编程语言之一,以其简单性、可读性和多功能性而闻名。 在本文中,我们将探讨一系列示例场景,其中代码由具有三个不同专业知识水平的程序…

文件系统和动静态库

目录 再识文件属性 查看文件属性的原理 初识inode 了解磁盘 什么是磁盘 磁盘的结构 磁盘的存储结构 CHS寻址 磁盘的逻辑结构 使用LBA地址的意义 理解文件系统 页框和页帧 分治思想管理 Linux ext2文件系统 软硬链接 软链接 硬链接 文件的三个时间 动静态库 …

java运行python脚本,待完善版

参考资料: windows下调用CMD运行方式 兼容linux/windows,同步异步方式 指定特殊运行环境的运行(如:anaconda运行环境) 整合以上三种方式终极版源码 相关内容: 调用python脚本传参说明 如果不传参数,python脚本可以随意写,比如:

【课程介绍篇】C/C++后台开发岗位技能知识树

1 C/C后台开发岗位技能知识树 2 Linux C/C后台架构开发 成长体系课程 3 C技术历史更新 https://www.0voice.com/uiwebsite/html/courses/