.NET 程序集单元测试工具 SmokeTest 应用指南

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不需要写代码,只需要借助于它的参数生成工具,填写参数值即可执行静态方法或属性的测试。

时间: 2024-08-27 08:36:55

.NET 程序集单元测试工具 SmokeTest 应用指南的相关文章

单元测试工具 SmokeTest

.NET 程序集单元测试工具 SmokeTest Smoke Test(冒烟测试),也称Regression Test(回归测试),是对软件的安装和基本功能的测试.一般地我们使用脚本来实现Smoke Test的自动化,可借用虚拟机的snapshot机制来保证干净的环境来进行Smoke Test,然后将测试好的程序集成到Continous build或daily build中. 冒烟测试是指一种基本功能测试,是从硬件测试借鉴过来的.进行硬件测试时,首先需要给硬件加电,如果一加电电路烧了冒烟,后续的

当前主流的单元测试工具汇总

性能.负载测试工具 厂商 工具名称 * Mercury LoadRunner 备注:历史最悠久.行业地位最高.市场份额最大.使用最广泛,以及多少测试从业人员从没做测试工作开始就听说过.而又叫多少人爱恨交加的业内最强大.最专业的性能测试工具.从Mercury Interactive公司1989年诞生以来就是其主打产品,别不多言. * Micro Focus QALoad 备注:原Compuware公司性能测试工具主打产品,如今被Micro Focus收购后仍然占有一席之地,是目前业内主流的大型性能

单元测试工具 - karma

在离开上一家公司之前,team leader 在我离开前留给了我最后几个关键字:karma,断言库,JASMINE,QUNIT,MOCHA. 可一直拖拖沓沓的,没有去了解.直到今天,才终于抽出心情和时间来研究它. 在文章开始之前,首先对前 team leader — 满爷 表示感激. 虽然你不是我所见过的最优秀的前端,但你是我所见的最乐意与小伙伴share经验心得的 team leader. OK,言归正传,开始主题... 关于karma Karma是一个基于Node.js的JavaScript

常见的单元测试工具汇总

单元测试工具 常见的单元测试工具有: 代码静态分析工具:Logiscope,McCabe QA,CodeTest等; 代码检查工具:PC--LINT,CodeChk,Logiscope等; 测试脚本工具:TCL.Python.Perl等; 覆盖率检测工具:Logiscope,PureCoverage,TrueCoverage,McCabe Test,CodeTest等; 内存检测工具:Purify,BoundsCheck,CodeTest等; 专为单元测试设计的工具:RTRT,Cantata,A

写单元测试的知识结构(2)——单元测试工具的选用(找个顺手的)

一般的新技术手段的应用分三步(我总结的),问题适配(读书.问人,这时一般处于迷茫状态,尽量避免被煽动被诱惑是很重要的,少讲些主义,多研究问题).选择工具(一般都有现成的,除了你玩创新(也创新不到哪去)或在Google这种老遇见没人碰到过的问题的地方搞新技术),测试可用性,也就是能不能解决问题(有哥们管这叫趟坑)),经过这三部,基本就可以投入应用了. 这篇基本属于选择工具的一个过程,陈述一些对我选用的测试工具的看法,也包括一些想和做怎么结合的看法,有不同看法欢迎大家拍砖.   如果是固定平台,网上

主流的单元测试工具之-JAVA新特性-Annotation 写作者:组长 梁伟龙

1:什么是Annotation?Annotation,即“@xxx”(如@Before,@After,@Test(timeout=xxx),@ignore),这个单词一般是翻译成元数据,是JAVA的一个新特性. 主流的单元测试工具之-JAVA新特性-Annotation - groupthreetogether - group博客 2:元数据的简单介绍: @Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次. @After:使用了该元数据的方法在每个测试方法执行之后要执行一次.

单元测试工具汇总及小组分工情况。

组名:日光微澜 Github仓库:https://github.com/yangleiwangximin/ 组长:杨磊(计科高职13-3)201303014107 成员:王希敏(计科高职13-3)201303014099.赵林林(计科高职13-3).201303014112 赵书(计科高职13-1)201303014020 姓名 博客地址 托管代码地址 赵书 http://www.cnblogs.com/zhsh/ 第一题https://github.com/yangleiwangximin/t

单元测试工具汇总及小组分工情况

单元测试工具汇总 单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试. 单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中.因此,所有的测试都必须在整个软件系统的生命周期中进行维护.?? .软件单元描述 被测试单元 与之相关的单 元 所属子系统 单元需求 单元设计 FileSender SendThread 类 Client_RMS

.Net 程序集 签名工具sn.exe 密钥对SNK文件

.Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法 (本文是从别人那里转来的,感觉说得很好就留了.感谢原作者!) .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法 阐述签名工具这个概念之前,我先说说它不是什么: 1.它不是用于给程序集加密的工具,它与阻止Reflector或ILSpy对程序集进行反编译一毛钱关系都没有. 2.它很讨厌人们把它和加密联系在一起. 我再说说它是什么: 1.起个大名字 sn是strong name的缩写,正如其名,sn.exe的