文档章节

开发转测试七年,我从测试策略到测试架构(Test architecture)

程序猿拿Q
 程序猿拿Q
发布于 11/19 16:05
字数 2022
阅读 2302
收藏 46

程序员之间流传着这样一句顺口溜:有人喜欢创造世界,他们做了开发者;有的人喜欢开发者,他们做了测试员。什么是软件测试?软件测试就是一场本该在用户面前发生的灾难提前在自己面前发生了,这会让他们生出一种救世主的感觉,拯救了用户,也就拯救者这个软件,避免了他们被卸载的命运。

 

今年是我做软件测试的第7个年头了,当年我从软件开发转做软件测试的时候,没有想过我能在这个领域做这么久。在这7年里面,我在软件测试领域摸爬滚打,从自动测试起步,逐步接触到软件测试的各个领域:各种测试方法(等价类,全配对等)、测试技术(单元测试,功能测试,性能测试,探索性测试等)、自动化测试工具(JUnit,Selenium,Gatling,ZAP等)、测试流程(传统测试流程,敏捷测试流程等)以及测试策略(测试象限和测试金字塔等)。

 

 

其中“测试策略”在测试业界是讨论的比较少的,因为大多数人的工作重点是设计测试用例,执行测试或者开发和维护自动化测试,而只有少部分人才会涉及到测试策略的工作,从而导致很多测试人员其实并没有系统的了解测试策略。

所以我准备将我这几年对于测试策略的经验、总结以及思考以系列文章的形式写出来,希望能稍微帮助一下大家去理解测试策略,从而做到更好的测试,减少缺陷,提高质量。

测试策略

测试策略(Test Strategy)的第一目标就是“减少缺陷的出现和发布”。其中“减少缺陷的出现”可以通过测试前移等方法来解决,在进行软件需求分析和架构设计的时候发现缺陷;而“减少缺陷发布”可以使用各种测试方法、技术来验证和测试编码完成的功能(这两点在今后的文章里面会通过不同的例子进行更详细的阐述)。

 

 

由此可见,“测试策略”并不是只由测试人员定制的,它是由一个团队的各个角色一起来制定和建立的,目的是保证软件的质量,减少缺陷。

而“测试计划”是用于实施测试策略的。只有充分理解测试策略目的和实施方式,才能充分理解测试策略,为什么要做测试策略,什么样的测试策略才更有意义、更好,怎样实施才能更有效等问题。

测试计划

制定测试计划是保证测试策略能被有效执行的一种方式。它告诉了团队在什么阶段,什么样的角色应该执行测试策略中什么样测试技术和测试方法。它主要由测试人员编写,但是应该由整个团队进行评审,因为开发人员、产品经理、业务分析人员甚至用户都可能参与到测试计划的执行中。

 

 

测试计划是可以根据项目的实际进展情况进行调整的,所以它并不是一成不变的。

测试架构

在上个世纪六七十年代软件系统还处于小规模的时候,软件开发并没有谈什么架构,软件测试也不存在什么策略可言。但是随着软件规模的极速增大,复杂性也成指数级增加,专业的软件架构应运而生。

为了有效的在规定时间内完成复杂软件系统的测试,必须有一个指导性的策略来帮助团队理解、选择和组织大量的测试,因此软件测试策略就出现了。而测试策略往往是高层次的指导,对于一些中小型项目也许已经足够了,但是却不足以应付现代越来越复杂的软件系统。

因为随着微服务、移动互联网、物联网、大数据分析系统、AI系统等的出现,要测试一个包含各种技术,外部依赖,或者独立子系统的复杂系统,并不是简单的根据测试策略在不同层面上做不同的测试就可以了,而是要理清各种测试之间的相互联系和制约,然后思考怎么有效的将各个维度上的测试联系起来,以软件系统架构的思维去思考整个测试体系。

 

 

请注意这里不是说要去设计一套全自动化的测试系统来完成整个系统的所有测试,而是通个各种有效的方式(无论手动还是自动)把各种测试合理且有效的联系起来,形成一个拥有完整架构的测试体系,这样才能使整个系统的各种测试更加可视化和更易于理解,使整个系统的各种测试更加有效,避免重复测试,节约成本。

举例来说,一个前后端分离的Web业务系统不仅有前端UI和大量的JavaScirpt代码,还有后端的API和第三方依赖系统以及数据库系统,如何将各层测试有效的联系起来就是测试架构需要解决的问题。

首先,前端、后端API、第三方依赖系统和数据库系统有各自的单元测试、集成测试等,然后可以使用契约测试来测试统一前端和后端API,再使用Stub加入对于第三方依赖系统的契约测试或者监控测试,还需要使用测试数据生成系统参数,将各种测试数据存入数据库系统用于支持契约测试等。

如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。感兴趣可以175317069,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

对于不同软件系统,其架构一般都是根据业务需求、技术能力等各种条件来设计的。与软件架构一样,测试策略和测试架构在不同的项目里面,需要根据其软件系统的架构、技术栈、业务需求、人员的技能等因素来定制和设计。

再谈测试策略

现在业界流行的测试金字塔和测试象限只是两种高度抽象和简化的测试策略模型,不具备实际可操作性,只具备高层次的指导性和参考性。直接根据这两个模型来工作是低效的,甚至可能带来负面效果。所以对于测试金字塔和测试象限不能盲目的使用,而是需要根据项目的实际情况来生成适合自己项目的测试策略和测试架构(项目不需要测试架构),并在此基础上执行真实的测试工作。

© 著作权归作者所有

共有 人打赏支持
程序猿拿Q
粉丝 28
博文 62
码字总数 145555
作品 0
深圳
技术主管
私信 提问
加载中

评论(8)

程序猿拿Q
程序猿拿Q

引用来自“我还在等你回家”的评论

作者转发一下,留原文地址,可以嘛😁
可以
我还在等你回家
作者转发一下,留原文地址,可以嘛😁
sxgkwei
sxgkwei

引用来自“我只是一只小小鸟”的评论

从开发过度到测试,内心不会挣扎吗

引用来自“OurTester”的评论

我开发转测试的时候主要想的是个工资,结果发现自己学完测试的知识后,工资也没有低 还高了一点,工作比开发轻松很多,如果开发还想做,不建议转 实在做不下去了 可以考虑!
就是因为“开发实在做不下去了”才转的测试,所以国内一个牛B测试比一个牛B开发难招太多倍了。开发都做不下去的人,思维深度和广度能到啥程度大家都心知肚明,好跑去测试别人开发的东西;这这种深度和广度的思维测试约等于无。故而国内上不了台面的测试简直太多太多了,导致整个行业平均工资低于开发。
话说回来,一个能找出开发问题的测试才是合格的测试,那么在思维的广度和深度上必然是要高于开发的,那凭啥人家工资比开发低啊。
银杏果果
银杏果果
专业测试尽然没提到LoadRunner,不合格!!!哈哈哈
f
freezingsky
只有当测试比开发牛B的时候,内心才不会挣扎.
qnloft
qnloft
我现在再都有转测试的冲动~!就想问问哥们,测试有开发苦逼没?
O
OurTester

引用来自“我只是一只小小鸟”的评论

从开发过度到测试,内心不会挣扎吗
我开发转测试的时候主要想的是个工资,结果发现自己学完测试的知识后,工资也没有低 还高了一点,工作比开发轻松很多,如果开发还想做,不建议转 实在做不下去了 可以考虑!
我只是一只小小鸟
我只是一只小小鸟
从开发过度到测试,内心不会挣扎吗
为什么不能每周发布一次?

本文作者:伯乐在线 -ThoughtWorks 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 “看,车来了!不过貌似咱赶不上这趟车了吧?” “啊!那快点跑,错过这趟就得再等半个小时!” ...

伯乐在线
2017/02/21
0
0
从测试策略到测试架构

本文作者:伯乐在线 -ThoughtWorks 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 文/刘冉 今年是我做软件测试的第7个年头了,当年我从软件开发转做软件测试的时候,没有想过我能...

伯乐在线
2017/02/08
0
0
【北京】招【技术经理】1人

岗位职责: l 参与公司业务发展规划和年度运营计划的制定,负责技术保障和技术指标的完成; l 全面负责公司数据产品,网站平台的技术架构和实施; l 组织研究行业最新产品的技术发展方向,主持...

Betty_li
2012/01/13
1K
16
一个遗留系统自动化测试的七年之痒

本文作者:伯乐在线 -ThoughtWorks 。未经作者许可,禁止转载! 欢迎加入伯乐在线专栏作者。 背景 项目从2009年开始启动,采用的是TDD开发方式。在这之后的过程中,团队做过各种尝试去调整自...

伯乐在线
2016/07/22
0
0
为什么推出 Kata Containers? OpenStack 基金会主席这样说

导读 Openstack 基金会主席 Jonathan Bryce 表示,“大帐篷”时代以创新为中心,但今天在开源领域的成功还需要整合,通过开放式基础设施的整合来满足用户需求。 对开放式基础设施的需求正在迅...

lq1ns259ej3okyvk4jf
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

线程安全性--volatile

volatile:当多个线程进行操作共享数据时,可以保证内存中的数据是可见的; @Slf4jpublic class MyVolatile { public static void main(String[] args) { ThreadRun threadRun...

wuyiyi
15分钟前
1
0
大数据入门之hadoop相关概念知识点整理

Hadoop是一个开源框架,允许使用简单的编程模型在跨计算机集群的分布式环境中存储和处理大数据。它的设计是从单个服务器扩展到数千个机器,每个都提供本地计算和存储。今天整理了一些关于had...

技术阿飞
16分钟前
1
0
ssh 免登

ssh-copy-id三步实现SSH无密码登录和ssh常用命令 ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx

miaojiangmin
18分钟前
1
0
2018阿里云双12年终大促主会场全攻略

2018阿里云双12年终大促活动已经于12月7日正式开启,从已开放的活动页面来看,活动分为两个阶段: 12月7日-12月23日的拉新返现阶段和12月24日-12月28日的TOP100英雄榜PK阶段。 活动核心亮点:...

阿里云官方博客
19分钟前
1
0
聊聊flink的MemoryStateBackend

序 本文主要研究一下flink的MemoryStateBackend StateBackend flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/StateBackend.java @PublicEvolvingpublic interface......

go4it
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部