第三次软件工程作业

考虑不熟悉习单元测试,所以选择了更直接的第二题

1.作业题目及要求

下表为某商场每日营业额与应收税率的对照表,请编写一小程序根据该商场每日营业额计算其实际应缴纳税费。

|营业额X (¥)|1000≤X<5000|5000 ≤X<10000|X≥10000|
| -------- | ---------: | :--------: |
|税率|5%|8%|10%|

*(1) 请从上述两个题目中根据个人实力任选一题,要求写出可运行的完整代码提交至GitHub或者Coding.net系统中,并将代码地址附到博客内,题目(1)可以参考这篇博文
*(2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
*(3) 请利用自动测试工具对程序进行测试
*(4) 请将程序运行结果和自动测试分析结果截图附到博客中

2.程序流程图

3.程序代码

class Calculate
{
public:
	double Tax(double sale);
private:

};

double Calculate::Tax(double sale)
{
	if (sale >= 1000)
	{
		if (sale >= 5000)
		{
			if (sale >= 10000)
			{
				return sale * 0.1;
			}
			else
			{
				return sale * 0.08;
			}
		}
		else
		{
			return sale * 0.05;
		}
	}
	else
	{
		return sale * 0;
	}
}

3.测试代码

测试数据
S=900 T=0 ABCEL
S=2000 T=100 ABDGJL
S=6000 T=480 ABDFHKL
S=11000 T=1100 ABDFIL
同时满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖


namespace UnitTest1
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			Calculate a;
			double F = 0;
			double T;
			T = a.Tax(900);
			Assert::AreEqual(F,T);
		}
		TEST_METHOD(TestMethod2)
		{
			Calculate a;
			double F = 100;
			double T;
			T = a.Tax(2000);
			Assert::AreEqual(F, T);
		}
		TEST_METHOD(TestMethod3)
		{
			Calculate a;
			double F = 480;
			double T;
			T = a.Tax(6000);
			Assert::AreEqual(F, T);
		}
		TEST_METHOD(TestMethod4)
		{
			Calculate a;
			double F = 1100;
			double T;
			T = a.Tax(11000);
			Assert::AreEqual(F, T);
		}
	};
}

4.测试结果

测试通过

5. coding

6.总结

通过自己编写代码,编写测试样例,再一次全面了了解了单元测试,对于测试的使用有了深刻的理解。在做作业的同是复习了类,熟悉了使用vs2017,使得接下来的工作更加便于开展。

posted @ 2018-04-01 13:49  f7r  阅读(109)  评论(0编辑  收藏  举报