(二)VS2005 Team Suite 轻松搞定白盒测试

发表于:2007-7-23 14:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:俞戴龙    来源:51testing投稿

        限于篇幅有限,且重点不在于用例设计上,笔者在这里象征性的用语句覆盖的方法设计了3个测试用例:

                

注:实际测试过程中可以结条件覆盖、判定覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等方法设计出更多测试用例进行测试

5. 进行单元测试
        创建单元测试
        至此,我们简单设计了8个测试用例,接下来就要在VSTS里创建单元测试了
        1. 首先,鼠标留在被测函数static double position(char x, int y)上,点击右键,弹出如下图所示菜单:

                

        2. 选择“创建单元测试”,弹出如下对话框:

                

        在这里我们可以看到,无论开发的代码是用何种语言写的,只要是用VS2005创建的,我们测试的时候,可以选择C#、VB、C++都可以实现,这正是VS2005强大之处之一。
 
        3. 勾选上我们需要测试的函数,点击“确定”,弹出如下对话框:

                

        4. 输入测试项目名后,点击“创建”,在“解决方案资源管理器”中,我们可以看到创建成功了一个以我们刚才键入的名字命名的测试方案(如下图红框所示)

                

代码分析
        在自动生成的form1Test.cs里,有这么一段代码:
        /// <summary>
        ///position (char, int) 的测试
        ///</summary>
        [DeploymentItem("WindowsApplication1.exe")]
        [TestMethod()]
        public void positionTest()
        {
            char x = '\0'; // TODO: 初始化为适当的值
            int y = 0; // TODO: 初始化为适当的值
            double expected = 0;
            double actual;
            actual = TestProject3.WindowsApplication1_Form1Accessor.position(x, y);
            Assert.AreEqual(expected, actual, "WindowsApplication1.Form1.position 未返回所需的值。");
            Assert.Inconclusive("验证此测试方法的正确性。");
        }
        这就是单元测试的测试代码的主体部分,我们来详细分析一下:
        [TestMethod()]:说明了以下代码是一个测试用例,在form1Test.cs中的“#region 附加测试属性”里还有很多带有中括号的方法我们在后文再讲述:
     char x = '\0'; // TODO: 初始化为适当的值
     int y = 0; // TODO: 初始化为适当的值
        这两句是被测函数的输入参数,需要我们去修改它的值,说白了,也就是我们输入测试用例的地方。
        在这里我们可以看到:VSTS自动为x赋了初值’\0’,为y赋了初值0,我们要做的,只是更改它的值就可以了,VSTS自动为char类型加上了单引号,显示出非常人性化和智能化:
     double expected = 0;
     double actual;
        这两句话浅显易懂,前一句话是定义了期望值和对它进行初始化,后一句话是定义了实际值。对expected进行了赋值=0实际上是在提醒我们:这里是需要测试人员在进行测试时需要更改的地方——多么的人性化!
          可能有人要问了:那么实际值actual改怎么去赋值?下面的这句语句就是在对它进行赋值:
actual = TestProject3.WindowsApplication1_Form1Accessor.position(x, y);
         太棒了,现在期望值和实际值都已经获取到了,该对他们进行比对了吧?没错,下面的这句语句就实现了这个功能:
Assert.AreEqual(expected, actual, "WindowsApplication1.Form1.position 未返回所需的值。");
         Assert在这里可以理解成断言:在VSTS里做单元测试是基于断言的测试。在MSDN网站上,有这样的描述:“可定义为“实或您相信为事实的内容”。从逻辑角度看,请考虑该语句“when I do {x}, I expect {y} as a result”。”查阅帮助文档,可以看到有以下这些断言:

              

        乍看起来有点摸不着头脑,举个简单的例子,你就会明白:比如说,我们在刚才的测试用例1中,输入的是(A,0),预期输出是2.88,那么现在expected=2.88,实际值是actual,我们认为expected=actual测试才算通过,如果不相等的话,把“测试用例不通过”这句话纪录进测试结果,那么我们就把这句语句改为:Assert.AreEqual(expected, actual, "测试用例不通过");
        简单的说,断言就是我们去定义为测试通过的准则
        帮助文档里有各个断言的描述:
                 

                                                                                                                            下页链接

 

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

 

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • dot.cheng
    2009-10-15 14:50:52

    “ 在这里我们可以看到,无论开发的代码是用何种语言写的,只要是用VS2005创建的,我们测试的时候,可以选择C#、VB、C++都可以实现,这正是VS2005强大之处之一。”

    我对这句话不太理解:真的是这样吗?对 Native C 也可以吗?

    问题是我要测试的是 Native C。

  • ybyq3344
    2008-9-24 11:31:33

    好,顶

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号