10x程序员工作法
郑晔
火币网首席架构师,前ThoughtWorks首席咨询师 ,TGO鲲鹏会会员
立即订阅
7978 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序员解决的问题,大多不是程序问题
免费
思考框架 (1讲)
01 | 10x程序员是如何思考的?
以终为始 (11讲)
02 | 以终为始:如何让你的努力不白费?
03 | DoD的价值:你完成了工作,为什么他们还不满意?
04 | 接到需求任务,你要先做哪件事?
05 | 持续集成:集成本身就是写代码的一个环节
06 | 精益创业:产品经理不靠谱,你该怎么办?
07 | 解决了很多技术问题,为什么你依然在“坑”里?
08 | 为什么说做事之前要先进行推演?
09 | 你的工作可以用数字衡量吗?
10 | 迭代0: 启动开发之前,你应该准备什么?
答疑解惑 | 如何管理你的上级?
划重点 | 关于“以终为始”,你要记住的9句话
任务分解 (11讲)
11 | 向埃隆·马斯克学习任务分解
12 | 测试也是程序员的事吗?
13 | 先写测试,就是测试驱动开发吗?
14 | 大师级程序员的工作秘笈
15 | 一起练习:手把手带你分解任务
16 | 为什么你的测试不够好?
17 | 程序员也可以“砍”需求吗?
18 | 需求管理:太多人给你安排任务,怎么办?
19 | 如何用最小的代价做产品?
答疑解惑 | 如何分解一个你不了解的技术任务?
划重点 | 关于“任务分解”,你要重点掌握哪些事?
沟通反馈 (12讲)
20 | 为什么世界和你的理解不一样
21 | 你的代码为谁而写?
22 | 轻量级沟通:你总是在开会吗?
23 | 可视化:一种更为直观的沟通方式
24 | 快速反馈:为什么你们公司总是做不好持续集成?
25 | 开发中的问题一再出现,应该怎么办?
26 | 作为程序员,你也应该聆听用户声音
用户故事 | 站在前人的肩膀上,领取属于你的高效工作秘籍
27 | 尽早暴露问题: 为什么被指责的总是你?
28 | 结构化:写文档也是一种学习方式
答疑解惑 | 持续集成,一条贯穿诸多实践的主线
划重点 | 一次关于“沟通反馈”主题内容的复盘
自动化 (12讲)
加餐 | 你真的了解重构吗?
29 | “懒惰”应该是所有程序员的骄傲
30 | 一个好的项目自动化应该是什么样子的?
31 | 程序员怎么学习运维知识?
32 | 持续交付:有持续集成就够了吗?
33 | 如何做好验收测试?
34 | 你的代码是怎么变混乱的?
35 | 总是在说MVC分层架构,但你真的理解分层吗?
36 | 为什么总有人觉得5万块钱可以做一个淘宝?
37 | 先做好DDD再谈微服务吧,那只是一种部署形式
答疑解惑 | 持续集成、持续交付,然后呢?
划重点 | “自动化”主题的重点内容回顾汇总
综合运用 (7讲)
38 | 新入职一家公司,怎么快速进入工作状态?
39 | 面对遗留系统,你应该这样做
40 | 我们应该如何保持竞争力?
答疑解惑 | 如何在实际工作中推行新观念?
划重点 | “综合运用”主题内容的全盘回顾
总复习 | 重新审视“最佳实践”
总复习 | 重新来“看书”
结束语 (1讲)
结束语 | 少做事,才能更有效地工作
10x程序员工作法
登录|注册

33 | 如何做好验收测试?

郑晔 2019-03-27
经过前面三讲的讲解,相信你对一个项目自动化应该是什么样子有了一个相对完整的认识:程序员写好程序,用构建脚本执行检查,提交代码,在服务器上打出一个发布镜像,部署到各个环境进行检查,检查好了,随时可以发布上线。
我们在前面的内容中只说了该检查,但怎么检查呢?这就轮到测试发挥作用了。
在“任务分解”的模块,我给你完整地介绍了一下开发者测试的概念,但在那个部分讲解的测试基本上还停留在单元测试和集成测试的范畴。对于整个应用该怎么测,我们并没有仔细讨论。
今天我们就来说说应用测试的话题:验收测试。

验收测试

验收测试(Acceptance Testing),是确认应用是否满足设计规范的测试。这种测试往往是站在用户的角度,看整个应用能否满足业务需求。
从名字上来看,验收应该是业务人员的事,但业务人员能做的最多只是验收,测试是他们无论如何也不太可能做仔细的。
所以,验收测试这件事,往往还是由技术团队自己完成,而且在很多公司,这就是测试人员的事。
时至今日,很多测试团队都拥有自动化的能力。所以,自动化验收测试自然是重点的考虑对象。今天,我们的重点就是怎么做好自动化的验收测试。
其实,验收测试应该是人们最早想到的自动化测试,早在单元测试还不流行的年代,人们就开始了对自动化验收测试的探索。有不少团队甚至还构建了自己的框架,只不过,这种框架不是我们今天理解的测试框架,而是针对着一个应用的测试框架。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《10x程序员工作法》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(12)

  • 西西弗与卡夫卡
    之前团队就有人自己开发了一套DSL用来描述验收测试用例,自己跑各种测试,从构建依赖环境,启动虚拟机,到运行测试,不亦乐乎。我发现真有一类人迷恋这种做法,愿意把代码和测试代码以及验收测试代码写得很好,即便开始的时候要花比较多时间,他们非常享受测试通过后的绿色bar。虽然过于迷恋未必有利于项目,但据我观察大多有这样工作习惯的技术人员都很出色

    作者回复: 我很喜欢一个说法,软件工匠,把写代码这件事当做手艺活来不断打磨。

    2019-03-27
    9
  • 如果在理想状态下,单元测试、持续集成和系统测试等都做的很好,那么验收测试一把过是不是就顺理成章了甚至不需要了?它们几个在软件生命周期里侧重些什么?验收测试作为一个主题单独讲解是不是说明前几个还不能保证足够完善或者需要从别的视角对它们做出修正呢?

    作者回复: 你都说了“理想状态”下,现实情况是,理想状态不存在。验收测试就是站在业务的视角看待系统的一个过程,而其它几个都是站在软件本身的角度在看。

    以我对开发做测试这件事的理解来看,开发人员在测试用例设计上,与测试人员还是有很大差距的,测试人员总是可以探索出不同的角度打败你。

    2019-03-31
    4
  • helloworld
    类似BDD这种行为驱动开发相关的内容,包括其已有的框架Concordion是第一次了解到,长见识了。不过在我的了解中,能够践行这种验收测试的公司应该很少吧?

    作者回复: 做测试的程序员不多,做BDD的人就更少,所以,只要学会这些东西,就比业界大部分程序员水平高了。

    2019-05-05
    3
  • 苦行僧
    验收测试和常规的集成测试 有什么区别?

    作者回复: 一般说集成测试,还是站在内部的角度,也就是技术的角度在说,而验收测试应该是站在业务的角度,没做好的另当别论。

    2019-03-27
    3
  • shniu
    自动化验收测试确实是很好的东西,比如在回归测试,省去了很多的重复工作。但我理解BDD的初衷是驱动产品、业务、开发、测试等去深入讨论沟通需求,在还没有真的写代码的时候去实例化story,并一起定义验收用例,让每个人对需求的理解都很透彻,当然特别注意的是要从统一的业务角度去描述,可见,真的做好BDD是需要不断的尝试和总结的。

    作者回复: 你的理解很对,BDD 不太可能一蹴而就,需要各方不断磨合。

    2019-03-27
    2
  • Geek_fe0336
    请教老师,有真实项目中的一些验收测试的例子吗?有github上的项目可借鉴的吗?

    作者回复: 我还真不知道哪个开源项目这么做,我都是在内部项目上这么做的。

    2019-03-27
    1
  • Jxin
    公司老项目,没有测试代码,更别说bdd自动化验收代码了。不过我在尝试为核心的一些业务补充测试代码。刚好可以研究下。有价值的活动不仅仅是写需求,如果只是验收需求,整成自动化验收成本是比较高的,业务不见个愿意买单。但如果说成减少测试队友重复工作,提高需求开发速度和项目可扩展性与健壮性(利于重构,而重构能产生以上价值),并给出大概的量化指标,大部分业务都会再斟酌下的。

    作者回复: 关于遗留系统的讨论正在不远处等着你。

    2019-03-27
    1
  • enjoylearning
    作者给出的参考链接和一些参考书名都很好,国内项目实施BDD的很少吧,可能客户觉得这很浪费时间,或者他们觉得开发做这个他们要承受一些成本

    作者回复: 不做的理由有一万个,做的理由有一个就够了!

    2019-03-27
    1
  • 冰激凌的眼泪
    验收测试是不是针对业务需求的测试?

    作者回复: 对,应该是这样的。

    2019-03-27
    1
  • 宝宝太喜欢极客时间了
    老师,selenium跟Cucumber,端到端测试跟验收测试,有区别吗?

    作者回复: 对比这里的例子,Selenium是用来实现这里的步骤定义的。

    2019-03-27
    1
  • 梦倚栏杆
    我没有明白举那个例子的意义,配置文件写了几段话,程序里写胶水代码去支持,这个感觉也不动态啊,这不是绑死了吗?

    作者回复: 这里面在业务层需要组合的代码是 Given...When...Then 的部分。当你有了足够的基础描述之后,就可以任意组合这些语句了。至于胶水层代码,它本来就是为了支持每一个 Given/When/Then 的实现,不需要更多的能力。

    2019-03-27
    1
  • 晓小东
    我的团队在做一个web项目, 随着业务复杂, 一个迭代开发完成后, 经常会发现系统某些隐藏的功能用例不在了,除了前面所讲项目中增加单元测试, code-review 外, 如果从自动化验收测试角度, 该如何检查出这样的问题。我们团队测试一般针对当前迭代功能需求进行人工验收测试。很难做不到把系统所有用例都进行一番测试。所有很是一个头疼事, 每次迭代都存在风险。
    2019-03-27
收起评论
12
返回
顶部