第三次软件工程作业
考虑不熟悉习单元测试,所以选择了更直接的第二题
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,使得接下来的工作更加便于开展。