1. 什么是我們真正看到的東西?是一個錯誤還是一個癥狀?
如果不診斷環境,我們不能夠確定是什么導致了一個癥狀出現。如果客戶端和服務器端的一個環境特定的變量被移除或被改變的話,我們或許將不能夠重現問題。
例如,我正在測試一個Web的缺陷跟蹤應用程序,并且遍歷創建一個bug報告的流程。當我選擇“新建”按鈕時,我接收到一個錯誤信息:Microsoft OLE DB Provider for ODBC Drivers error '80040e14'。在花了一些時間調查我的瀏覽器環境后,我發現JavaScript在瀏覽器的參數設置對話框中被禁止了。啟用JavaScript就消除了這個錯誤。(這個問題是否是個bug不在我們今天討論的范圍里)這里是要說如果我在bug報告中增加關于JavaScript的信息,我可以節約我們團隊花費在分析這個問題的時間。此外,“禁用JavaScript”從此應該要添加到我的測試包中;它將被應用到應用程序的各個地方,以使所有潛在的相關問題不會出現。
2. 這個錯誤是環境依賴的嗎?
為了重現一個環境相關的錯誤,我們不得不完全地復制活動的準確順序和應用程序操作所在環境的條件(操作系統,瀏覽器版本,插件的組件,數據庫服務器,web服務器,第三方組件,服務器/客戶端資源,網絡帶寬和通信量等等)。例如,當你試圖使用一個28.8 kbps的撥號連接登錄到你的Web應用程序中,你會碰到一個由于在認證過程中因超時而導致的登錄失?。峭瑯拥牡卿洸襟E如果你用一個1.54 mbps 的T-1連接將會成功的通過認證。在這個案例中,你有一個環境依賴的錯誤,這個依賴條件是在帶寬中。
環境無依賴的錯誤,用另一種話說,相對來說是容易重現的-它沒有必要復制操作環境。環境無關的錯誤,需要復制所有都能夠揭示錯誤的步驟。例如,如果公司的名稱在所有產品在線頁面上錯誤地拼寫為WebTessting.Con, 你就總能看到這個錯誤-它是和硬件,軟件和你操作環境中資源變量無關的。更為常見的是,我們將環境無關的錯誤稱為功能特定的錯誤。
3. 是一個代碼錯誤或是一個配置問題
錯誤(或是假定錯誤的癥狀)可能會在代碼修復中或系統重新配置(客戶,服務器或網絡)解決(假設錯誤是真實的)。不要太快的下結果它是一個bug。
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 對比真正的軟件錯誤,這是一個說明識別可能的配置問題挑戰。它顯示了由于Web應用程序“登錄失敗”而引起的一個錯誤信息。只是簡單的查看這個錯誤信息,是不可能判斷這個錯誤是由于軟件bug引起的還是服務器端配置問題,或是兼容性問題,瀏覽器配置問題或以上所有的。
在進一步分析這個失敗以后,我發現幾個可能的產生這個錯誤信息的條件:
IIS (Web server) virtual directory has not been set up properly當虛擬目錄沒有被正確的配置時,將找不到請求的文件,腳本或數據。這是一個典型的服務器配置的問題。然而,如果安裝程序未能根據說明書一樣配置web服務器,那么這是一個軟件的錯誤。如果一個系統管理員未能根據說明書正確地配置web服務器,這個就變成了用戶錯誤。
Application directory has not been configured properly to execute scripts一個典型的應用服務器目錄包含了需要執行的腳本,它們會被代表客戶端的Web服務器調用。為了安全的原因,一個Web服務器可以被配置以允許或不允許腳本在一些目錄里執行。如果你的應用服務器目錄被設計來包含將要被執行的腳本-但是Web服務器被配置為在那個目錄里禁用腳本執行-應用程序將不能工作。這是軟件錯誤還是一個配置問題呢?
Default Web page has not been set up properly這個問題和上面的問題相似
SQL Server is not running為了執行查詢,存儲過程和訪問數據,應用服務器需要連接后臺在SQL服務器上的數據庫。如果SQL服務器進程沒有運行,顯然應用程序將不能工作。
DLL/COM objects are missing or were unsuclearcase/" target="_blank" >ccessfully registered可能安裝程序在安裝過程中未能復制應用服務器要使用的所有DLL。如果遺漏了其中一個應用程序所需的DLL,應用程序將不可以工作。
也可能安裝程序正確的復制了所有需要的模塊,但是失敗的注冊一個或多個DLL。例如OLE-Based的對象,例如COM或DCOM,它們的class ID(CLSID) 在它們可以被使用之前必須注冊到注冊表庫中。如果一個應用程序試圖訪問一個沒有被成功注冊的COM對象,應用程序將不能工作。
這個問題通常由安裝過程中的錯誤引起來。另一方面,如果組件必須被手工注冊地話,就變成一個配置問題。
Browser-side JavaScript setting has been disabled這是一個瀏覽器端的配置問題,由于應用程序要求瀏覽器啟用JavaScript。這是一個軟件錯誤,配置問題或是一個技術支持的問題呢?