51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 814|回复: 0
打印 上一主题 下一主题

[原创] MsTest单元测试的使用基础(下)

[复制链接]
  • TA的每日心情
    无聊
    6 小时前
  • 签到天数: 1044 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-12-20 10:31:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    4.代码覆盖率
      代码覆盖率指的是运行单元测试时,产品代码的覆盖情况,仅仅在企业版可用。这个是mstest的劣势之一,也是其优势。
      在测试资源管理器中,对选中的单元测试或者全部单元测试的代码进行覆盖率检查。
      如下图所示:

      代码覆盖率结果给出了完整的代码测试的覆盖情况,有利于开发者对白盒测试的情况有总体的把握。

      返回到测试的功能所在的地方,这里可以体现mstest的优点。

      方法头部会显示出本方法测自动测试详情,并且已经具备自动测试的模块会用颜色区分开来。
      所有的公共方法要求测试,对于指定排除在覆盖率之外的代码,可使用[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage()]进行区分。
      5.特征分组
      自动化测试的方法默认是根据项目分组,自定义分组可以通过TestCategory标记:
      [TestClass,TestCategory(“MS TEST V2”)]


      这个方法方便了开发对所有的测试进行整理。

      参数化测试
      Datarow参数化
      自动测试的基本方法已经基本上掌握,如果在测试的参数比较多的情况怎么处理,我们不可能一个一个方法去建立单元测试方法。
      如下图所示:

      当我们想针对同一个方法再起一个单元测试的时候,会发现大部分的参数都已经帮我们填好。

      系统会默认生成一个带尾号的测试方法,然后我们进行简单的修改。
      虽然也可以实现测试,但是这个并不方便,我们这里可以使用参数化测试方法,老版本MS TEST最大缺点就是在参数化测试方面,metsetV2版本现在通过DataRowAttribute指定测试用例的参数,如下:

      [DataTestMethod]
      [DataRow(“10”, “圆形”, “手机”, “电压10V形状为圆形的手机电池”)]
      [DataRow(“15”, “方形”, “汽车”, “电压15V形状为方形的汽车电池”)]
      [DataRow(“9”, “菱形”, “笔记本”, “电压9V形状为菱形的笔记本电池”)]
      public void MakeBattaryTest(string v,string shape,string ower,string res)
      {
      ACompany aCompany = new ACompany();
      string actres = aCompany.MakeBattary(v, shape, ower);
           Assert.AreEqual(res, actres);
         }


      DataTestMethod:注明这个方法是参数化测试方法;
      DataRow:一组参数,参数可以是任何值;但是一定要和参数的测试方法匹配。
      这里有一个要点,参数的个数设置多少个,因为测试的方法适合三个参数,所以大部分的人都认为是三个参数就够了,其实不是,应该是四个参数,还有一个是结果值。看上面的代码,我们最后断言的标准是期望值和实际值进行对比,而期望值是来自参数组:

      运行测试,这个时候是三个测试而不是一个测试:

      6.公用测试参数
      测试过程中会遇见一种情况,就是参数复用,比如一组用户数据,既可以用于登录测试,也可以用于权限测试。做过开发的人员都应该了解,同样的代码尽可能的合并,以提高代码利用率,方便维护。这里就需要用到共享参数,首先我们先建立一个共享的方法,用于返回共享的参数,如图:

      然后将之前方法中的datarow替换成共享的参数。运行测试,得到的结果是一样的:

      在MS TEST V2的版本中,还可以通过ITestDataSource接口实现自定义数据源。
      7.初始化和结束设置
      很多情况下测试时有条件的,比如需要测试数据库性能,需要百万级的数据。但是实际上你的数据库只有寥寥三四条,再比如数据库表有很多关联关系,但是目前这些表都没有数据,再比如软件的某些设置必须是特定的,种种情况给我们的白盒测试带来麻烦,但是我们也有解决办法,我们可以通过AssemblyInitialize和AssemblyCleanup属性来设置,如图:

      AssemblyInitialize注释的方法start(),这里面可以随意的插入你想要的数据,或者改动配置,移动文件等等。
      AssemblyCleanup注释的方法end(),可以将数据还原,保证测试环境清楚,不留尾巴。
      通过上面的这种方式,可以实现测试隔离。以保证测试不会影响到正常的软件运行。
      8.黑盒测试与白盒测试
      通过上面的描述,可以看到白盒测试其实也是一种黑盒测试,是一种粒度更小的黑盒测试。测试的过程中他不管里面的方法怎么运行,只看结果。和黑盒测试有异曲同工之妙。
      白盒测试
      优点:
      (1)迫使测试人员去仔细思考软件的实现。  
      (2)可以检测代码中的每条分支和路径  
      (3)揭示隐藏在代码中的错误。  
      (4)对代码的测试比较彻底。  
      (5)让软件最优化。  
      缺点:
      (1)昂贵。  
      (2)无法检测代码中遗漏的路径和数据敏感性错误。  
      (3)不验证规格的正确性。  

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-12 15:39 , Processed in 0.058776 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表