特色
    Tricentis虛擬峰會:以DevOps的速度交付軟件創新

    從敏捷、DevOps等領域的頂級思想家那裏學習最新的知識。現在可以按需提供課程。

    看現在
    特色
    得到Tricentis認證

    開始你的學習之旅。

    查看課程
    特色
    您的轉換工具包

    使用我們的轉換工具包推進您的企業測試策略。

    了解更多
    錢

    敏捷測試

    在測試中你的錢在哪裏損失了

    編輯器的請注意本文最初發表於stickyminds.com,一個TechWell社區

    測試顯然是要花錢的。但是,發布一個嚴重的漏洞並承受隨之而來的痛苦,其成本通常是測試成本的幾倍,而不考慮市場營銷和形象損害。

    測試是必須的,沒有辦法繞過它,但盡管如此,人們傾向於希望它比以前更有效、更便宜。

    在第一個迭代中,測試從業務測試人員轉移到離岸測試人員。然後,測試來到了近岸,現在我看到敏捷團隊中的測試人員與開發人員一起工作。經驗教訓:這可以節省我的錢,所以讓測試盡可能接近,這樣我們就可以更快地對更改做出反應。

    一方麵,公司希望變得敏捷,通過DevOps更快,縮短他們的發布周期,盡可能快地進入市場,在CI管道中集成所有測試,足夠通用,可以測試多種環境,無論它們是真實的還是模擬的。但另一方麵,同樣是這些公司不願意花錢在工具和服務上,以獲得對其質量和最高風險覆蓋的概述。

    如果您不檢查所有進程是否像以前一樣工作,那麼遷移到最新的企業雲並完全重建係統有什麼好處呢?如果您在隻覆蓋一半風險的測試用例上花費了時間和金錢,但是您不知道這一點,因為沒有人想過檢查測試覆蓋率?這些問題可能會講述另一個故事。

    我們需要更多地考慮如何節省測試用例及其結構本身的成本。

    在測試用例上節省資金

    隨著時間的推移,係統會發生變化,我們需要采用穩定的測試用例來確保它們的執行。如果您在技術方麵更改了某些東西—新控件、更改的控件、新頁麵、新特性、新環境變量等等—您需要將其添加到測試用例中。

    采用和維護花費了測試的大部分資金,但是有一些簡單的更改可以減少這些工作。

    例如,如果您將技術對象與其他對象分離開來,並進行集中,以便能夠調整一個對象來維護所有連接的測試,那麼將節省大量成本。如果有一個登錄窗口,其中包含用戶名、密碼和登錄按鈕的控件作為一個對象,那麼可以將其稱為模塊,或者像基類一樣將所有應用程序控件定義在一起,並始終重用它們。

    此方法與麵向對象編程相同,將創建可重用的構件。您可以隻取一個頁麵,列出該頁的所有控件,將它們中的每一個映射到您的測試用例中,並始終重用這些對象。技術更改對您的測試影響較小,它們更穩定,而且所有測試用例的維護都可以通過單個更改完成,因為您隻需修改包含更改控件的一個模塊。

    目前典型的測試是通過編寫代碼和使用基於代碼的框架來完成的,大部分資金都花在維護新版本特性所帶來的技術更改上。在技術方麵應用麵向對象技術可以節省成本,這些成本可以投資於創新以實現增長。

    在當前的設置中,技術問題仍然是破壞測試的主要問題,但是測試數據呢?我曾看到多個客戶重複使用相同的測試數據。他們創建一個新的測試用例,隻是為了運行另一組數據。

    您可以將其更改為一個數據庫和一種方法,使數據從測試用例中分離出來,甚至部分地從工具或代碼中分離出來。從業務中讀取準備好的文件是解決該問題的另一個有效選項。其好處將立即改變你的測試遊戲!

    從現在開始,業務用戶可以自己更改測試數據,而不讓測試人員知道。他們可以增加更多的數據集或刪除過時的數據集。SQL查詢根據輸入數據動態更改,甚至可以使用屏蔽的生產數據,因為它隻影響數據庫中的數據,這些數據是由查詢提取的。

    業務用戶還可以了解哪個測試消耗了什麼數據,如果他們已經與測試用例連接,他們可以很容易地對變更的需求和添加的功能做出反應。可以使用隨機測試數據方法,其中查詢總是返回一個必須滿足特定定義標準的隨機數據集。事實上,根據數據集的不同,這更接近於生產環境而不是測試環境。

    你已經看到這對成本的影響了嗎?業務可以很容易地發現錯誤,因為他們知道所使用的數據,並且可以重現失敗。隨機測試數據增加了測試覆蓋率,可以從生產數據中提取,這些數據已經存在,隻需要匿名化。風險覆蓋率隨著這些被屏蔽的生產數據而增加,因為您要測試用戶實際使用的是什麼。無論何時用戶傾向於某個特性,您都可以在測試環境中使用正確的趨勢數據對其進行測試。

    此外,通過應用程序的工作流是將維護縮減到最低限度並節省資金的一種方法。用我上麵描述的方式使用數據來生成一個測試用例的數據驅動結構有多容易?

    創建預定義的測試步驟塊,並像對象一樣重用它們。使它們盡可能通用,並依賴於在簡單條件下使用的數據。無論何時工作流發生變化,您都有一個單獨的接觸點,並且向您的測試用例中添加新的變量將是很容易的。一個變更將影響您所有的測試用例,以及用於特定用途和需要的所有消費數據。

    對於一個全球範圍的業務,我和我的團隊完全改變了他們的測試,隻把測試用例聚集在一起,並用數據驅動的方法擴展它們。條件驅動了測試用例的行為方式,並基於它們在被測試係統執行期間的行為建立了基礎。想象一下,將一個材料標記為係統中不存在,測試用例自動知道它需要驗證錯誤消息而不是成功,僅通過輸入數據。如果您得到另一個需要在另一個係統中檢查的錯誤,您隻需拉出塊並將其數據依賴添加到結構化測試用例中。

    另一種選擇是將測試用例減少為小塊和小塊,並將它們的序列視為真正的測試用例。您必須定義一個測試用例列表,這些測試用例是整體的一部分。新創建的數據可以通過數據庫傳遞,並通過預定義的狀態動態轉發。這種方法可能導致多個數據生成測試用例的多次重新運行,但是它將增加測試用例塊的可重用性,以支持單個更改點,並在整個測試組合中減少重複。

    不再需要在新的測試用例的創建上花費那麼多的錢。測試人員隻是將他們的測試用例從預定義的塊拉到一起,並必須確保給定的數據流。隻需要創建全新的特性,作為一個新的結構化塊,然後將其添加到您的測試步驟庫中。每當另一個測試用例通過您的新特性(或中間的應用程序)時,新塊將被拉到您的測試用例中,每當它發生變化時,這個特定塊中隻需要一個變化。

    在測試結構上節省資金

    現在拋開測試用例本身,您還可以在測試的計劃和初始設置階段節省大量的資金。

    想象一下,與手動或通過基於ui的測試用例創建測試數據相比,預先而不是在用戶界麵中創建測試數據會快多少。數據可以直接被提取到數據庫中,並由測試用例提取,無論它們是否鏈接到特定的用例或根據特定的標準提取。

    如果您運行一個微服務環境,您可以自動、無人值守和並行地運行API調用,以設置您的測試準備環境,並為自動化測試用例運行做好準備。它創建非ui測試用例來創建或獲取測試數據,根據您的設置,您可以將其保存在數據庫中,也可以在測試期間直接調用服務。

    年代服務虛擬化還可以節省硬件或第三方供應商的成本,同時將測試移到左邊,增加測試環境的正常運行時間。在測試過程中盡早檢查依賴性,以避免停機,並為不穩定的應用程序、功能或web服務設置替代品。標準化工具和方法,以降低招募人員的成本,采用簡單的報告,而不需要集成多個工具。

    在測試中有許多節省成本的方法,但最好的做法是預先考慮您想要做什麼,而不是稍後更改更性能的方法。清晰的結構和戰略測試,由基於對象或基於模型的方法支持,應該會通向成功。

    通過在數據驅動的測試步驟塊中重用工件和由屏蔽的生產數據引導的通用技術元素,您將在測試過程中節省資金。需要分離和采用技術深度、工作流和測試數據,以便在您的測試中對每個對象進行單點更改。檢查工具以標準化並利用內置框架,這些框架可能已經解決了問題並滿足了您的需求。

    三思而後行,想得更大,端到端地考慮以節省成本,並預先構建一個可靠和可重用的框架。

    Baidu
    map