单元测试规范_第1页
单元测试规范_第2页
单元测试规范_第3页
单元测试规范_第4页
单元测试规范_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单元测试规范一、 分析开发人员提供的接口说明文档开发人员先提供一份接口的说明文档和接口后,首先分析接口文档,看看有什么疑问之类的总结一下,然后整理测试点。然后跟开发人员过一下测试点。整理测试点的时候,主要是结合业务逻辑进行测试。一些通用的测试点整理如下:当参数是String类型时,主要的测试点如下:1.当参数为Null时候的验证(要看业务的需要是抛出异常还是返回正确的结果)。2.当参数为Empry时候的验证(要看业务的需要是抛出异常还是返回正确的结果)。3.当参数的长度正好是可以输入的最大长度的验证。4.当参数的长度超过可以输入的最大长度的验证。5.当参数中包含特殊字符的验证。6.当参数中包

2、含汉字的验证。7.当参数中包含英文字母、数字的验证。当参数是Int(或者别的数值类型的时候),主要的测试点如下:1.当参数是0时候的验证。2.当参数是正数时候的验证。3.当参数是负数时候的验证。当参数是对象类型的时候,主要的测试点如下:1.当参数是Null时候的测试2.当参数是正常情况的测试当往数据库中插入数据记录的时候,主要的测试点如下:1.插入数据的参数各种情况的验证,例如string类型时候的各种验证。2.插入数据唯一性的验证,这主要看业务规则有没有唯一的主键,是覆盖以前的记录还是抛出异常。 当更新数据库中的记录的时候,主要的测试点如下:1.当更新数据的时候,参数的各种情况的验证,例如s

3、tring类型时候的各种验证。2.当更新数据的时候,所有的参数都发生改变的验证3.当更新数据的时候,一部分参数发生改变的验证4.当更新数据的时候,所有的参数都不发生变化的验证5.当更新数据的时候,如果数据列中有主键的时候,更新为已经存在的主键的验证。当删除数据的时候,主要的测试点如下:1.当删除数据的时候,数据是否删除成功的测试2.当删除数据的时候,删除已经存在的数据的测试以上主要是针对各种数据类型进行的测试,主要的还是根据业务逻辑设计测试用例。二、 在VS2010中新创建一个测试项目1) 在VS2010中新建一个测试项目。2) 添加引用测试的dll引用的是BS_Dev_ExternalRef

4、erences下的。注意如果要用到读取XML中的数据或者连接数据库的时候还要引用BS_DevPlatformUnitTest_References下的dll,这个dll中主要是封装的读取XML中的数据和连接数据库的方法。三、 编写测试用例代码1) 首先添加AppConfig,Config文件中的内容如下: !- !-2) 如果测试数据是放在XML中的要在项目中添加一个XML文件首先在项目中添加一个XML文件,但是注意更改其中的一个属性即将Copy to Output Directory的属性改为Copy always,更改方法右击XML的属性然后将Copy to Output Director

5、y的属性改为Copy always(更改这里主要是因为程序中加载XML是从bin目录下加载的,这样每次在修改了XML文件的数据保存后,再把项目编译一下文件就放直接放到bin目录下了)读取XML中数据的方法如下:首先定义一个静态变量例如:private static XmlDocument DFSTest_xml; DFSTest_xml是一个变量,用来和xml文件关联再在有类初始化属性的方法中加载XML文件。ClassInitialize() public static void MyClassInitialize(TestContext testContext) DFSTest_xml =

6、Xmlconnection.LoadXml(DFSTest.xml); DFSTest.xml自己定义的那个xml文件引用Beisen.Commmon.Test 然后是在每个测试方法中获得本测试方法下的测试数据。/加载xml文件 XmlDocument doc = DFSTest_xml;加载上变量关联的xml文件 /获得xml中的根节点 XmlNode root = doc.GetElementsByTagName(UnitTest).Item(0); UnitTest是xml文件的根节点 /获得本测试方法的节点 XmlNodeList nodes = root.SelectNodes(Te

7、stStoreNoFileId);然后是for循环这个测试方法中的所有测试数据。for (int i = 0; i nodes.Count; i+) nodes.Count测试用例的个数 /当参数复杂的时候,要构造这个类型,构造方式参见下面的方法 /XML的子节点是从0开始的 DfsItem dfsItem = BuildDfsItemNoFileId(nodesi.ChildNodes0);复杂对象如数组, /读取xml中的数据给参数赋值 int userId = Convert.ToInt32(nodesi.ChildNodes1.InnerText); string email = no

8、desi.ChildNodes2.InnerText; / dfsItem,userId,email是xml文件的节点读的是一个参数 /调用测试方法调用的自己写的那个方法 DfsPath dfsPath = Dfs.Store(dfsItem);string tostring = dfsPath.ToString(); string clientUrl = Dfs.ToClientUrl(tostring, UrlSignDomain.Tms, userId); string downLoadURL = Dfs.ToDownloadUrl(tostring, UrlSignDomain.Tms

9、, userId); ConversionFormat format = (ConversionFormat)Convert.ToInt32(nodesi.ChildNodes5.InnerText);/这种适合xml中传出参数是枚举的int ConversionFormat format = (ConversionFormat)Enum.Parse(typeof(ConversionFormat),nodesi.ChildNodes5.InnerText;/适合Xml中传出参数是枚举的具体名称 /断言预期结果与实际结果是一致的 Assert.AreEqual(dfsPath.Keyspace

10、, dfsItem.Keyspace); Assert.AreEqual(dfsPath.TenantId, dfsItem.TenantId); Assert.AreEqual(dfsPath.FileId, dfsItem.FileId); Assert.AreEqual(dfsPath.FileExtension, dfsItem.FileExtension);/上面的那个复杂类型的方法,上面是调用的这个方法,这个方法是自己写的public DfsItem BuildDfsItemNoFileId(XmlNode nd) DfsItem dfsItem = new DfsItem(nd.

11、ChildNodes0.InnerText, nd.ChildNodes1.InnerText, File.OpenRead(nd.ChildNodes1.InnerText), Convert.ToInt32(nd.ChildNodes2.InnerText); if (nd.ChildNodes0.InnerText = null | nd.ChildNodes1.InnerText = null) dfsItem = null; return dfsItem; return dfsItem; Xml的数据格式如下: Image C:Program Files (x86)Common Fi

12、lesmicrosoft sharedDevServer10.0DSC_0251.JPG 100008 123 yangqian 3)如果需要连接数据库查询时,需要在Appconfig中配置数据库的信息。 查询的方法如下:DataSet ds;/System.data引用ds = DBconnection.getDataset(DBconnection.createCon(1), SELECT ID,Name,Alias,Status,Domain FROM BeisenTenantSecurity.dbo.Tenant where Name = + tenantCode + , Tenant

13、);/ Beisen.Commmon.Test然后在把从数据库中查询出来的数据与实际结果对比:Assert.AreEqual(tenantName, ds.Tables0.Rows0Alias);4)异常的测试还有就是对一些异常进行测试。即当传入一些不合法的参数的时候,是期望程序能够发生一些指定类型的异常的,期望发生什么异常就在typeof后面TestMethod ExpectedException(typeof(ArgumentNullException) public void TestStoreDfsItemsNull() DfsItem dfsItems = null; Dfs.Store(dfsItems); 5)删除测试数据最后,删除测试数据。如: ClassCleanup() public static void MyClassCleanup() DBconnection.execSQL(DBconnection.createCon(1), DELETE FROM MetaObject WHERE CreatedBy = -1020); DBconnection.execSQL(DBconnection.createCon(1), DELETE FROM MetaRelatio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论