本節書摘來自華章計算機《 測試反模式:有效規避常見的92種測試陷阱》一書中的第2章,第2.1節,作者:(美) donald g. firesmith 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
本章提供了測試陷阱的概要描述,包括可以識别它們的症狀。
這些一般測試陷阱不是主要針對任何單一類型的測試。
2.1.1 測試計劃和進度陷阱
以下陷阱與測試計劃和進度相關:
1.沒有單獨的測試計劃文檔(gen-tps-1)
沒有單獨的針對測試的計劃文檔,隻是在總體計劃文檔中有不完整的、概要的測試概述。
2.測試計劃不完整(gen-tps-2)
測試計劃及其相關文檔對于系統的開發周期的目前點而言是不夠完整的。
3.忽視測試計劃(gen-tps-3)
一旦開發和傳遞時,忽視測試計劃文檔(也就是說,它被“束之高閣”)。既不使用也不維護。
4.測試用例文檔作為測試計劃(gen-tps-4)
錯誤地将記錄具體的測試用例的測試用例文檔作為測試計劃。
5.測試進度安排不足(gen-tps-5)
測試進度不足以完成适當的測試。
6.在結束時測試(gen-tps-6)
所有測試在開發周期後期進行,很少或根本沒有對可執行的子產品或單元的測試,或在開發周期的早期和中期階段進行計劃或執行的內建測試。
2.1.2 利益相關者參與和承諾的陷阱
以下陷阱與利益相關者參與和承諾測試相關:
7.錯誤的測試心态(gen-sic-1)
一些測試人員和測試利益相關者有不正确的測試心态,如:測試的目的是為了證明該系統工作正常,而不是确定在何處以及如何失敗;驗證或“證明”系統是工作的是測試人員的責任;系統被假定為工作,是以沒有理由去證明它是不工作的;測試被視為成本中心(即費用),而不是作為一種投資(或可以減少日後開支)。
8.不切實際的測試期望(gen-sic-2)
測試利益相關者(尤其是客戶代表和管理人員)有不切實際的測試期望,如:測試檢測到所有(或甚至大部分)的缺陷;測試證明沒有剩餘的缺陷,是以該系統按預期工作;測試是可以為所有實際的目的窮盡的;可以依賴測試做所有驗證,即使有些需求通過分析、示範、審查能更好地驗證;測試(如果是自動的)将保證測試的品質,并且減少測試工作量。
9.缺乏利益相關者對測試的承諾(gen-sic-3)
利益相關者對測試工作的承諾不充分,沒有配置設定給測試工作足夠的資源(例如,人、進度時間、工具或資金)。
2.1.3 管理相關的測試陷阱
以下陷阱與管理上的失誤相關:
10.測試資源不足(gen-mgmt-1)
管理層配置設定給測試的資源不充分,包括進度計劃中的測試時間保留不足;充分教育訓練的和有經驗的測試人員和評審人員;資金;測試工具、測試環境(例如,內建測試床和測試資料庫)和測試裝置。
11.不适當的外部壓力(gen-mgmt-2)
管理人員和其他有權力的人員施加給測試人員不适當的外部壓力。
12.測試相關風險管理不足(gen-mgmt-3)
在項目正式的風險庫中測試相關的風險識别得太少,而且那些識别的風險有不恰當的低機率、低嚴重程度和低優先級。
13.測試度量不足(gen-mgmt-4)
産生、分析、報告并用于決策的測試相關的度量名額太少。
14.忽視不友善的測試結果(gen-mgmt-5)
管理層忽視或輕率對待不友善的負面測試結果(尤其是那些對進度、預算或系統品質造成的負面後果)。
15.忽視測試經驗教訓(gen-mgmt-6)
忽視以往項目測試的經驗教訓,且沒有在目前項目中付諸實踐。
2.1.4 人員配備陷阱
這些陷阱源于這樣或那樣的人員問題:
16.缺乏獨立性(gen-stf-1)
測試組織或項目測試團隊缺乏足夠的技術、管理和财務上的獨立性,使其能夠承受從開發(行政和技術)管理來的偷工減料的不當壓力。
17.測試職責不清晰(gen-stf-2)
測試職責不清晰,沒有充分明确哪些組織、團隊和個人要負責和執行不同類型的測試。
18.測試專業技能不足(gen-stf-3)
一些測試人員和測試利益相關者沒有足夠的測試相關的認識、專業知識、經驗或教育訓練。
19.開發人員負責所有測試(gen-stf-4)
沒有單獨的專職測試人員的角色。相反,開發團隊的每個成員負責測試他所設計和實施的。
20.測試人員負責所有測試(gen-stf-5)
測試人員負責所有系統開發過程中的測試。開發人員甚至沒有進行單元測試(要麼自己的軟體,或者他們同伴的)。
2.1.5 測試過程陷阱
這些陷阱都與測試過程而不是執行測試的人相關:
21.測試和工程過程沒有內建(gen-pro-1)
測試過程沒有充分地內建到整體系統工程過程,而是被視為獨立的專業工程活動,僅與主工程活動有有限的接口。
22.一刀切測試(gen-pro-2)
所有測試都以相同的方式進行,同一嚴格等級,而不管其關鍵性。
23.測試優先級排序不足(gen-pro-3)
測試優先級排序不足(例如,所有類型的測試具有相同的優先級)。
24.過分強調功能測試(gen-pro-4)
過分強調對功能的測試,而不是對品質、資料和接口需求的測試,以及對架構、設計和實施限制的測試。
25.過分強調黑盒系統測試(gen-pro-5)
過分強調對于需求的一緻性的黑盒系統測試,而很少有白盒單元測試和架構、設計與實作驗證的內建測試。
26.黑盒系統測試重視不足(gen-pro-6)
過分強調白盒單元測試和內建測試,而很少時間花在黑盒系統測試上以驗證是否符合需求。
27.不夠成熟進行測試(gen-pro-7)
産品傳遞測試時是不成熟的,沒有準備好進行測試。
28.測試資産的評估不足(gen-pro-8)
測試資産的品質在使用之前沒有充分評估。
29.測試資産的維護不足(gen-pro-9)
測試資産沒有适當維護(即充分地更新和疊代),因為缺陷發現後,被測系統或軟體就改變了。
30.測試作為一個階段(gen-pro-10)
将測試視作發生在順序(也稱為瀑布)開發周期後期的一個階段,而不是不斷發生在疊代的、增量和并發(進化或者靈活)開發周期的持續性活動。[6]
31.測試人員早期不參與(gen-pro-11)
測試人員不是在項目開始時參與,而是隻當一個實作存在測試時參與。
32.測試不完整(gen-pro-12)
測試人員不适當地沒有測試某些可測的行為、特征或系統的元件。
33.沒有運作測試(gen-pro-13)
代表使用者沒有在實際運作條件下對“完成”的系統進行任何運作測試。
34.測試資料不足(gen-pro-14)
測試資料(包括單獨的測試資料和測試資料集)是不完整的或無效的。
35.測試類型混淆(gen-pro-15)
一種測試類型的測試用例在另一種測試類型中備援重複使用,即使測試類型之間有十分不同的目的和範圍。
2.1.6 測試工具和環境陷阱
這些陷阱都與用于執行測試的工具和環境相關:
36.過度依賴手動測試(gen-tte-1)
測試人員過度依賴手動測試,使得大多數的測試是手動進行的,沒有足夠的測試工具或者測試腳本的支援。
37.過度依賴測試工具(gen-tte-2)
測試人員和其他測試利益相關者過多依賴商用現成品(cots)和自主開發的測試工具。
38.目标平台太多(gen-tte-3)
測試團隊和測試人員沒有充分準備好來測試将要在衆多目标平台(例如,硬體、作業系統和中間件)上運作的應用程式。
39.目标平台難以通路(gen-tte-4)
當目标平台沒有設計成允許測試時通路時,測試人員沒有準備好進行充分的測試。
40.測試環境不足(gen-tte-5)
沒有足夠的測試工具、測試環境或測試床、測試實驗室或裝置,是以在進度和人員的限制内不能進行充分的測試。
41.測試環境的保真度差(gen-tte-6)
測試人員建立和使用的測試環境或測試床對于被測軟體或系統(sut)的運作環境的保真度差,這将導緻不确定或者不正确的測試結果(假陽性和假陰性結果)。
42.測試環境品質不足(gen-tte-7)
一個或多個測試環境的品質由于缺陷數量過多而不足。
43.測試資産未傳遞(gen-tte-8)
開發人員傳遞給維護人員的系統或軟體沒有相關的測試資産。例如,既不要求也不計劃傳遞測試資産(如測試計劃、測試報告、測試用例、測試神谕、測試驅動程式或腳本、測試樁和測試環境)。
44.測試配置管理不足(gen-tte-9)
測試工作産品(例如,測試用例、測試腳本、測試資料、測試工具和測試環境)都沒有進行配置管理(cm)。
45.開發人員忽視可測性(gen-tte-10)
因為開發人員在設計和實作他們的系統或軟體時不考慮測試,那麼開發自動化測試就有不必要的困難。
2.1.7 測試溝通陷阱
這些陷阱都與測試溝通不暢相關:
46.架構或設計文檔不足(gen-com-1)
架構人員和設計人員制作的架構或設計文檔(例如,模型和文檔)不足以支援白盒(結構)單元測試和內建測試。
47.缺陷報告不足(gen-com-2)
測試人員和其他人員建立的缺陷報告(也稱為錯誤和故障報告)是不完整的、包含不正确的資訊或難以閱讀。
48.測試文檔不足(gen-com-3)
測試人員建立的測試文檔不完整或包含不正确的資訊。
49.沒有維護源文檔(gen-com-4)
開發人員沒有妥善維護需要作為開發測試的輸入的需求規格書、架構文檔、設計文檔和相關模型。
50.關于測試的溝通不足(gen-com-5)
測試人員和其他測試利益相關者的關于測試的口頭和書面溝通不足。
2.1.8 需求相關測試陷阱
這些陷阱都與差勁的需求對測試造成的負面後果相關:
51.需求含糊不清(gen-req-1)
測試人員曲解了大量模糊的需求,進而基于對需求的不正确了解進行測試。
52.需求過時(gen-req-2)
測試人員浪費精力和時間測試被測系統或軟體(sut)是否正确實作了許多過時的需求。
53.需求遺漏(gen-req-3)
測試人員忽略了許多未文檔化的需求,是以沒有計劃、開發或執行相關忽略的測試用例。
54.需求不完整(gen-req-4)
測試人員無法檢測到很多需求是不完整的。是以,他們開發并運作相應的不完整或不正确的測試用例。
55.需求不正确(gen-req-5)
測試人員無法檢測到很多需求是不正确的,是以開發并運作了相應的不正确的測試用例,産生假陽性和假陰性的測試結果。
56.需求擾動(gen-req-6)
測試人員浪費大量時間和精力基于許多不足夠穩定的需求開發和運作測試用例,并且是以在傳遞之前變更一次或更多。
57.不恰當的衍生需求(gen-req-7)
測試人員基于不恰當衍生需求進行測試,導緻測試用例遺漏、錯誤抽象級别的測試用例、基于沒有修改就配置設定到多個架構元件的互相交叉的需求的不正确的測試用例。
58.未指定驗證方法(gen-req-8)
測試人員(或其他開發人員)未就每個需求正确地指定驗證方法,進而導緻使用不必要的低效或無效的驗證方法對需求進行驗證。
59.缺乏需求跟蹤(gen-req-9)
測試人員不跟蹤需求到單個測試或測試用例,進而使得不必要地難以确定測試是否不足或過量。