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

01 什么是测试策略

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

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

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

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

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

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

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

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

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

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

类似的文档结构如下:

03 它为什么会被逐渐忽略

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

1.没有时间

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

2.测试内容明确

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

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

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

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

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

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

3.测试惯性作用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

05 具体案例分享

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

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

06 小结

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

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

福利(关注公众号领取)

你还记得大明湖畔的“测试策略”么相关推荐

  1. 70、80后、90后,小时候开学的场景!你还记得吗?

    转眼又是一年开学季 角色转变,现在是目送孩子们去上学 还记得那些年, 我们开学的日子吗? 那时候的农村的学校 水泥地面很少 任何地方都适合杂草生长 一个暑假过完 教室前后.操场.... 全部被杂草占领 ...

  2. 星梦缘陈彦妃_还记得《星梦缘》的女主吗,她现在变成这样了

    如今<为了你我愿意热爱整个世界>.<扶摇>等偶像剧凭借男女主演的人气,每每有新看点出现都能上热搜,成为年轻一代谈论的话题.自始至终偶像剧都是一个很卖座的题材,但你还记得曾经经典 ...

  3. 你还记得当初为什么进入IT行业吗?

    2019独角兽企业重金招聘Python工程师标准>>> 说到这个问题,小编相信不少童鞋开始忆往昔峥嵘岁月,那个少年为了心中的改变世界的理想,进入了这个行业,但是呢,有一群人画风就不一 ...

  4. 如果你还记得我[转载]

    这是我在[飞雪连天]博客中看到的一篇文章,文章不错,借用一下. 最后一次见到方强是在他家搬离村庄的那天早上. 那天早上,我和母亲从菜地拔菜回来,还在路上,我就听见村子里的人跟母亲说,庆文嫂家要搬到市里 ...

  5. 哨兵机器人钢力士_还记得秒杀X战警的哨兵机器人吗?在漫威原著里,X战警更憋屈...

    还记得<X战警:逆转未来>中的哨兵机器人吗?他们出现在这部电影的开场部分,哨兵机器人对X战警造成了非常大的困扰. 在漫威漫画原著里呢,哨兵机器人的历史也颇为复杂,他们的程序设定就是&quo ...

  6. 还记得当年你是如何接触Python的吗?

    @图片自制byunsplash 阅读文本大概需要 3 分钟. 绘画:琪琪  |  作者:xiaoyu 要说目前什么语言最受欢迎,我想Python肯定是其中之一了吧.Python语言以其简单的操作.强大 ...

  7. 你还记得20年前的语文课本吗?

    让你的孩子,变成科学达人! 记得当时年纪小,你爱谈天我爱笑. 有一天并肩坐在桃树下, 风在林梢鸟儿在叫. 不知怎么睡着了, 梦里花落知多少. 还记得小时候的课本吗? 我给你们翻出来啦! 每个句子.每个 ...

  8. 曾经很火但消失了的软件,你还记得几个?

    上周,有网友发现暴风影音官方网站以及App均出现问题,后经测试确实无法正常打开,现在只能作为本地播放器使用了.没想到曾经风光无限的暴风集团,如今却被爱奇艺.腾讯.优酷三大播放器压得难以生存. 与此同时 ...

  9. 你还记得珠算的口诀吗?

    我从小就会背珠算口诀,我们那个年代小时候念珠算口诀,就像现在的小孩唱儿歌一样普遍.所以现在我都还记得. 我小时候,父亲就是生产队的会计.其实父亲没有怎么读书,只上到了小学三年级.但在父亲生活的年代,会 ...

  10. 还记得八皇后的解法吗

    "还记得八皇后的解法吗?" "上个世纪的事情,不记得了." "-- 现在回忆一下?" "开会,回头说." " ...

最新文章

  1. 微信小程序万里目_4款万里挑一的微信小程序,每一个都是黑科技!
  2. hibernate xxx is not mapped 错误原因及解决方法
  3. WebApi捕捉异常的一套方案
  4. 线程池方式调用spring mvc的业务类的简单实例
  5. 高等数理统计(part5)--分布族的完备性
  6. 如何通过RFID开发来迎接第四次工业革命(转)
  7. jmeter安装 java,Windows下安装jmeter图文教程
  8. 实例篇——springboot自定义拦截器
  9. Atitit 数据与模板绑定法 目录 1.1. templet - 自定义列模板 1 1.2. 方式三:直接赋值模版字符。事实上,templet 也可以直接是一段 html 内容,如: 1 1.2.
  10. javax.servlet.http.HttpServletResponse.setContentLengthLong(J)V,maven项目报错!!无法访问webapp下的文件,完美解决方案
  11. kdj指标主要看哪个值_kdj指标中三者的关系是什么?
  12. 解锁system分区
  13. Jmeter随机常用变量
  14. Excel2010创建包含数据有效性的xls文件,再打开时有效性变无效
  15. android五线谱播放器,口袋五线谱app下载
  16. Elasticsearch 分布式引擎简介
  17. debconf-set-selections mysql_在Ubuntu上的MySQL脚本安装
  18. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第1课1.19节查找如何使用Illustrator的资源...
  19. 【BSP视频教程】STM32H7视频教程第3期:整体捋顺STM32H7的HAL库和LL库的框架,再配合寄存器造轮子找到更适合自己的玩法(2022-01-21)
  20. 阿里巴巴Java成神之路-笔记(8)动态代理

热门文章

  1. elasticsearch collapse
  2. 使用google earth engine(GEE)提取亚马逊每年森林火灾区域
  3. 什么是CI/CD,以及我所熟知的CI/CD工具都是有哪些?
  4. OpenCV python 绘制椭圆形
  5. 如何快速将CAD图纸转换成PDF文件?
  6. CSS简单的图片居中
  7. 中国医科大学2021年9月《社区护理学》作业考核试题
  8. 关于junk jack
  9. 泰凌微 Telink TLSR825X Uart 串口无法接收数据 关闭休眠和深度休眠解决 问题
  10. security update 补丁更新失败