《持续交付》 - 测试策略的实现

现在很多的项目团队都只是依靠手工的验收测试来验收软件是否满足它的功能需求和非功能需求。他们也知道这样会大大的影响项目的交付质量和进度,但他们依旧会这么做,因为他们可能已经尝试过去写测试,尝试着搭建自动化测试的相关服务,但最终并没能从中获取到很大的好处而且浪费了大量的精力,所以他们宁愿去手动去测试,遇到 bug 了手动去排除并修复。

当然了,这并不是说写测试不好,相反的,写测试是非常重要的,但更重要的是我们必须要认识到相关的测试策略并正确的选用它,从而为自动的项目实现一套合适自身的部署流程线。测试策略的设计目的主要是识别和评估项目风险的优先级,以决定采用哪些行动来缓解风险的一个过程。这也就意味着,写一次测试并不是一劳永逸的,对于一些自动化测试,我们应还需要不断的去维护测试以保证客户需要的功能被正确的实现,在开发功能之前我们就应该将测试写好,一开始就将质量内嵌到自动化测试中,这样我们才能从中获取最大的好处。

一 测试的分类


为了确保交付高质量的应用软件, Brian Marick 对测试进行了相应的建模,他根据两个维度对测试进行了分类:

  • 业务导向还是技术导向
  • 支持开发过程还是为了对项目进行评价
分类

** 1、业务导向且支持开发过程的测试**

对应的分类

这一象限的测试也叫功能测试或验收测试,目的是为了验收当前开发的功能需求是否被正确的完成,验收测试也可以测试系统特性的各方面,比如功能、容量、易用性和可变性等。一般我们应该在开发一个功能前就把验收测试写好,并采取自动化的形式去验收,提前写验收测试也可以很好的明确功能需求,通过这些测试我们可以知道我们要做哪些功能。

系统的验收测试应该运行在类生产环境,自动化测试的一些特性:

  • 加快反馈的速度
  • 减少了测试人员的工作负荷
  • 让测试人员可以集中精力去做探索性测试和一些必须手动测试的活动。
  • 验收测试也是一组回归测试
  • 写出可读的测试套件,这样就可以从测试中生成需求说明文档。这样也就可以保证了文档不会过时。

2、技术导向且支持开发过程的测试

对应的分类

这些自动化测试应该单独由开发人员来创建和维护,这一象限的测试可以分为:

  • 单元测试:一般需要依赖测试替身来模拟数据。因为不需要使用数据库、文件系统...,所以速度会很快,这也意味着会得到更快的反馈,单元测试也是回归测试套件的主要部分。
  • 组件测试:用测试更大的功能集合,需要使用数据库、文件系统 ...,所以速度会相对较慢,组件测试也被称为“集成测试”。
  • 部署测试:为了检查部署过程是否正常,也就是程序是否被正确的安装、配置。

3、业务导向且评价项目的测试

对应的分类

这类测试一般需要我们手工测试,目的是为了验证实际交付给用户的应用软件是否符合其期望,包括需求规格说明是否满足以及其正确性。
几种测试的方案:

  • 演示:频繁的向客户演示新功能,以此快速的获取反馈信息
  • 探索性测试:执行测试时,测试人员因该积极的去发现隐藏的缺陷,并创建新的自动化测试集合去覆盖
  • 易用性测试:验证用户是否能很容易的使用软件完成工作(用户体验)
  • beta 测试:验证用户是否对隐藏的新功能感兴趣,从而判断该功能的价值

4、技术导向且评价项目的测试

对应的分类

非功能测试是指除了功能之外的系统及其它方面的质量,比如:容量、可用性、 安全性等。对非功能性的测试也是非常重要的,因为这因素可能会导致很大的潜在风险。 当然非功能性测试所需要的环境也更加苛刻,它需要专业的人员搭建一些特殊的环境来能实现,而且花费的时间也较长,所以非功能性测试的频率会比较低,而且应该在开发的后期去进行测试。

二 测试替身


在自动化测试时测试替身扮演着一个非常重要的角色,比如在单元测试中通过模拟对象来代替系统的一部分,这样就可以大大的提高测试的速度。
测试替身的分类:

  • 哑对象(dump object):指那些被传递但不被真正使用的对象,这些对象一般只是用于填充参数列表,只是起到一个占位的作用,没有具体的含义。(如测试A类的run方法,需要在创建A类的实例时需要传入B类实例,但run方法并没有用到B类实)
  • 假对象(fake object):假对象相对于哑对象来说,要对耦合的组件有一些简单的实现,实现我们在测试中要用到的方法,指定期望的行为(如返回期望的值)。假对象适用于替换产品代码中使用的全局对象,或者创建的类
  • 桩(stub):测试桩与假对象有点类似,也要实现与产品代码耦合的组件,指定期望的行为。这里最大的不同是测试桩需要注入到产品代码中,从而在测试产品代码时替换组件,执行桩的行为。使用测试桩不需要进行备份和还原。
  • spy:与测试桩类似,但是可以记录桩使用的记录,并进行验证。
  • 模拟对象(mock):设定期望的行为,然后验证期望的行为是否发生,从而达到测试产品代码行为的目的。适用于验证一些void的行为。

三 现实中的情况和对应策略


1、新项目

当我们着手开始一个项目的时候,这也是最容易开始做持续集成的时候,那么毫无疑问最重要的事情应该是先自动化验收测试。我们需要

  • 选择技术平台和测试工具
  • 建立一个简单的自动化构建
  • 制定遵守 INVEST 原则(独立的、可协商的、有价值的、可估计的、小的、可测试的)的用户故事及其考虑其验收条件

步骤:

  • 客户、分析师和测试人员定义验收条件
  • 测试人员和开发人员一起基于验收条件实现验收测试的自动化
  • 开发人员编码来满足验收条件
  • 只要有自动化测试失败,开发人员都应该将它定义为最高优先级并修复它。

2、正在进行中的项目

对一个正在进行中的项目去做自动化测试相比项目一开始就写测试面临着更大的压力。最好的自动化测试的方式就是选择应用程序中那些最常见最重要的用例开始写测试,让这些测试尽可能覆盖更多的选项,一般覆盖的范围都会宽于用户故事级别的验收测试。

3、遗留的系统

去测试那些你修改的代码就可。前提是你已经搭建好自动化构建流程。

几个概念

  • 可用性测试:让用户通过使用产品来评估产品的技术。
  • 探索性测试:在进行测试的时候同时探索开发更多类型的测试从而改善测试流程。
  • happy path:一个正确的执行路径
  • alternate path :多个可以相互替代的 path ,入口和过程可以不一样,但是最终产生的用户价值是一样的
  • sad path :选择一条执行路径产生的错误处理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容