.NET 程序集單元測試工具 SmokeTest 應用指南

2021-03-06 dotNET跨平臺

Smoke Test(冒煙測試),也稱Regression Test(回歸測試),是對軟體的安裝和基本功能的測試。一般地我們使用腳本來實現Smoke Test的自動化,可借用虛擬機的snapshot機制來保證乾淨的環境來進行Smoke Test,然後將測試好的程序集成到Continous build或daily build中。 
冒煙測試是指一種基本功能測試,是從硬體測試借鑑過來的。進行硬體測試時,首先需要給硬體加電,如果一加電電路燒了冒煙,後續的測試當然進行不去了,也就是能加電是後面測試的前提條件。借鑑到軟體中來就是只有軟體的基本功能正確的情況下,後續的開發和測試才能進行。冒煙測試一般和每日構建一起實施。

今天要向讀者推薦的工具名稱叫SmokeTest,是.NET領域中一個程序集測試工具,是以程序集為單元的測試工具。

官方對SmokeTest的介紹如下:

SmokeTest lets you invoke any member of a class interactively. An indispensable tool for anyone involved in developing, testing, and managing Windows .NET projects.

地址如下:http://smoketest.wesleysteiner.com/

SmokeTest可以讓我們測試一個程序集中的方法,而不用寫任何代碼。使用這個工具,我們可以創建對象的實體(調用構造方法),調用方法,獲取或設置屬性,並操作調用的結果。

• Create an instance of any Class  創建對象實體(調用構造方法) 
• Call any Method 調用方法 
• Get and set any Property  獲取屬性值或設置屬性值 
• Read and write any Field  讀取或設置欄位值 
• Create and edit object instances to pass as arguments 創建並編輯對象實體,並將它傳遞到方法的參數中 
• Drill-down and smoke-test the returned result 鑽取返回結果集

一個可測試的類型(smoke-testable)必須是值類型(ValueType)或引用類型(class),不支持泛型類或接口的測試。

1 測試.NET DateTime 類型方法和屬性

在左邊的樹型結構中,瀏覽到mscrolib的System命名空間下點擊DateTime結點,點擊Properties中的DateTime.Now

看到右下的黃色窗體輸出系統的當前時間。

再轉到Methods方法選項卡中測試IsLeapYear,輸入參數2016,點Call按鈕後看到右下腳結果窗體中輸出true。

2 測試無返回值方法

public static void Add()

{

Console.WriteLine("Test");

}

輸出窗體返回(null),表示無返回值。

3 測試兩個整數相加的方法

public static int Add(int a, int b)

{

return a + b;

}

我們在參數欄中輸入參數1,2,看到輸出窗體返回結果3。

4 方法的參數是對象類型

public static int ExecuteScalar(SqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteNonQuery(connection, commandType, commandText, (SqlParameter[])null);

}

我們的第一個參數是SqlConnection對象,第二個參數是枚舉類型。當選擇此方法之後,參數窗體中如下所示。

點擊第一個參數SqlConnection後面的按鈕,打開窗體選擇有參數的構造方法,填寫連接字符串信息點擊Create按鈕

關閉此窗體,回到主窗體,再輸入comandText參數表示的SQL語句

SELECT COMPANY_NAME FROM dbo.GBPARM

點Call按鈕後看到結果輸出窗體顯示資料庫中的返回值。

從這一步中看到,SmokeTest具備參數實例化能力,它可以向參數傳遞值來創建參數的實例,從而完成被測試方法的參數值傳遞。

5 方法的返回結果是集合類型或對象類型

public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText)

{

//pass through the call providing null for the set of SqlParameters

return ExecuteDataset(connection, commandType, commandText, (SqlParameter[])null);

}

這個方法的返回類型是DataSet,執行之後結果輸出窗口顯示

點擊右邊的DataSet按鈕,我們可以對ExecuteDataSet方法的返回值進行操作。按照下圖中的字母順序,依次點擊,可可觀察到3號窗體(中間窗體)返回結果為1,這正是調用上面的SQL語句返回的數據集DataSet的Table的數量。

如果DataSet按鈕可以以可視化的方式(DataGridView控制項)顯示數據就更完善了。

6 重複N次調用測試方式

注意上面的Call按鈕後面有個x 1下拉選項,裡面1-1000000選項。默認點x1表示調用測試方法一次,如果選擇其它數值,則可以調用測試方式N次。目前有以下幾個選項值:

在下面的下拉框中會記錄每次調用的調用耗費的時間,調用次序。

7 .NET Reflector 插件

SmokeTest的作者還為它設計了.NET Reflector插件,藉助於.NET Reflector設計精良的程序集瀏覽能力,邊查看原始碼,邊測試方法。

插件下載地址:http://smoketest.wesleysteiner.com/smoketest_raddin_1_0.zip

8 NUnit, MS Test ,TestDriven.NET,SmokeTest

前二種需要編寫程序代碼,是.NET單元測試領域的主要工具。

//NUnit

[TestFixture]

public class UserTest

{

[Test]

public void LoginTest()

{

User user = SessionManaer.Login("admin","cnblogs");

Assert.IsTrue(user!=null);

}

}

//MSTest

[TestClass]

public class UserTest

{

[TestMethod]

public void LoginTest()

{

User user = SessionManaer.Login("admin","cnblogs");

Assert.IsTrue(user!=null);

}

}

TestDriven.NET是建立在NUnit或MSTest技術基礎上的一個擴展工具,支持在任何方法、類、源文件、命名空間、工程中直接單擊即可運行測試。

注意TestDriven.NET測試的方法不一定需要Test或TestMethod特性(attribute),您只需要在一個方法內部點擊Test按鈕,即可完成代碼的測試。

SmokeTest則是以.NET程序集為基礎的代碼測試工具,使用SmokeTest不需要寫代碼,只需要藉助於它的參數生成工具,填寫參數值即可執行靜態方法或屬性的測試。

原文地址:http://www.cnblogs.com/JamesLi2015/p/5544629.html

.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

相關焦點

  • .NET 項目中的單元測試
    .NET 項目中的單元測試Intro「不會寫單元測試的程式設計師不是合格的程式設計師,不寫單元測試的程式設計師不是優秀的工程師。」—— 一隻想要成為一個優秀程式設計師的渣逼程序猿。那麼問題來了,什麼是單元測試,如何做單元測試。
  • 開發者眼中最好的 22 款 GUI 測試工具
    因為它不與底層代碼進行交互,並且使用圖像匹配技術與被測試的所尋找的對象級別應用程式完全不同,所以EggPlant是用於對那些出現問題的應用程式進 行QA自動化測試和黑盒測試的最理想的工具,而這些出現問題的應用工具包括Flash, java, HTML, .Net, Silverlight等。
  • 2021年軟體測試工具總結——單元測試工具
    在應用程式中,單元是具有一個或多個輸入和單個輸出的軟體中最小可測試部分。單元測試是一種測試軟體代碼單元的方法,通常包括一個或兩個輸入,產生一個輸出。
  • 3種最好用的JavaScript單元測試工具知多少
    如何對JavaScript程序代碼進行單元測試?答案有很多,就如同世界上許多事情一樣,總是存在諸多選擇。本篇文章重點描述幾個當下比較受歡迎的JavaScript單元測試工具,也是筆者常用並且愛不釋手的工具。希望這篇文章能夠幫助各位讀者在啟動和設置項目時節省時間,更高效地對JavaScript進行單元測試。
  • 小程序單元測試
    概述本文主要介紹以下兩點:miniprogram-simulate介紹目前因為小程序獨特的運行環境,所以對於小程序自定義組件的單元測試一直沒有比較優雅的解決方案,此工具集就是為了解決此痛點而誕生的。將原本小程序自定義組件雙線程分離運行的機制調整成單線程模擬運行,利用 dom 環境進行渲染,藉此來完成整個自定義組件樹的搭建。
  • Speedtest for mac(網速測試工具)
    Ookla Speedtest 是一款 Mac 網速測試工具。可以幫助您進行 30 秒上傳速度測試及下載速度測試。Speedtest 設計美觀,使用簡單,全球分布的網絡可以讓您在任何地方測速都變得既方便又準確。
  • 3個C 單元測試工具,到底誰才是王者?
    單元測試是在軟體開發過程中要進行的最低級別的測試活動,軟體的獨立單元將在與程序的其他部分相隔離的情況下進行測試。單元測試從長期來看,可以提高代碼質量,減少維護成本,降低重構難度。但是從短期來看,加大了工作量,對於進度緊張的項目中的開發人員來說,可能會成為不少的負擔。
  • 使用Junit對Android應用進行單元測試
    【IT168技術】在本文中,你將會學習到如何在Eclipse中創建Android JUnit的單元測試工程以及在不同的條件下創建及運行自動測試用例。  準備工作  本文假設讀者已經有一定的Android基礎知識,並且已經安裝了Eclipse和Android SDK等開發工具。
  • Spring Boot 應用測試框架介紹
    測試框架spring-test-dbunit與spring-boot-unitils-starter支持spring-boot應用的測試,同時,也提供單元測試前置數據準備的功能。二、spring-test-dbunit 介紹與應用2.1、介紹spring-test-dbunit是spring boot的作者之一Phillip Webb開發的、用於給spring項目的單元測試提供dbunit功能的開源項目。
  • JUnit測試單元框架
    他是用於單元測試框架體系xUnit的一個實例(用於java語言)。主要用於白盒測試,回歸測試。  junit安裝步驟  1、在http://download.sourceforge.net/junit/ 中下載JUnit包並將Junit壓縮包解壓。  2、添加CLASSPATH環境變量.
  • 開發者必備的Javascript單元測試工具
    【IT168專稿】當前,在軟體開發中單元測試越來越受到開發者的重視,它能提高軟體的開發效率,而且能保障開發的質量。以往,單元測試往往多見於服務端的開發中,但隨著Web編程領域的分工逐漸明細,在前端Javascript開發領域中,也可以進行相關的單元測試,以保障前端開發的質量。
  • Spring Boot 單元測試
    一、 單元測試的概念概念:單元測試(unit testing),是指對軟體中的最小可測試單元進行檢查和驗證。在Java中單元測試的最小單元是類。單元測試是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。執行單元測試,就是為了證明這 段代碼的行為和我們期望是否一致。
  • 這3個C#單元測試工具,到底誰才是王者?
    單元測試(unit testing),是指對軟體中的最小可測試單元(函數/模塊/類)進行檢查和驗證。單元測試是在軟體開發過程中要進行的最低級別的測試活動,軟體的獨立單元將在與程序的其他部分相隔離的情況下進行測試。單元測試從長期來看,可以提高代碼質量,減少維護成本,降低重構難度。
  • 常用遊戲自動化測試工具
    目前網上搜自動化測試就會出現一大堆自動化測試的內容,但是並不詳細全面,今天就來說一下遊戲測試行業中的常用的遊戲測試自動化工具。一、Airtest的UI自動化測試工具Airtest是一款基於圖像識別和基於poco的UI控制項搜索框架的測試工具,因此會更適合遊戲和APP的測試。
  • cmake-gtest單元測試
    隨著開發人員對CMake工具的應用,測試同學自然也要學習使用CMake工具輔助進行單元測試。最近接手一個新項目從零開始測試,就將使用CMake工具輔助gtest單元測試的基本步驟簡單記錄下來。 準備工作下載gtest的安裝包(帶有cmake編譯功能的版本)。
  • 保姆級教程:Spring Boot 單元測試
    /一、 單元測試的概念概念:單元測試(unit testing),是指對軟體中的最小可測試單元進行檢查和驗證。在Java中單元測試的最小單元是類。單元測試是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。執行單元測試,就是為了證明這 段代碼的行為和我們期望是否一致。
  • Spring Boot 的單元測試和集成測試
    學習如何使用本教程中提供的工具,並在 Spring Boot 環境中編寫單元測試和集成測試。1. 概覽 本文中,我們將了解如何編寫單元測試並將其集成在 Spring Boot 環境中。你可在網上找到大量關於這個主題的教程,但很難在一個頁面中找到你需要的所有信息。我經常注意到初級開發人員混淆了單元測試和集成測試的概念,特別是在談到 Spring 生態系統時。
  • SEO工具:網站響應和網頁加載測試工具集
    seo從業人員有必要了解和熟悉一些網速測試工具!下面一灰介紹多款網站響應和網頁加載測試工具,同時也搜集了一些類似的工具,大家用哪個順手就用哪個。中文界面的比較少。1、網站反應速度測試,可以大概知道網站DNS解析加伺服器的響應速度,支持同時多個網站測試比較。
  • 軟體測試學習教程:單元測試之UnitTest測試框架
    單元測試的概念單元測試(unit testing),是指對軟體中的最小可測試單元進行檢查和驗證。對於單元測試中單元的含義,要根據實際情況去判定其具體含義。一個單元可能是功能模塊、類、方法(函數)等。單元測試工具不同的程式語言都有比較成熟的單元測試框架,語法規則有些差別,其核心思想都是相通的。
  • Spring Boot 單元測試詳解+實戰教程
    開發進行只要使用 spring-boot-starter-test 啟動器就能引入這些 Spring Boot 測試模塊,還能引入一些像 JUnit,AssertJ,Hamcrest 及其他一些有用的類庫,具體如下所示。下面是 Maven 的依賴關係圖。