单元测试工具 SmokeTest
.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不需要写代码,只需要借助于它的参数生成工具,填写参数值即可执行静态方法或属性的测试。
单元测试工具 SmokeTest的更多相关文章
- .NET 程序集单元测试工具 SmokeTest 应用指南
Smoke Test(冒烟测试),也称Regression Test(回归测试),是对软件的安装和基本功能的测试.一般地我们使用脚本来实现Smoke Test的自动化,可借用虚拟机的snapshot机 ...
- 主流的单元测试工具之-JAVA新特性-Annotation 写作者:组长 梁伟龙
1:什么是Annotation?Annotation,即“@xxx”(如@Before,@After,@Test(timeout=xxx),@ignore),这个单词一般是翻译成元数据,是JAVA的一 ...
- codeblocks+Mingw 下配置开源c++单元测试工具 google test
google test 是google的c++开源单元测试工具,chrome的开发团队就是使用它. Code::Blocks 12.11(MinGW 4.7.1) (Windows版)Google T ...
- PHP单元测试工具PHPUnit初体验
今天接到了个任务,需要对数字进行计算,因为涉及到整数,小数,和科学计数法等很多条件,所以人工测试非常麻烦,于是想到了PHP的单元测试工具PHPUnit,所以写个文档备查. 看了PHPUnit的文档之后 ...
- 单元测试工具之Xunit
在.NET开发中的单元测试工具之——xUnit.Net 原始出处 http://zhoufoxcn.blog.51cto.com/792419/1172320 在上一篇<在.NET开发中的单元 ...
- Java单元测试工具:JUnit4(一)(二)(三)(四)
Java单元测试工具:JUnit4(一)--概述及简单例子 Java单元测试工具:JUnit4(二)--JUnit使用详解 Java单元测试工具:JUnit4(三)--JUnit详解之运行流程及常用注 ...
- Web Service单元测试工具实例介绍之SoapUI
原文 Web Service单元测试工具实例介绍之SoapUI SoapUI是当前比较简单实用的开源Web Service测试工具,提供桌面应用程序和IDE插件程序两种使用方式.能够快速构建项目和组 ...
- Java程序单元测试工具对比——Parasoft Jtest与Junit
Web应用程序开发中,面向对象的Java语言占了不少的比重.对于Java应用程序的测试方法或方式多种多样,比较典型的是程序员自己来完成程序测试中的一个部分——单元测试. 之前,慧都资讯提到单元测试是程 ...
- 一种数据与逻辑分离的Python单元测试工具
一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...
随机推荐
- Ajax,设置默认焦点以及判断是否为空
<style type="text/css"> .tishi{ color: red; } </style> <script type="t ...
- POJ 1159 回文LCS滚动数组优化
详细解题报告可以看这个PPT 这题如果是直接开int 5000 * 5000 的空间肯定会MLE,优化方法是采用滚动数组. 原LCS转移方程 : dp[i][j] = dp[i - 1][j] + ...
- 基于FPGA的DW8051移植(三)
总结一下问题: 1) http://www.cnblogs.com/sepeng/p/4137405.html 基于FPGA的DW8051移植(一)里面用modelsim观测波形发现程序进入了ida ...
- 转:DNS拾遗
最近帮朋友注册域名配置主机,碰到一些DNS上的一些概念,惭愧于有一些东西已经忘记是啥意思,于是决定重新学习一下DNS方面的基本概念. 常用概念: TTL: TTL为Time to live的缩写,网络 ...
- Windows Azure 网站开发Stacks支持
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Daria Grigoriu 和 Windows Azure 网站开发人员体验合作伙伴共同撰写. Windows Azure 网 ...
- JAVAC 命令使用方法
结构 javac [ options ] [ sourcefiles ] [ @files ] 參数可按随意次序排列. options 命令行选项. sourcefiles 一个或多个要编译的源文件( ...
- sencha touch笔记(6)——路由控制(1)
做项目的时候在界面的跳转上遇到了挺大的问题,本来跳转不想通过路由来控制的,没办法,只能再去看一下路由的跳转方式了. 应用程序的界面发生改变后,可以通过路由让应用程序的界面返回到改变之前的状态,例如浏览 ...
- CentOS的配置文件
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个 ...
- 百度网盘自动上传脚本-bpcs_uploader
安装jsonpear install pecl/json 一.bpcs_uploader下载和使用: 1.下载地址:http://oott123.github.com/bpcs_uploader/ 2 ...
- TCP三四次握手
通俗点说: 三次握手: A:发送连接请求 B:收到请求后,B知道自己的接收端是好的,返回给A请求的应答,并询问A是否收到自己的本次应答. A:收到B的应答.A知道自己的发送端和接收端都是好的.然后发送 ...