三番四次看見有人在俱樂部里提及,所以找來看看。翻開introduction,不由大笑。因為我也不止一次提過,現(xiàn)存的測試方法,不適合于系統(tǒng)測試(system testing)。在我每年兩次的system testing時,每次我都復(fù)習(xí)之前用過的方法,并加以改進(jìn)。自己也試著把經(jīng)歷寫成博客。點(diǎn)我。所以看到RE也跳出來寫,覺得頗為親切,于是看了下去。順便寫些閱讀手記,給不常看書的tester們一點(diǎn)提示,看軟件測試書籍,要帶著詢問,思考,回答,聯(lián)想的方式閱讀,而萬不能一目十行。

  注:Q為問題代號,即在閱讀時,由于作者描述不清,產(chǎn)生的問題,我會在Q后,試圖在文中尋找答案。

  1、標(biāo)題

  作為一個的tester,首先我們要發(fā)問:這是一本關(guān)于什么的書。標(biāo)題是:the little black book on test design。

  Q1.1為什么叫l(wèi)ittle?因為本書只有32頁。

  Q1.2black book,為啥叫魔法書?

  Q1.3test design,哪一部分的test,unit test,component test,還是integration或system test,抑或全部包括?

  僅從標(biāo)題,我們還無法得到答案。

  2、縱覽目錄,結(jié)構(gòu)及方向

  RE將本書分為:介紹,靈感,分析,點(diǎn)子,執(zhí)行,終曲,及參考書目這幾個部分。

  3、簡介

  簡介里,通常會告訴我們,作者為什么會寫這本書,寫了給誰看。RE說:本書是講述system testing的。這回答了問題1.3。如果我們只做unit test,卻忽略了這句話,讀完了才開始罵街,那要冤枉RE了。但是注意,RE在此處提到了一個新詞:ambitious,野心。

  Q3.1什么叫有野心的進(jìn)行system testing呢?

  RE說:十年來常覺得現(xiàn)存測試方法之不足,現(xiàn)將坊間實用方法記錄如下,以供諸位品鑒。實用方法包括:測試策略,分析,設(shè)計,和執(zhí)行。此處,RE提供了一條新的線索,即:本書所謂的測試設(shè)計,不止包括設(shè)計,更包括其他一切。因為在現(xiàn)實中,這些任務(wù)彼此互相聯(lián)系,很難徹底分開。由于測試的抽樣區(qū)間過分巨大(即連一個計算器都有無窮多種組合的輸入),因此,從中選出重要區(qū)域才是關(guān)鍵。手動進(jìn)行system testing的人,如何抽樣重要區(qū)域更為重要。此處,勉強(qiáng)算是Q1.2的解答,因為在真實環(huán)境中,現(xiàn)存方法并不實用,因此,才將實用方法總結(jié)分享,稱之為black book。

  我們更可以替作者做出總結(jié):本書是針對系統(tǒng)測試(system testing)的實用方法的總結(jié)歸納(用于找到測試的重要區(qū)域),尤其適用于手動測試。

  3.1 要素

  RE說:tester應(yīng)該收集盡可能多的信息(需求,說明,雛形,代碼,缺陷,技術(shù)支持,用戶故事,用戶預(yù)期,技術(shù),工具,模型,系統(tǒng),質(zhì)量標(biāo)準(zhǔn),質(zhì)量特點(diǎn),測試技術(shù),測試點(diǎn)子,交談,風(fēng)險,可能性),將所有這些整理起來,而后發(fā)揮創(chuàng)造力,找到重要區(qū)域。但是,這個方法只適合于ambitious projects,即有野心的項目。若是你的項目,資源緊缺(說白了是沒啥經(jīng)費(fèi),沒啥牛人),別扯這個。即:ambitious project needs ambitious testers and ambitious testing。(有野心的項目,才需要有野心的tester和有野心的testing)。此處,對Q3.1,ambitious有了解答。

  RE又說:若是有野心之人,那么可以采用下面四步:1,搜尋靈感,2,分析重點(diǎn)區(qū)域,3,合成測試點(diǎn)子,4執(zhí)行。我們留意到,這四步,正是接下來四章的標(biāo)題。

  3.2 基礎(chǔ)理論

  RE以社會學(xué)研究為例:科學(xué)家總是收集被研究對象的所有信息,加以分類,試圖從中發(fā)現(xiàn)一些理論。直到收集來的信息穩(wěn)定下來,再不更改,此時,理論才成型。整個過程中,沒有前提,沒有假設(shè),若是我們開始自許已經(jīng)將重要問題都一網(wǎng)打盡,那是非常危險的事情。RE將基礎(chǔ)理論的形成與testing進(jìn)行類比;A(chǔ)理論是要從社會中收集信息,包括面談,背景資料等,相比對于testing如何收集信息,3.1中的要素中已經(jīng)列舉過了。

  3.3 測試設(shè)計理論

  RE說:測試的策略、分析、設(shè)計與執(zhí)行不應(yīng)分離,而應(yīng)結(jié)合在一起。因為它們之間互相影響,更不要一開始定下strategy,讓它慢慢隨著情形演變。此處RE的理念,開始與敏捷共鳴。越是晚下決定,對客戶越有利。那么是不是不應(yīng)該有strategy呢?RE說,高層的策略可以有,但不要具體。底層的測試策略,則應(yīng)該在學(xué)習(xí)的同時,逐漸成型。

  RE說:為什么測試分析不常被提及?因為“要測什么”早已在需求中說清楚了。市面上大部分的書,都在講述單元測試或模塊測試的方法,而比之更重要的system testing,以及如何選擇重要區(qū)域(important things)這個問題,卻被忽略了。好在,探索性測試比較關(guān)注于此。RE更感興趣的,不是設(shè)計測試用例,而是設(shè)計測試點(diǎn)子。此處,與基礎(chǔ)理論相對應(yīng),RE認(rèn)為,他的工作是搜集相關(guān)信息,分析,針對性的進(jìn)行選擇策略與工具。

  Q3.3.1:我們已經(jīng)聽RE提到過數(shù)次,重要區(qū)域了,到底什么是重要的?

  3.4 重要區(qū)域(important things)

  終于來解答Q4.3.1這個問題了。RE列舉了如下若干可以為重點(diǎn)區(qū)域提供參考的信息來源:1需求,2業(yè)界知識,3用戶情況,4想象力,5批判性,6技術(shù),7測試人的思維。從上述來源中選去重點(diǎn),需要對價值觀的判斷,而計算機(jī),在這一點(diǎn)上,遠(yuǎn)遠(yuǎn)不如人類。此處,提到需要用到價值判斷(value judgement),來選擇重點(diǎn)區(qū)域。相信這個詞,在之后會頻繁出現(xiàn)。