自動化化測試的局限性
出售軟件時,沒有什么比軟件本身的質(zhì)量更重要的了。如果您的軟件無法實現(xiàn)用戶期望的功能,那么您的業(yè)務將步履維艱。這意味著至關(guān)重要的是,您必須[1]知道用戶希望軟件執(zhí)行的操作,并且[2]知道您的軟件會執(zhí)行此操作。最近,我一直在根據(jù)健康軟件產(chǎn)品開發(fā)的兩個基本要求來考慮自動化測試的局限性。
考慮限制之前,讓我們首先考慮的自動化測試怎么??做?幫助我們滿足用戶的期望。在許多方面,您的開發(fā)團隊都是您的第一位也是最重要的用戶。自動化測試使這些“用戶”可以非常清楚地描述他們期望軟件如何運行。事實上,當你能描述軟件應該如何與這樣的精確度表現(xiàn),計算機可以檢查,就可以檢查,在該軟件的行為描述方式??快速?和??反復。這些是自動化測試的巨大收益,并且這些收益驅(qū)使商業(yè)軟件行業(yè)在過去的幾十年中認真對待自動化測試。

但是,即使只是簡單地確認軟件的行為符合預期,自動化測試也有一些限制。由于測試套件中編碼了期望值,因此存在第一個限制。在大多數(shù)情況下,實現(xiàn)該功能的開發(fā)人員就是編寫測試的人。對于開發(fā)人員而言,除了構(gòu)建功能時他所考慮的方案之外,很難考慮其他方案。這意味著甚至可能不考慮可能的邊緣情況,更不用說進行測試了。?
還有一個現(xiàn)實:從定義上說,任何具有足夠價值的軟件都將由他人支付,對于任何人的頭腦來說,跟蹤它的每個活動部分本質(zhì)上太復雜了。因此,不可能以自動化測試套件的形式充分表達這種復雜性。即使有了強大的自動化測試套件,用戶也將發(fā)現(xiàn)錯誤,因為沒有開發(fā)團隊可以預期用戶可能會遇到的狀態(tài)或條件的每種可能組合。此外,沒有開發(fā)團隊可以預見用戶對應用程序的無數(shù)(通常是不同的)期望該軟件將并且應該運行。

在構(gòu)建“單頁應用程序”(SPA)時,這些限制會更加嚴重。在傳統(tǒng)的Web應用程序中,很大一部分計算發(fā)生在后端服務器上。然后將結(jié)果(HTML,CSS和JavaScript形式)返回給用戶并由瀏覽器處理。當軟件的核心復雜性集中在服務器上時,可以在高度相似的環(huán)境中(例如,在某些連續(xù)集成服務器上)測試該軟件。但是,單頁應用程序會將核心計算卸載到用戶的瀏覽器中。期望?開發(fā)團隊??以很高的精確度了解其服務器環(huán)境的詳細信息,但很難??預期?您的各種用戶瀏覽器的詳細信息。他們可以使用多種不同瀏覽器中的一種,在少數(shù)操作系統(tǒng)之一的頂部運行幾種瀏覽器引擎中的一種,并以多種可能的方式在多種設備之一上配置

盡管所有Web軟件都??以??各種可能條件(和其他條件)的某種特定組合運行,但是SPA通過在某些特定環(huán)境中計算?出數(shù)以百萬計的可能性中的主邏輯而引入的增加的復雜性??強烈地限制了自動化測試的效率。您的團隊可以在一個特定環(huán)境中運行自動化測試,也可以嘗試在多個環(huán)境中運行測試。但是,后一種選擇會線性地增加測試套件的時間成本,同時也會增加測試套件的復雜性,因為現(xiàn)在要求它具有足夠的通用性,可以在您選擇的各種環(huán)境下運行。
最終,如果沒有實際用戶使用您的軟件并確認其行為符合預期,就不可能確認您的軟件是否達到了用戶的期望。當然,這就是為用戶提供軟件的方式。您將軟件交給他們,他們可以在他們擁有的任何特定環(huán)境中運行該軟件,然后他們要么實現(xiàn)他們的期望,要么就沒有達到他們的期望。?
確實,以最簡單的形式,錯誤只不過是未滿足的期望而已。有時,開發(fā)該軟件的開發(fā)團隊會考慮這些期望,但是在某些情況下實現(xiàn)是錯誤的。但是有時候,開發(fā)團隊從未考慮過這種期望。但是,從客戶的角度來看,沒有區(qū)別。他們期望軟件以一種方式,以一種方式進行結(jié)構(gòu),在某些地方提供某些信息的行為,而實際上卻沒有。?
開發(fā)團隊通常根據(jù)原始考慮因素來組織此反饋。如果團隊最初希望該軟件以預期的方式運行,則客戶報告的問題是一個錯誤。如果團隊不希望軟件以預期的方式運行,則客戶報告的問題是功能請求。但是,在任何一種情況下,開發(fā)人員和產(chǎn)品經(jīng)理都需要相同的核心信息:
用戶期望的情況是什么?
實際情況是什么?
為什么未滿足的期望成為問題?
當然,正如每個軟件開發(fā)團隊都知道的那樣,用戶根本不會或無法提供如此清晰的反饋。絕大多數(shù)用戶甚至沒有報告未滿足的期望,而那些經(jīng)常提供很少細節(jié)和不專心觀點的用戶。

沒有比真正使用您的軟件的真實人提供的結(jié)構(gòu)更好的反饋更好的反饋了。而且,沒有比人群測試更好的方法來收集此反饋。這是因為僅向要在真實環(huán)境中運行該軟件的真實用戶提供軟件是不夠的。這些用戶還必須向您報告有用的詳細信息,軟件的行為方式,他們的期望值,原因,地點,條件以及其他條件等。?
自動化測試會在失敗時為您的開發(fā)團隊提供有用的詳細信息,但它們永遠無法提供期望。您的開發(fā)團隊將不得不將它們自己編碼為測試。您的真實用戶總是在真實環(huán)境中“測試”您的軟件,但是他們很少向您提供有關(guān)他們的期望,在特定情況下以及軟件行為方式不同的有用的詳細信息。單靠這些都不是足夠的。

