你还记得测试策略么

简介: 你还记得测试策略么

640.jpg

你有多久没听过测试策略这个词了?它就像个走失的小孩,慢慢迷失在快速迭代的敏捷潮流中。曾何几时,测试策略是测试活动的重要一环,它指导着整个测试活动的开展,是高阶测试人员必备的技能。今天,我们来聊聊这个被逐渐忽略的测试技能。


01

什么是测试策略


维基百科上有一大段关于测试策略的定义,这里就不贴出来了,简单来说,测试策略主要关注两个问题:

测什么: 测什么是指质量需求是什么、需要关注质量的哪些方面,比如应用的功能范围、性能、安全、易用性等非功能需求。
怎么测: 怎么测就是采用什么办法来帮助系统实现质量需求,而不仅仅是手动和自动化的测试方法,也包括一切为质量保障服务的流程、环境、基础设施和人员等。

设计测试策略的目标是“减少缺陷的出现和发布”。其中“减少缺陷的出现”可以通过测试前移等方法来解决,在进行软件需求分析和架构设计的时候发现缺陷;而“减少缺陷发布”可以使用各种测试方法、技术来验证和测试编码完成的功能。


02

传统测试活动中的测试策略设计

在传统的测试活动中,测试策略一般会在项目目标明确后开始设计。整个测试策略会包含但不仅限于以下几个方面:

  测试的对象和范围是什么(测试什么东西,哪些不需要测试)

   测试目标是什么(为了让产品完全符合商业化的标准,还是小范围适用等)

   测试的重点和难点有哪些(测试难点在哪里,需要什么样的支持)

   如何安排各类测试活动(先测试什么再测试什么,什么时候集成测试等)

   资源投入情况(测试时长、人员配置、环境等)

类似的文档结构如下:


640.png

03

它为什么会被逐渐忽略


看了上面的介绍,你大概也能猜到测试策略为什么会被逐渐忽略了,个人的看法如下:

1. 没有时间

在敏捷研发的大环境下,每个迭代相对于传统版本的测试时间更少了,我们没有时间去写这么重的文档了,而且它看起来与敏捷的理念相反。

2. 测试内容明确

在一个迭代周期内,通过需求实例化,每个迭代测试的内容更清晰且聚焦了,那么原来的很多内容都不再需要了。如下所示:

  测试的对象和范围是什么(测试什么东西,哪些不需要测试)

   测试目标是什么(为了让产品完全符合商业化的标准,还是小范围适用等)

   测试的重点和难点有哪些(测试难点在哪里,需要什么样的支持)

   如何安排各类测试活动(先测试什么再测试什么,什么时候集成测试等)

   资源投入情况(测试时长、人员配置、环境等)


3. 测试惯性作用

与传统的测试不同,敏捷测试是一直在持续地进行,持续的反馈。所以不需要像传统的测试那样在项目初期去初始化一个环境(会一直存在),不需要关心测试时长(每个迭代相对固定),对于各类测试活动也变得不再敏感(本质上是一直在做集成测试)。所以由于敏捷测试的连贯性,测试策略中的部分内容也不再需要关注了,如下所示:

  测试的对象和范围是什么(测试什么东西,哪些不需要测试)

   测试目标是什么(为了让产品完全符合商业化的标准,还是小范围适用等)

   测试的重点和难点有哪些(测试难点在哪里,需要什么样的支持)

   如何安排各类测试活动(先测试什么再测试什么,什么时候集成测试等)

   资源投入情况(测试时长、人员配置、环境等)

所以,还剩下什么呢?个人认为,剩下的东西,才是测试策略最核心的东西:测试难点在哪里?如何识别出来并给出解决方案。


04

敏捷测试中是否需要测试策略


先给结论,还是要有的。但不并不是每个迭代都需要,在一些核心特性的迭代中,在一些基础能力构建的迭代中,还是需要停下来,好好思考一下如何开展更有效的测试方法,我们需要提前为这个迭代的测试活动做些什么。同时,这份测试策略不宜太长,一页内最好,要保证团队所有成员能够随时看到这份策略并得到团队的整体认可。

个人的经验小结如下,(希望得到更多的建议)

1. 目标导向:本次迭代的内容是否完全推向用户?用户在哪些场景下会使用到这些功能?客户最关心的指标是什么?可用性,还是稳定性?这些需要在迭代计划会开始前,沟通并确认清楚。除了卡片上的显式需求,是否有些隐式的需求,如合规、安全、性能、可靠性等等。

2. 识别风险:测试过程中可能出现的风险有哪些?在需求端,风险主要来自于需求的优先级调整,团队对需求的理解是否到位。在研发设计阶段,风险有常见的几种:研发是否引入了新技术?前后端的人员是否能配合到位?是否有外部依赖?对老功能的影响会有哪些等等。测试团队自身的风险,常见的有人员的变更、测试能力不足等。

如何应对这些风险呢?常见的思路有4种:回避风险、转移风险、减轻风险以及接受风险。具体的就不展开了,需要结合项目和团队的具体情况来说,减轻风险是最常见的方案。

3. 测试难点:当前迭代或者项目的测试难点在哪里,是否需要前置准备一些关联数据?是否需要自己搭建一个项目来验证(笔者所带的团队经常需要测试一些底层的项目,比如SDK,比如网关组件,比如一些数据统计类的项目等等)?当测试团队遇到问题时,如何帮助他们解决这类问题。


05

具体案例分享

在网关项目的某个迭代中,测试人员找到我,希望我能够协助他们完成迭代的测试策略制定,因为他们在了解需求的过程中发现了部分业务的测试难点,没有具体的测试思路(底层应用的测试相对于业务层的测试,更加考验测试人员的能力)。经过和项目组及测试人员沟通后,形成了一份如下的测试策略:640.png


基于这份测试策略,在迭代的测试过程中,就可以相对有信心的开展测试活动,而不是在测试过程中遇到问题了,再想办法处理。


06

小结

三思而后行,在敏捷的环境中,我们虽然不再需要一份大而全的测试策略文档,但是在迭代开始前,还是要好好思考一下如何开展更有效的测试方法,我们需要提前为这个迭代的测试活动做些什么,它将指导我们更好的开展测试活动。而不是接到测试任务就开始测试,等遇到问题后,才开始想着如何处理。


注:想要了解传统的测试活动中关于测试策略的设计及开展,可参考《测试架构师修炼之道:从测试工程师到测试架构师》一书,有大量的篇幅介绍,这也是测试架构师的核心技能之一。

相关文章
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与准确性的策略分析
【4月更文挑战第30天】在快速发展的数字时代,软件已成为支撑现代社会运行的核心。随着软件系统的日益复杂化,确保其质量与稳定性显得尤为重要。软件测试作为保障软件质量的关键步骤,它的效率和准确性直接影响着产品的上市时间和用户体验。本文将探讨如何通过采用自动化测试工具、实施持续集成(CI)与持续交付(CD)流程、利用人工智能(AI)技术以及加强测试人员的专业培训等策略来提升软件测试的效率与准确性。
|
1天前
|
运维 测试技术 持续交付
深入探究软件自动化测试中的挑战与解决策略
【5月更文挑战第18天】随着软件开发周期的不断缩短和发布频率的增加,传统的手动测试方法已无法满足快速交付的需求。因此,软件自动化测试成为确保产品质量和加快上市速度的关键工具。然而,自动化测试的实施并非没有挑战。本文将探讨在实施自动化测试过程中常见的问题,如测试用例的设计、维护成本、框架选择和技术更新等,并针对这些问题提出有效的解决策略,以帮助组织提高自动化测试的效率和效果。
|
4天前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动策略
【5月更文挑战第15天】在软件测试领域,自动化测试已成为提升效率和确保质量的关键手段。数据驱动测试(DDT)作为一种高效的自动化测试方法,其通过外部数据源来控制测试用例的执行流程,实现测试逻辑与测试数据的分离。本文旨在深入探讨数据驱动策略的核心原理、实施步骤以及面临的挑战,并通过案例分析展示如何在实际项目中应用数据驱动策略以提高测试覆盖率和灵活性。
|
4天前
|
机器学习/深度学习 人工智能 运维
深入探索软件测试:策略、工具与未来趋势
【5月更文挑战第14天】在软件开发的生命周期中,测试环节扮演着至关重要的角色。它不仅保证产品能够达到预定的质量标准,还有助于提前发现并修复潜在的缺陷,从而减少维护成本和提高用户满意度。本文将深入探讨当前软件测试领域的最佳实践,包括测试策略的制定、工具的选择以及面对快速变化的技术环境如何保持测试活动的前瞻性和灵活性。通过分析自动化测试、性能测试和安全测试等关键领域,本文旨在为读者提供一个全面的软件测试指南,同时对未来的发展趋势进行预测。
|
4天前
|
存储 XML 敏捷开发
深入理解自动化测试中的数据驱动策略
【5月更文挑战第9天】 在现代软件开发过程中,自动化测试已成为提高测试效率和确保软件质量的关键手段。数据驱动测试(DDT)作为一种高效的自动化测试策略,允许测试人员通过外部数据源来控制测试脚本的执行流程,实现测试逻辑与测试数据的分离。本文将探讨数据驱动测试的核心概念、实施步骤以及面临的挑战,旨在为读者提供一个清晰的视角,帮助他们理解和应用这一策略以提高测试活动的灵活性和可维护性。
|
4天前
|
机器学习/深度学习 敏捷开发 人工智能
探索智能化时代下的软件测试策略
【5月更文挑战第7天】 在快速发展的信息技术浪潮中,软件测试作为保障软件质量的重要环节,面临着诸多新的挑战与机遇。本文将深入探讨智能化背景下软件测试的新趋势、策略及其实施细节,旨在为读者提供一个清晰的视角来理解当下及未来的软件测试发展路径。文章重点分析了持续集成、自动化测试、性能测试以及安全性测试等关键领域,并提出了相应的优化建议和实施方案。
25 4
|
4天前
|
敏捷开发 数据管理 测试技术
探索自动化测试在持续集成环境中的优化策略
【5月更文挑战第6天】 本文旨在深入剖析自动化测试在持续集成(CI)环境中所面临的挑战,并提出一系列创新的优化策略。通过对现代软件开发过程中自动化测试角色的分析,我们揭示了在快速迭代和部署的背景下,如何通过改进测试框架、选择合适的测试工具、以及实施数据驱动测试等手段来提高测试效率和准确性。文章不仅聚焦于技术层面的解决方案,还探讨了团队协作和流程管理对提升自动化测试效能的重要性。
|
4天前
|
存储 监控 测试技术
深入理解自动化测试中的数据驱动策略
【5月更文挑战第6天】在软件测试领域,自动化测试已成为提高测试效率与质量的关键手段。数据驱动测试(DDT)作为自动化测试的一种高效策略,其核心在于将测试逻辑与测试数据分离,以实现更灵活、可维护的测试案例设计。本文将详细探讨数据驱动测试的原理、实施步骤以及在实际中的应用效果,旨在为读者提供一种提升自动化测试效率和可靠性的有效途径。
16 0
|
4天前
|
机器学习/深度学习 人工智能 算法
深入探索软件自动化测试的优化策略
【5月更文挑战第4天】 随着软件开发周期的不断缩短和发布频率的增加,传统的手动测试方法已无法满足快速迭代的需求。因此,本文聚焦于自动化测试流程的优化,旨在提高测试效率和质量。文章首先回顾了自动化测试的基本概念与实施条件,随后分析了当前自动化测试面临的主要挑战,包括维护成本高、测试用例设计复杂等问题。在此基础上,提出了一系列优化策略:持续集成环境下的自动化测试、数据驱动测试、关键字驱动测试、以及基于人工智能的测试用例生成和维护等。通过案例分析和性能评估,验证了这些策略在提升测试覆盖率和减少人工干预方面的有效性。
|
4天前
|
设计模式 人工智能 测试技术
深入探究持续集成中的自动化测试策略
【5月更文挑战第3天】 在现代软件开发实践中,持续集成(CI)已成为提高开发效率、确保代码质量和加速产品上市速度的关键因素。自动化测试作为CI流程的核心组成部分,它确保了快速的反馈循环和高质量的构建。本文将探讨在持续集成环境中实施高效自动化测试的策略,包括测试用例的优化、测试环境的管理、以及如何整合最新的测试工具和技术。通过具体案例分析,我们将了解如何构建一个既灵活又健壮的自动化测试系统,以支持不断变化的软件开发需求。

热门文章

最新文章