软件工程第二次作业

软件工程第二次作业

选择开发工具

这此,我决定使用c++进行开发。一来,可以复习巩固一下c++部分内容。第二,可以锻炼一下自己的c++编程能力。深入理解一下,c++的面向对象部分的精髓。

使用Visual Studio进行开发,VS作为一个强大的IDE,我们应该深入了解其功能,在团队合作中发挥出更大的效能来。熟练使用VS的快捷键,为以后敏捷开发打好基础。VS的界面如下图1.1所示。图1.1 VS界面

熟悉自动单元测试技术

测试是软甲工程和软件开发中的重要组成部分,因此自动测试技术就更为重要了。一个好的测试,充分的测试,提前发现问题,是节省开发成本、减少开发时间的重要举措。在自动化测试框架中,我使用了MS的CppUnitTestFramework框架,通过查阅相关的资料,了解了它的测试的方法。

因为社区般的VS不支持进行代码覆盖率测试,所以我下载了一个VS插件,这个插件可以很好的进行代码覆盖率的测试。我认为,开发者自己的测试,最好是使用白盒测试,因为我们最清楚内部的运行方式。所以,进行代码覆盖率测试就应该是尽量进行。

我写的一个简单的c++程序如下,这个一个简单的获取输入的三个数中的最大值和最小值的一个类。

class Myclass
{
public:
    Myclass();
    Myclass(float first, float second, float third);
    ~Myclass();
    float getmaxnum();
    float getminnum();
private:
    float f_num;
    float sec_num;
    float thi_num;
};


Myclass::Myclass()
{
}

Myclass::Myclass(float first, float second, float third)
{
    Myclass::f_num = first;
    Myclass::sec_num = second;
    Myclass::thi_num = third;
}

Myclass::~Myclass()
{
}

float Myclass::getmaxnum()
{
    float temp = 0;
    temp = (f_num > sec_num) ? f_num : sec_num;
    return (temp > thi_num) ? temp : thi_num;
}

float Myclass::getminnum()
{
    float temp = 0;
    temp = (f_num > sec_num) ? sec_num : f_num;
    return (temp > thi_num) ? thi_num : temp;
}

测试框架中的代码如下所示,在下面的测试中,我测试了边界值和普通值,测试了不同的数据输入类型,力求能够测试到所有的情况。

#include "stdafx.h"
#include "CppUnitTest.h"
#include "../Project1/source.cpp"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{       
    TEST_CLASS(UnitTest1)
    {
    public:
        
        TEST_METHOD(TestMethod1)
        {
            // TODO: 在此输入测试代码
            float a = 3;
            float b = 1;
            float te1 = 1.1f;
            float te2 = 1.2f;
            Myclass test1(1,2,3);
            Myclass test2(1.1f,1.2f,1.2f);
            Myclass test3(1, 1.2f, 1.1f);
            Assert::AreEqual(a, test1.getmaxnum());
            Assert::AreEqual(b, test1.getminnum());
            Assert::AreEqual(te1, test2.getminnum());
            Assert::AreEqual(te2, test2.getmaxnum());
            Assert::AreEqual(b, test3.getminnum());
            Assert::AreEqual(te2, test3.getmaxnum());
        }
    };
}

测试的结果

测试的结果如下图2.1所示。图2.1 测试结果图

代码覆盖率测试如下图2.2所示。图2.2 代码覆盖率测试

总结

通过这次的实践,我认识到代码的测试是一项很重要的工作。而以前,因为没有相关的软件开发知识,虽然也通过其它土办法进行了相关的测试,但是软件工程,我们应该从大型工程,从工业的角度去重新思考这个问题。单元测试、回归测试,这些标准的测试方法,在软件工程中的收益完全是大于这些工作量的。

毫无疑问,软件开发中,符合规范的软件测试无疑是非常重要的!

转载于:https://www.cnblogs.com/zhenfeilee/p/soft_test.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值