[所以我说 Google 你的测试] 品质到底是什麽?

嗨~ 我是 Robin : )
这系列主要是我读关於这本书 Google 的软件测试之道 的一些读书感想,

所以内容可能会含有大量我个人的想法。

如果有与你的想法相违背,都以你的为主,
但是希望你可以与我分享。

如果你跟我一样是 QA 亦或是你对 Google 怎麽测试也感到好奇,
那也许你可以看看我的心得文与我讨论你的想法,

(如果有兴趣也可以自行购买该本书,毕竟我写出来的可能会有个人的误解)

那麽~ Let's go~

如何获得高品质的产品?

品质等於测试?

品质不是被测出来的,
什麽意思?
如果一个产品在设计阶段就是错的了,品质就一定不会好。

书中范例: 想像一下如果软件产品像是汽车一样,当设计阶段时就已经是错误的方向了,当产品售出後大量召回品质有问题的产品,那代价是多麽昂贵。

个人想法: 我认为范例想要解释的是说,这已经不是测试的问题,而是整个产品设计的问题,品质差这件事已经不是被测出来的,而是设计阶段就有的问题。

品质不是被测出来的,但是没有测试不可能开发出有品质的软件。
原因是连测试都没做你如何保证你的软件具有很高的品质呢?
"品质不等於测试,但是没测试没办法确保品质。"
满微妙的关系 xD

所以我说... Google 怎麽做的?

在说 Google 怎麽做之前,
以我在的国家(台湾)而言,相信的多数的软件公司型态大部分都是,
(个人见识浅薄但是听到大多数都是这样的形式,如有冒犯我先道歉QQ)

新功能:
RD 开发-> 丢给QA/QC测 -> 产品出去爆炸 -> 找QA/QC 怎麽没测到

修 Bug:
RD 修-> 丢给QA/QC测 -> 修好出去发现新 Bug 再爆炸 -> 再找 QA/QC 怎麽没测到

我个人认为这样一来一往成本很高,而且有多少 QA/QC 是会进去看 RD 写的 Code ?
我自己"之前"是都没在看(但是大多数原因都是因为看也看不懂QQ),
大多数都是看个需求规格书,就开始测了对吧?
试想看看如果 Google 也是这样做会是什麽样的情境? xDD

那接着就要分享书中提到 Google 怎麽做的,
停止开发和测试的隔离对立,他们应该并驾齐驱,在把开发过程中加入测试,
完成每段程序码,就写相对的测试,写更多程序码就应该要有更多的测试,
原因是什麽?
第一个原因:
Google 专职测试人员数量非常稀少,那只有谁能去做? 就是开发人员自己

第二个原因:

  • 谁能比实际撰写程序的人更适合做测试?
  • 当有Bug 出现时,谁能够比实际写程序的人还更适合找Bug?
  • 谁会害怕假日收到产品出现 Bug 而影响自己的假期呢?

相信你已经知道答案了。

试想一下回归刚刚的情境,假如产品出了问题,第一个跳出来的肯定是写出导致这个问题的开发人员,而不是没有测到这 Bug 的测试人员。
(虽然身为测试人员的我其实说真的会非常自责QQ)
这意味着品质不是检测,而是一种预防行为。
品质则是开发阶段的问题而不是测试的问题。

那反观我上面提到看到大多数的情境,似乎就不太合理,为什麽呢?QQ
(你知我知就不再多说,我们一起进步)

Google 如何提倡这种开发人员自行写测试的行为?

书中提到:
Google 从 Code review 阶段留言说 "你的测试在哪儿?" 再到厕所里贴着提醒开发者的最佳实践。

总结: 怎麽获得品质?

测试是开发过程中不可缺少的一部分,
当开发过程和测试一起携手联姻时,就是获得品质的时候了。

重点佳句收藏

  • 测试不能成为导致创新和开发过程变慢的阻隔
  • 品质不等於测试,但是没测试没办法确保品质,而品质不是检测而是一种预防行为。
tags: Google 软件测试之道读书心得

<<:  Day 18【Opensea.js】我的这把刀可是涂满了毒药的毒刃

>>:  Day22- 场地也能选? Field Selectors

学习MLOps前暖身操:why, what, who?

接下来的30天,我们会一起看MLOps的更多层面。从为什麽产业开始谈MLOps开始,以及其包含的技术...

{CMoney战斗营} 的第十三周 #LINQ

其实根本还不太会SQL,这周的任务马上就变成了学习LINQ,其中的重点包括: IEnumerable...

【第二十九天 - Python 反序列化】

Q1. 什麽是 python 反序列化 当我们希望在 Python 中保存一个物件(例如将机器学习训...

[Day 7] Course 2_Ask Questions - 初探试算表(Spreadsheets)

《30天带你上完 Google Data Analytics Certificate 课程》系列将...

stack heap内存、预编译、作用域链 - 概念介绍

预编译发生在何时? 执行全域前一刻,做全域的预编译;执行function前一刻,做function的...