当单元测试、集成测试不可被信任时, 我们该做些什么?

这么多年来,我们一直都在被 “制式的教育” 着⋯

  • 单元测试是保证质量的必要的手段,无论如何是一定要做的。

但有人能说得清楚,单元测试到底能保证什么样的质量吗?是至多只能保证 “某个开发人员代码的质量”?我们是否真正有深度的思考过:保证 “某个开发人员代码的质量” 与 “保证产品的质量” 间的对应关系?

许多人都会说,Ken 你问这些问题,就代表着你不懂单元测试⋯

是的,我是不懂单元测试;我更不懂的是,为何会有开发人员在“完全不明白” 自己苦苦、甚至是熬夜所写出的单元测试用例与产品质量间的关系时,还是愿意傻傻的在那写单元测试用例?!

这么多年来,我们一直都被 “制式的教育” 着⋯

  • 自动化、手工集成测试用例一定要做到如何,如何,产品才能发布。

但,有人能说得清楚,每一次的版本开发中,产品代码 (架构) 上的变化、实际运维环境上的变化与集成测试用例、集成测试环境间的差异吗?

假如,没有人能说得清楚,我们又怎能信任自动化、手工集成测试?!

这么多年来,我们总是被 “制式的教育” 着⋯

  • 使得我们每个人都成为执行敏捷工程实践的高手,但,同时,我们却往往没法回答在产品开发上的一些 “Common Sense” 的问题?!

我们是不是应该要抛弃过往的 “制式教育” 中的单元测试与集成测试?! 而重新的思考 “真正有效”、“真正高效” 的测试方法,测试工具?!

思考着这些测试方法、测试工具其实ㄧ点都不难的;在2014 年,我也只是想着,不要再写笨重、无用的需求文档、设计文档,但又能保证产品的质量与提升开发的效率,所以,就整合了既有的一些工程实践,创建了 Story 场景树。

所以, 我们要思考的是:

  • 抛弃 “建树不见林” 的单元测试, 并不代表著我们是在舍弃所谓的 “类(Class) 级别的白盒测试”。而是我们要重新的设计一测试方法、测试框架, 可将 “产品关键的业务场景” 以正确且轻量级的方式, 传递到 “类(Class) 级别的白盒测试”上。
  • 抛弃 “自我安慰式” 的集成测试, 并不代表著我们是在舍弃所谓的 “特性/产品间的集成交互测试”。 而是我们要重新的设计一测试方法、测试工具, 可将 “产品运维的环境、场景” 带到 “特性/ 产品间的集成交互测试”。更重要的是, 我们应该是以 ”产品运维的环境、场景” 来设计 “特性/ 产品间的集成交互测试” 的自动化测试用例。

所以, 当单元测试、集成测试不可信任时, 我们应该重新的创建、设计  “真正有效”、“真正高效” 的测试方法,测试工具。而我们要问的问题,应该不是:真正高效的测试方法及工具是什么?而是应该要问:创建高效的测试方法及工具,所需的背后的思维是什么?然后,照着这样的思维,你就能自己去创建、设计出属于你自己所需要的测试工程实践与测试工具。

建议不要只是期望着看到答案,却永远不知道答案是怎么来的;因为,总是只看到答案,学习答案,这样永远也学不完的; 会学得好累、好鬰闷。

自己创建,就相对的要轻松、自主的多了。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的知识天地

新手程序员须知30个技巧!少走弯路

最近不少读者问我,自己新手程序员上路,面对工作有时候无从下手,很吃力,有没有一些小技巧,可以提供给他(她)。小编当然是知无不言,只有能帮的,小编都竭尽所能啦!

13620
来自专栏Cloud Native - 产品级敏捷

微服务架构设计 第五步: 微服务的 User Stories 的拆分与澄清

2016.9.11, 深圳, Ken Fang 特性负责人与架构师, 开发骨干人员, 测试经理, 资深测试人员, 经由协作, 完成了: 1.  微服务边界上下文...

26050
来自专栏EAWorld

数字化企业云平台的Cloud Native12原则(上)

本文作者介绍了未来云原生应用建设的方法论,开发Cloud Native App的理想实践标准——12要素原则的前6个原则,并围绕数字化企业云平台讲述了具体实践方...

35060
来自专栏PHP在线

PHP程序员突破成长瓶颈 - 附学习建议

身边有几个做PHP开发的朋友,因为面试,也接触到不少的PHP工程师,他们常疑虑自己将来在技术上的成长与发展,我常给他们一些建议,希望他们能破突自己,有更好的发展...

46930
来自专栏Golang语言社区

如何让服务器从30台缩减到2台的:从Ruby迁移到Go语言

我们开发第一版的IronWorker已经是3年前的事了,是用Ruby写的,API基于Rails开发。我们没用多久就发展成了相当大的规模,很快我们就触及到了Rub...

405150
来自专栏鸿的学习笔记

简单聊聊数据模型

一个data system最重要的部分就是数据模型,正如某人所言,程序=数据结构+算法,那么数据模型就是程序中的数据结构了。数据模型不仅仅影响着数据的存储,...

10330
来自专栏Cloud Native - 产品级敏捷

Cloud-Native 微服务开发元素卡: 高效搞定 Cloud-Native 微服务的持续交付

所以, 我们是不是只要拥有了如上图的持续交付的 “价值流”, 就能保证我们能按照外部用户的诉求, 快速的交付, 甚至是能做到按需的交付?

629170
来自专栏机器人网

【解读】ABB机器人虚拟仿真技术

工业自动化的市场竞争压力日益加剧,客户在生产中要求更高的效率,以降低价格,提高质量。如今让机器仍编程在新产品之始花费时间检测或试运行是行不通的,因为这意味着要停...

14220
来自专栏Java架构

Java程序员你跟架构师的差别在哪里?

23090
来自专栏成猿之路

开发者必备十大学习网站

来自CSDN:https://blog.csdn.net/qq_43652793/article/details/83962086

29430

扫码关注云+社区

领取腾讯云代金券