全方位的测试质量守护体系,保障交付质量|学习笔记

简介: 快速学习全方位的测试质量守护体系,保障交付质量

开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计全方位的测试质量守护体系,保障交付质量】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/82/detail/1289


全方位的测试质量守护体系,保障交付质量

 

内容介绍

一、象限图

二、质量保障体系

三、质量是团队所有人的事

四、基于持续测试的质量守护

 

一、象限图

在这里有一个简单的象限图,把日常生活的当中和工作当中遇到的测试做了简单的分类。图片279.png

 

靠下的都是以技术实现为导向的,上面的是以业务结构为导向的,偏问题。

右面的是站在整个产品的角度来考虑问题的。左边的是整个团队在功能实现过程中的问题。

1、单元测试、组件测试

因为是偏技术实现的,团队内部就可以决定。

2、功能测试、工作流/场景实例测试、用户体验测试、结对测试

这种是偏业务型的,偏功能级别的,但是也是团队要做实现的过程中做一些测试。因此放在二象限。

3、可用性测试、探索测试、客户结对测试、用户验收测试

站在整个产品的角度,是偏业务类型的。

4、非功能性测试(压测、性能测试)、安全测试、数据迁移测试、扩展性测试、负荷测试

偏技术实现的角度。但是站在整个产品的完整性来说做了验证。

图中也给出了哪一部分是手工的,哪一部分是自动化的。

有了以上测试,想要将以上东西都做好,讨论的成本是特别高的。象限图是有分类的,包含整个的流程,在研发中的阶段是不一样的。这些测试并不是一次性都用在一个地方。

 

二、质量保障体系

有了完整的测试分类,接下来看一下在整个软件交互的整个生命周期内是怎么来合理安排他们的。每一个测试应该放在什么阶段实际上有一个质量保障体系来定义的。下图是企业中常见的质量保障体系:

图片278.png

整个交互过程从左到右看有哪些质量。

例如上面的需求,在软件交互的一开始拿到需求,开始做需求拼设,架构设计。

这时的需求质量和架构质量是非常重要的。如果这个时候质量出了问题后面做的所有的事情都会出现问题。需求和架构明确下来之后开始做编码和开发,这时的代码和安全质量就有所提升。

安全:在一开始就要队所有做的事情进行安全考量。接下来就到了编码的测试验证阶段,所以整个的测试质量、数据质量和稳定性质量就提高了。

当测试告一段落之后就需要上系统测试了,就需要考虑性能质量、用户质量。发布之后还要考虑运维情况和线上用户的反馈情况。整个会有一个非常全面的质量评估,到底系统是什么样子的。

往下看会发现在中间有很多实践:自动化测试的各种实践、稳定性测试的实践、性能测试的实践、安全测试的实践。每个里面都有现在要用或者将要用的一些实践方式。

再往下是基础平台和流程支撑,就是要承载上面的测试需要很多的基础,例如:环境等技术用来支撑。

整个事情做的好不好、有没有什么问题,需要一双眼睛来看。这是最后的度量。

以上是一个比较完整的保障体系,当然层次比较高可能对于一些工程师来说关注的是怎么来做这种图片对比的测试、怎么进行容灾演练后面会做相对应的介绍。

有了以上完整的质量保障体系,已经知道要做质量保障有相应的一些测试,那么由谁来做这个测试呢?

在这个中间从需求到开发到测试到运维都在这条生命周期上。那么质量保障的事情由谁来做呢?从这个角度来说,如果是需求质量的话很容易想到是产品应该保证需求质量。但是转化到代码质量之后,好像又不是产品了。测试质量和开发质量由运维来保障。所以这时会发现在整个过程中涉及到的角色是方方面面的,每一个角色都应该为这些质量负责。

如果按照整个生命的交互周期的话,偏左一侧认为是上游,偏右一侧是上游。也就是说整个软件的完整的交互周期当中,上下游所有的角色都应该参与到这个里面中。 

 

三、质量是团队所有人的事

图片277.png

1、质量应该有明确的标准

上图中左面有一副漫画,一个人在说:sure glad the hole isn‘t at our end。指的是幸亏这个洞不在我这一侧,因此浇水的人都在另一侧。也就是很常见的需求质量不好需要去修改好。例如:质量是测试该负责的,质量是需求该负责的或者运维来打底的,都有这样的情况。但事实上每个人都在同一条船上,这个船要漏了是会导致一起掉到水中的。

2、开发、测试、运维都需要参与质量保证

有些团队要开发、要自测,之所以质量不好是因为开发自测的质量不好。站在开发的角度来看,我们有测试,之所以质量不好是因为测试兜底兜的不好。所以在整个过程中,不论是站在所有明确标准作为一个需求能够达到什么样的标准。作为代码需要达到什么样的标准。每一个阶段有一个相对标准的定义,这是需要明确的。

3、将可测性作为架构设计的重要原则

另外每一个上游永远要考虑能不能帮助下游把工作做好。例如在做架构的时候,不去考虑可测性的问题。等到要测试的时候是没有办法来做这件事情的,遇到这个问题是非常麻烦的。

可测性:当架构升级做完之后才看到是怎么做的,之后发现非常严重的问题,当时只是单纯将应用部署起来是完全没办法测的。必须要把生产环境部署在一块才能测试。但是这就很麻烦了,因为只是为了改一个东西使它上市上环境,但是不把他们部署在一起,是没有办法测试的。因为在整个架构测试里面就把它写死了。这样带来的后果就是为了测试天天都在写代码,让代码能够在生产环境以外的地方测试然后再做后续的事情。

4、避免测试代码的“公地危机”

一般来说做测试优化的话会有测试代码,而测试代码可能会涉及到一些通用的部分。可能会涉及到几个团队大家都要去共用,这时如果没有很好的维护,没有建立好代码集体所有制的话,那么测试代码也会成为一个“公地危机”。

因此质量是团队所有人的事情。而且质量是团队所有人的事情,上游应该take更重大的角色,做的更好一点,下游会省很多事情。这个之后会在质量和成本内做更多的讨论。

所以现在知道质量的负责是谁来负责,具体的在哪一个阶段里由谁负责,这时取决于定义的标准是什么。 

 

四、基于持续测试的质量守护

 图片276.png

所以整个做到持续的交互的话,例如发的容易、发的频繁,意味着需要做持续的发布,持续发布的话就要持续的待发布,持续待发布就要持续的测试来保证持续的待发布。

所以一定要有持续的测试才能够有持续的质量守护。

相关文章
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【8月更文挑战第27天】在软件开发的海洋中,自动化测试是确保航船不偏离航线的关键罗盘。随着人工智能(AI)技术的兴起,这艘航船正乘风破浪,以前所未有的速度前进。本文将探索如何通过AI技术优化自动化测试流程,不仅提高测试的效率和覆盖范围,而且增强测试用例的智能生成和结果分析能力。我们将从AI在自动化测试中的应用入手,深入探讨其对测试准确性和效率的影响,以及面临的挑战与未来的发展方向。
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试的未来:AI的崛起与质量保证的革新
在软件开发的世界中,测试一直是确保产品质量和用户满意度的关键步骤。随着人工智能技术的飞速发展,传统的软件测试方法正逐步被智能化工具所取代。本文将探讨AI如何重新定义软件测试流程、提升测试效率以及预测未来可能出现的挑战和机遇。
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的自动化测试:提升软件质量的未来之路
【9月更文挑战第3天】AI驱动的自动化测试是提升软件质量的未来之路。它借助AI技术的力量,实现了测试用例的智能生成、测试策略的优化、故障预测与定位等功能的自动化和智能化。随着技术的不断进步和应用场景的不断拓展,AI驱动的自动化测试将在未来发挥更加重要的作用,为软件开发和运维提供更加高效、准确和可靠的解决方案。
|
11天前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
36 4
|
14天前
|
监控 测试技术 UED
软件测试的艺术:确保质量的五个关键实践
【8月更文挑战第28天】 在软件开发领域,测试不仅是发现错误的工具,更是确保产品稳定性、性能和用户满意度的基石。本文将深入探讨五个关键的软件测试实践,包括单元测试、集成测试、系统测试、压力测试和回归测试,以及它们如何共同构建起一个坚实的质量保证体系。通过这些实践,我们不仅能够提升软件的质量,还能更好地预测和应对潜在的风险,从而为最终用户提供更加稳定可靠的软件产品。
32 5
|
18天前
|
Web App开发 安全 Java
软件测试中的自动化:提升效率与质量
【8月更文挑战第24天】在软件开发的海洋中,测试是确保航行安全的灯塔。随着技术的发展,自动化测试工具如同现代化的导航系统,为软件的质量保驾护航。本文将带你了解自动化测试的重要性,探索如何利用这些工具提升测试效率和软件质量,并结合实例,展示自动化测试脚本的编写和应用。让我们一起启航,探索自动化测试的世界!
|
11天前
|
测试技术 C# 开发者
“代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
20 0
|
15天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
18天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
18天前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决