什么是走廊對(duì)話

解釋測(cè)試是一個(gè)很大的問題。在這里,讓我們集中精力在這個(gè)挑戰(zhàn)的一個(gè)部分:走廊對(duì)話。我是根據(jù)解釋的時(shí)機(jī)命名的,時(shí)機(jī)發(fā)生在一個(gè)軟件項(xiàng)目的自然過程中,例如,在一個(gè)工作日的走廊碰面。

我朝著我的座位走,亞當(dāng),開發(fā)經(jīng)理,將朝著相反的方向走。他認(rèn)出了我。

亞當(dāng)說:“噢,詹姆斯,我們希望把時(shí)間縮短三個(gè)星期,我知道你的進(jìn)度表要求在原代碼凍結(jié)后整整八周的時(shí)間進(jìn)行測(cè)試。你能在五周完成嗎?我們可能沒有時(shí)間去按照我們希望的那樣去測(cè)試了!

我的第一反應(yīng)是他不能夠認(rèn)真的對(duì)待質(zhì)量,他是一個(gè)混蛋,然后我應(yīng)該回?fù)羲臒o知。我離開了,我不需要如此……。這些第一反應(yīng)不會(huì)對(duì)我們有所幫助,我讓他們走了。幾毫秒后,一個(gè)好的想法出現(xiàn)了:恐怕亞當(dāng)認(rèn)為測(cè)試進(jìn)度表是由完全由我控制的因素決定的,如果這樣,恐怕我能夠直接的答復(fù)他。

詹姆斯說:“我的進(jìn)度表并不在我的控制之中,亞當(dāng)。八周時(shí)間只是根據(jù)產(chǎn)品的復(fù)雜度和我們能夠想到的我們以前遇到的困難所形成的表格,這可能會(huì)需要多于八周的時(shí)間去測(cè)試和修復(fù),或者至少,更多的取決于當(dāng)我們拿到產(chǎn)品的時(shí)候它的技術(shù)狀態(tài)!

注意我是如何試圖提供一份進(jìn)度表的影響因素的菜單,那么我們可以有效地盡量合理的縮短測(cè)試周期。我希望他可以詢問這些因素,在這種情況下,我可以找出書寫板然后給他列一個(gè)很長(zhǎng)的列表,這些因素并不需要是正確的,僅僅足夠正確好了,這樣我們可能會(huì)討論我們所面對(duì)的整個(gè)情形,而不是僅僅傾向于給這位經(jīng)理一個(gè)結(jié)果。

亞當(dāng)說:“你不能預(yù)見進(jìn)度表嗎?”

再次證明我的第一反應(yīng)好像是沒有用處的:也許我是一個(gè)騙子,也許我應(yīng)該能夠預(yù)見進(jìn)度表,也許每個(gè)人都可以做到這一點(diǎn),但是除了我。只要我在中學(xué)的時(shí)候那天沒有生病,我應(yīng)該知道進(jìn)度表?這些不安全感對(duì)于我們這些努力做好本職工作的人是非常正常的,我也讓這些想法遠(yuǎn)離我的大腦。

在這種情況下有效的回答應(yīng)該是什么?在我看來亞當(dāng)似乎期待兩種回答(也許只需要一種回答),在這種比較復(fù)雜或者隱蔽的情況下。正如我的初的回答一樣,我會(huì)試圖用一種方式將問題的層面擴(kuò)大以便他和我可以更有效的交流,我將會(huì)使用一個(gè)強(qiáng)有力的工具:一個(gè)舉例。

詹姆斯說:“我不知道如何準(zhǔn)確的預(yù)計(jì)進(jìn)度表。這項(xiàng)工作可以迅速也可以緩慢,這取決于阿拉斯加州的項(xiàng)目,2642 個(gè)缺陷?還記得哪個(gè)嗎?在我們找到可以完全重復(fù)使用的案例以前花費(fèi)了兩個(gè)星期,結(jié)果是該產(chǎn)品和一個(gè)受歡迎的防病毒掃描器相結(jié)合了。你知道你樂意在我們接手以前做那種結(jié)合,但是我們無法預(yù)先預(yù)見這個(gè)事情!

亞當(dāng)說:“我了解這個(gè)很難估計(jì),但是把工作壓縮為五周是可能的吧?”

現(xiàn)在我對(duì)于為什么亞當(dāng)可以將視線轉(zhuǎn)移到這個(gè)期限表示驚奇,他好像沒有聽我的。如果回答了這個(gè)問題并做出解釋,他將會(huì)比較惱火。走廊對(duì)話的關(guān)鍵是知道何時(shí)講演以及何時(shí)停止。在這種情況下,是時(shí)候聽從和領(lǐng)會(huì)了。

詹姆斯說:“我了解縮短進(jìn)度表對(duì)于你的重要性,幫助我了解五周的重要性。那里有什么協(xié)議?”

亞當(dāng)說:“嗯,在早期計(jì)劃中,一些高級(jí)經(jīng)理人綜合考慮了他們的時(shí)間。我們所考慮的所有的時(shí)間一直認(rèn)為是‘發(fā)布到生產(chǎn)’的日期是6 月30 日,現(xiàn)在的結(jié)果是那個(gè)日期是稅收時(shí)間,發(fā)布給生產(chǎn)廠商至少需要提前三周的時(shí)間以便產(chǎn)品能夠完成!

詹姆斯說:“如果產(chǎn)品在那個(gè)時(shí)間沒有為生產(chǎn)廠商準(zhǔn)備好那將如何?”

亞當(dāng)說:“必須準(zhǔn)備好!

詹姆斯說:“如果沒有完成將會(huì)怎樣?”

我提出這些問題的目的是清晰的判斷形勢(shì),從而我們能夠?qū)F(xiàn)實(shí)和期望區(qū)別開來。然后我可以指出在這種情況下并不是只有一種選擇,而是很多。我做這些并不僅僅是為了有幫助,發(fā)現(xiàn)和辨認(rèn)清楚可能性同樣也是測(cè)試技術(shù)的基本原理,而且每一次的交談是驗(yàn)證測(cè)試者想法的機(jī)會(huì)。

亞當(dāng)說:“副總裁不會(huì)允許這樣的”。

詹姆斯說:“嗯,有可能。但是作為一個(gè)測(cè)試人員,我的工作是提供信息,幫助組織者做出更好的決定。我覺得在這里不只一種選擇。把它歸結(jié)為一點(diǎn),副總裁可能覺得一個(gè)推遲的產(chǎn)品比一個(gè)劣質(zhì)的產(chǎn)品要好很多,或者他寧愿我們削減一些功能!

亞當(dāng)說:“為什么我們不能修改我們的策略而得到我們想要的呢?你說過你的測(cè)試可能需要不到八周的時(shí)間。我在為加緊整個(gè)進(jìn)程尋找途徑,和我們一起工作吧!

現(xiàn)在他聽起來似乎像是他自己要做,暗含接受了有多于一種選擇的想法以及使用這種方式去將他自己的計(jì)劃作為一種選擇方式。這聽起來是他經(jīng)過選擇的論點(diǎn),但事實(shí)上他已經(jīng)選擇了自己。通過接受有很多的選擇,他不得不考慮影響我們選擇的因素,這些因素是我需要他做的,如果他要理解測(cè)試。

詹姆斯說:“好吧,讓我們一起工作。首先,我希望你能夠理解測(cè)試進(jìn)度表我沒有的控制權(quán)。當(dāng)我們的質(zhì)量標(biāo)準(zhǔn)很高,我們需要更仔細(xì)的測(cè)試,如果開發(fā)提交的產(chǎn)品是很不穩(wěn)定的,我們的一些測(cè)試將會(huì)被封鎖;如果開發(fā)提交的產(chǎn)品對(duì)于我們來講太難以了解,或者難以控制,那么測(cè)試將會(huì)進(jìn)行得非常緩慢;如果我們發(fā)現(xiàn)的缺陷是難懂的和間歇的,我們的調(diào)查和報(bào)告將會(huì)花費(fèi)更多的時(shí)間;

如果產(chǎn)品的變更沒有得到足夠的控制,我們可能不得不進(jìn)行廣泛的重復(fù)測(cè)試;以及如果程序員需要花費(fèi)很長(zhǎng)的時(shí)間修改缺陷,那么它們將沒有辦法按時(shí)完成,不論測(cè)試還有什么工作沒有完成。你能理解我所說的嗎,亞當(dāng)?如果你想要縮短計(jì)劃表,那么我們不得不查看什么能夠驅(qū)動(dòng)進(jìn)度表?”

亞當(dāng)說:“我理解你所說的,我能夠做些什么幫助你們呢?如果程序員幫助你們測(cè)試這樣有幫助嗎?如果我們能夠運(yùn)行你們的一些測(cè)試用例呢?”

詹姆斯說:“我們沒有定義測(cè)試用例!

亞當(dāng)說:“真的嗎?但是如果你預(yù)先設(shè)計(jì)測(cè)試用例測(cè)試不是更容易組織測(cè)試嗎?如果按照哪種方式那么事情將會(huì)進(jìn)行得更快嗎?”

現(xiàn)在我必須說明一個(gè)信念,那是測(cè)試本身來自非測(cè)試。這觸發(fā)了一套無助防御思考:你的規(guī)格書是混亂的,但是你能夠期望我們寫出高質(zhì)量的測(cè)試用例嗎?給我休息一下?除非我真的累了或者我聽到了我成為稅務(wù)檢查的對(duì)象,我通常讓這些想法離開。取而代之的是,我嘗試贊成他的說法:他是對(duì)的;有時(shí)預(yù)先定義一些好的測(cè)試用例是可能的;并且希望測(cè)試一直那樣做是可以的,不論環(huán)境是什么。

詹姆斯說:“是的,你這樣想有時(shí)可以準(zhǔn)確的選擇正確的事情去做?墒,我們目前的情況是,我不知道怎樣開展這樣的工作,有太多的不確定。我們能夠創(chuàng)建測(cè)試用例,但是他們可能是很糟糕的測(cè)試用例。那些能夠充分的在產(chǎn)品生產(chǎn)以前定義測(cè)試用例的人,或者是基于很穩(wěn)定的、定義明確的技術(shù)上有能力的人,或者是沒有能力的在欺騙你的人。我們面臨的挑戰(zhàn)是要盡快地盡力定義具體的測(cè)試!