测试人如何做好质量建设

简介: 答案都在这里了

一、前言

 我从事测试工作六年有余,开始不懂测试,后来去了某大型互联网公司做专项测试,一番锤炼之后,自认为知道了测试的精髓,然而其实只是管中窥豹,后来跳槽,周围人大部分是业务测试,以点点点之绝技闻名于互联网大染缸,我变得困惑,为啥像用户一样操作的方法能够存活在技术圈中,我开始怀疑测试,质疑测试,然后随着工作经历的增多,我又开始相信测试,测试是需要通过技术的手段去描述你的思想的行为,测试的底层操作是技术和思想,思想层面的事情,千人千面,各有论断,是非由他人评说。


二、 测试的现状

之前看过一篇文章,以佛家修炼三个境界开头,看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水,这么说感觉有点绕,但跟测试工作契合度是很高的,对于很多人来说,测试是无聊的,技术含量偏低,围着开发转,点点点的重复劳动,但随着工作阅历增加,我觉得测试越来越难,如何面对需求随意给,然后锅从天上来乱象,你去测试一个系统不了解其架构,语言,很多都是在表皮上测试,你如何保证测试覆盖率,我开始对各种开发语言进行了解,研究如何测试,随着接触行业前辈以及优秀的实践,理念逐渐的渗透,只从技术层面来看待测试还是不够的,测试是为质量负责,测试的中心是质量,没有质量意识测试没有灵魂,质量意识渗透到每一个环节和个人也是测试的使命之一。


三 、质量意识

个人认为,软件的质量最终检验标准是和真实需求是否高度契合,那如何渗透到每个环节和个人呢?

可能很多同学都听过测试左移这个词,那什么叫做测试左移呢?

n多年前,在软件开发过程中是没有单独的“测试阶段”,测试人员的角色根本就不存在。开发人员开发软件,然后测试,最后发布。

当缺陷开始占用项目的预算的时候,软件测试的概念逐步被引进,因此“功能测试”就造就了很小的测试团队。

IT行业开始使用瀑布模式,我们都知道,瀑布模式的软件开发生命周期是“需求”->“设计”->“编码”->“测试”。

所以,如果你是按照上面从左到右的顺序,那么测试阶段就是软件开发生命周期里属于极“右”的了。


测试左移的概念介绍

过去很长一段时间,人们意识到软件测试的重要性,以及极右或是说在软件开发周期的最后阶段保留“测试阶段”的影响力。之所以会发生这种是因为bug的成本在后期是非常高的,需要花费很多精力和时间去修复。甚至严重的情况是产品都不能按时发布,导致很大的损失。


“缺陷越早发现成本越低”


意识到这个道理经历很大的教训,所以在软件行业一个巨大的革命应运而生,被叫做“测试左移”,它的意思是把测试阶段从右向左移或者说每个阶段都把测试和测试人员都参与进去。测试左移也意味着不是在最后阶段进行测试而是一直持续测试,在每个阶段都持续测试。


测试左移对软件开发有怎样的影响?

左移聚焦在使测试人员在全部和最重要的项目阶段参与进来。这就是测试人员把焦点从发现bug转移到bug的预防上,同时也驱动项目的商业目标。

左移提高测试重要性,使测试人员的角色和责任都有极大的提升。

随着测试团队的责任的提高,团队不在仅仅聚焦在“测试软件去发现bug”,而是积极团队合作,参与项目初始阶段的计划和建立强壮有效的测试策略,而测试策略又为团队提供好的测试领导力和指导,使团队聚焦在产品的长远的视角,而不仅仅是测试工作。

左移首先为测试人员提供了设计测试的机会,无论这些测试是被聚焦在客户的体验还是期望,也促使开发人员根据这些测试去开发软件以满足客户需求。

左移并不是仅仅是测试人员的事。向左移动,持续执行测试活动也使开发发挥身为代码所有者的主动性,提高测试责任。

左移也鼓励测试人员去适应行为驱动开发(BDD)和测试驱动开发(TDD),预防软件bug。

敏捷中的测试左移:同样左移也适用于敏捷团队,测试人员也和其他角色一样参加每天的站立会议,评审会议,这会使他们了解更多的产品信息,能够很好分析产品细节并做出反馈,预防bug。

总之测试左移需要测试人员“尽早参与”,尽可能参加每个阶段的讨论和团队合作,都能对最终交付产生价值,帮助项目提前识别风险并做减轻计划。


在左移中测试人员应该做哪些不同的事情?

在左移策略中,下面几点是测试人员应该做的几个关键因素

1)测试团队需要项目初始阶段尽早参与,以便更好的团队整合以及在软件开发的每个阶段对业务都能提供有用的输入。

2) 测试团队应该和业务&运营团队一起工作,这样对项目会得到更明确需求,提供清晰的观点,培养新人也更有针对性,对培训和测试工具需求也能提前准备。

3) 测试团队必须和业务人员在软件开发早期进行沟通,这样去获取对产品更清晰地认识,也可以制定统一的测试策略和计划去优化测试,分析测试环境的从属关系,需要的第三方应用以及准备健壮的自动化策略和框架,建立有效的测试数据管理计划。

4) 测试团队必须和其他团队成员一起,为团队提供较好的测试领导力和指导工作,使团队聚焦在产品的长远的视角,而不仅仅是测试工作。

5)需求是项目成功的关键和基础,好的需求就决定了项目的成功。在需求计划阶段,测试人员需要评审和分析模糊的、更加清晰地、完整的、可测的以及符合验收标准的等等需求。

同时也需要去识别有没有遗漏的需求,理解需求的关联性,实施相关测试策略。清晰地需求帮助软件“更快失败”,能尽早修复所有失败。

6) 用真实的栗子阐述功能会使需求更加明确和精细。

7) 测试人员需要定期参加设计评审会议,理解产品设计和结构,识别设计缺陷,建议不同的设计选项,相应的分解设计创建测试场景。

8)测试人员需要提前很好的执行静态测试(评审),在关键项目文档上提供反馈,所以可以预防缺陷,达到预防效果。

9)测试团队应该和设计、开发团队合作,测试团队提前提供测试场景,然后开发代码,处理所有可能的实时场景及业务流程。

10)测试团队不得不设计健壮的测试场景,因此只要一部分bug在测试过程中被发现,在测试阶段大部分的bug都被预防了。

11)测试人员必须尽可能早的去测试,无论是在独立的还是本地系统上,以至于缺陷不会在下个阶段出现。

针对测试人员关于测试左移概念关键是通过各种方式尽可能提前发现缺陷。


概括来说,测试左移流程是:

尽早发现bug,减少项目成本

一遍一遍持续测试,减少收尾阶段的bug

所有事情做自动化,尽早上线

聚焦在客户需求,提高客户体验


 测试左移”的概念给整个测试角色带来了巨大的转变。直到现在,测试不仅仅是“发现bug”,现在它已致力于“从早期bug的检测到预防”的一段旅程中,在这个过程中,测试人员能做到帮助产品表达需求,帮助开发理清需求为最佳实践。


那既然有了测试左移,有没有测试右移呢?


测试右移是上线后测试同学仍需要关注线上情况,不能认为功能上线测试同学就可以退出了。通过线上监控和预警,及时发现问题并跟进解决,将影响范围降到最低。在开发设计时就要考虑预警功能,系统层(如cpu、内存问题)、应用层(如响应时间)、业务层(如注册率、交易量)等出现异常的时候通过邮件等方式发出预警,相关同学才能知道哪里出了问题。技术同学要比业务方先发现问题,如果业务方已经发现业务量明显下降,说明问题已经很严重了。你也许会问,这跟测试同学有什么关系呢?测试同学可以监督开发需要补充监控预警功能,同时可以提供监控指标。还有一个是关注线上业务及用户使用情况,更多地关注用户价值高、使用率高的功能,在用例中补充遗漏的场景,尽量多地覆盖这些功能。

目录
相关文章
|
18天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
18天前
|
算法 安全 测试技术
深入探索白盒测试:提升软件质量与效率的关键策略
【4月更文挑战第11天】 在软件开发的生命周期中,确保代码质量和功能的正确性是至关重要的。白盒测试,作为一项关键的验证手段,允许测试者通过检查内部结构、设计和编码逻辑来识别软件中的缺陷和漏洞。本文将探讨白盒测试的核心概念、方法及其在提升软件测试效率和质量上的重要性。我们将分析静态分析和动态测试的策略,并讨论如何通过白盒测试优化软件开发过程。
|
18天前
|
测试技术
【测试】构建质量保证之路:编写测试用例的艺术
【测试】构建质量保证之路:编写测试用例的艺术
|
18天前
|
jenkins Devops 测试技术
单元测试与质量保证:确保Visual Basic代码的健壮性
【4月更文挑战第27天】在VB开发中,单元测试是保证代码质量和软件健壮性的关键。本文介绍了单元测试的基础,包括其定义和好处,如提高代码质量、促进重构。接着,讨论了MSTest、NUnit和xUnit等VB单元测试工具。遵循TDD原则和最佳实践,编写独立、有针对性的测试,并注重测试速度和覆盖率。通过示例展示了如何在Visual Studio中设置和运行测试。最后,提到了持续集成和自动化测试工具,如Jenkins和静态代码分析工具,以提升软件开发效率和质量。单元测试不仅是技术手段,更是提升团队协作和软件工程水平的文化体现。
|
4天前
|
缓存 测试技术 数据库
系统测试:确保质量之道
系统测试:确保质量之道
|
8天前
|
监控 测试技术 持续交付
提升软件测试效率与质量的自动化策略
【5月更文挑战第25天】 在快速迭代的软件发展环境中,传统的手动测试方法已难以满足高效率和高质量的双重要求。本文将探讨一系列创新的自动化测试策略,旨在通过减少重复性工作、提高测试覆盖率以及实现持续集成来优化软件测试流程。文中不仅分析了自动化测试的优势,还详细讨论了实施过程中面临的挑战,并提出了相应的解决方案。通过案例研究和最佳实践分享,本文为读者提供了一套实用的自动化测试框架设计思路和实施步骤。
|
13天前
|
机器学习/深度学习 人工智能 jenkins
提升软件测试效率与质量的自动化策略
【5月更文挑战第20天】 在快速迭代的软件发展周期中,传统的手动测试方法已难以满足高效率和高质量的双重要求。本文旨在探讨如何通过自动化测试策略,提高软件测试的效率与质量。文中将详细阐述自动化测试的关键要素、实施步骤以及面临的挑战,并分享一系列创新的自动化测试工具与技术,帮助读者构建更加健壮和灵活的测试环境。
|
18天前
|
设计模式 前端开发 测试技术
软件质量的守门人——接口测试
接口作为API,是后端预定义的函数,用于系统间通信和数据交换。接口测试验证不同组件间的交互,确保其准确、可靠。常见应用场景包括集成测试、版本迭代测试、性能测试、安全测试和错误场景测试。随着服务端复杂性的增加,传统测试方法面临挑战,因此引入分层测试(如马丁福勒的测试金字塔模型)和自动化测试,以降低成本并提高效率。接口测试成为确保后端服务质量的关键,学习接口测试可从理解其价值、协议、工具使用及Mock测试等方面逐步进阶。
12 1
|
18天前
|
Java 测试技术 开发者
深入理解与应用单元测试:软件质量的守护者
【4月更文挑战第30天】 在现代软件开发过程中,单元测试作为保障代码健康的重要环节,其地位日益凸显。本文将探讨单元测试的核心概念、实施单元测试的重要性以及如何高效地设计并执行单元测试。通过实例分析,我们将揭示单元测试在确保软件产品质量和加速开发周期中的关键作用。
|
18天前
|
Java 测试技术 Shell
单元测试3.0实践之Golang质量生态建设
研发是否必须写单测?文章提到,单元测试对于确保代码质量、提高软件可靠性至关重要。在顶级互联网公司中,单元测试被认为是必要的,因为它能快速执行、降低维护成本,并能发现代码中的问题。文章还讨论了Go语言中单元测试的优化,如支持不同版本的Go、提高测试覆盖率、处理并发问题等。此外,文章介绍了一个用于Go语言单元测试的插件,该插件可以集成到持续集成流程中,提供详细的测试报告和覆盖率信息。通过这个插件,团队可以方便地管理和执行单元测试,提升开发效率和代码质量。