数据驱动单元测试实例

发表于:2013-4-28 09:58

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

 作者:sanmao    来源:51Testing软件测试网采编

  我们在对软件做功能测试时,经常需要重复相同的操作过程,但是输入不同的数据来进行测试,也就是一个单元测试对应多组测试数据。而一个单元测试中,一个Assert只能做一个判断,如果仅仅因为测试数据不同而重复设计多个相同的测试用例,显然没有人愿意这样做。使用数据驱动测试,就能达到一个单元测试执行多组测试数据的目的,还能使操作逻辑和测试数据分离。下面就通过实例简单介绍一下这种测试方法,该实例使用excel作为存储测试数据的数据源。

  某销售人员每月的工资为底薪加提成,底薪2000,所售产品的单价10元,,当月销量不大于1000时,提成率为0.05,销量超过1000不大于2000时,提成率为0.10,超过2000时提成率为0.15,现在需要计算他每月根据产品销量应发多少工资。设计程序如下:

namespace CalculateSalaryProject
{
    public class Program
    {
        public double GetTotalSalaryBySales(int sales)
        {
            const double BaseSalary = 2000;
            double unitPrice = 10;
            double royaltyRate = 0.0;

            if (sales <= 0)
            {
                royaltyRate = 0.0;
            }
            else if (sales <= 1000)
            {
                royaltyRate = 0.05;
            }
            else if (sales <= 2000)
            {
                royaltyRate = 0.10;
            }
            else
            {
                royaltyRate = 0.15;
            }

            return BaseSalary + unitPrice * sales * royaltyRate;
        }
    } }

  程序设计完毕,对程序功能进行单元测试如下:

using CalculateSalaryProject;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace TestProject
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void GetSalaryBySalesUnitTest()
        {
            Program program = new Program();
            double actualSalary = program.GetTotalSalaryBySales(1);
            double expectedSalary = 2000.5;
            Assert.AreEqual(expectedSalary, actualSalary);
        }
    }
}

  该测试用例只对销量为1时的情况进行了测试,而根据边界值法,需要测试的数据有-1,0,1,999,1000,1001,1999,2000,2001九种,下面就用数据驱动的方法覆盖这些数据:

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号