什么是走廊對話

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

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

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

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

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

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

亞當說:“你不能預見進度表嗎?”

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

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

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

亞當說:“我了解這個很難估計,但是把工作壓縮為五周是可能的吧?”

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

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

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

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

亞當說:“必須準備好!

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

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

亞當說:“副總裁不會允許這樣的”。

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

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

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

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

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

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

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

亞當說:“真的嗎?但是如果你預先設計測試用例測試不是更容易組織測試嗎?如果按照哪種方式那么事情將會進行得更快嗎?”

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

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