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/ui
SmokeTest可讓咱們測試一個程序集中的方法,而不用寫任何代碼。使用這個工具,咱們能夠建立對象的實體(調用構造方法),調用方法,獲取或設置屬性,並操做調用的結果。spa
• 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),不支持泛型類或接口的測試。設計
在左邊的樹型結構中,瀏覽到mscrolib的System命名空間下點擊DateTime結點,點擊Properties中的DateTime.Now3d
看到右下的黃色窗體輸出系統的當前時間。對象
再轉到Methods方法選項卡中測試IsLeapYear,輸入參數2016,點Call按鈕後看到右下腳結果窗體中輸出true。
public static void Add()
{
Console.WriteLine("Test");
}
輸出窗體返回(null),表示無返回值。
public static int Add(int a, int b)
{
return a + b;
}
咱們在參數欄中輸入參數1,2,看到輸出窗體返回結果3。
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具有參數實例化能力,它能夠向參數傳遞值來建立參數的實例,從而完成被測試方法的參數值傳遞。
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控件)顯示數據就更完善了。
注意上面的Call按鈕後面有個x 1下拉選項,裏面1-1000000選項。默認點x1表示調用測試方法一次,若是選擇其它數值,則能夠調用測試方式N次。目前有如下幾個選項值:
在下面的下拉框中會記錄每次調用的調用耗費的時間,調用次序。
SmokeTest的做者還爲它設計了.NET Reflector插件,藉助於.NET Reflector設計精良的程序集瀏覽能力,邊查看源代碼,邊測試方法。
插件下載地址:http://smoketest.wesleysteiner.com/smoketest_raddin_1_0.zip
前二種須要編寫程序代碼,是.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不須要寫代碼,只須要藉助於它的參數生成工具,填寫參數值便可執行靜態方法或屬性的測試。