• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何在Visual C++ 2010中实践测试驱动开发

发布: 2011-2-23 11:36 | 作者: 陈良乔 | 来源: it168 | 查看: 89次 | 进入软件测试论坛讨论

领测软件测试网

 对Salary类进行重构之后,所有测试都可以通过了,这样也就实现了用测试来驱动开发。当然,我们这里只是对设计中的第一个功能进行了足够的测试,完成了第一个功能的开发。我们还可以在这个基础上编写更多的测试,进入下一个以测试驱动开发的迭代。我们可以按照上面的过程以测试来驱动第二个功能的实现:

  [TestMethod]

  void TestInvalidInput()

  {

  std::unique_ptr pClass(new Salary(2003));

  // 测试第二个功能点:能够对错误的输入年份返回相应的错误代码

  Assert::AreEqual(-1, pClass->GetSalary(2001));

  // 测试临界输入是否返回正确结果

  Assert::AreEqual(1000, pClass->GetSalary(2003));

  };

  为了让这个测试通过,我们必须对Salary进行重构,让它对错误的输入进行处理并返回相应的错误代码:

  class Salary

  {

  public:

  Salary(int nBaseYear)

  :m_nBaseYear(nBaseYear)

  {};

  public:

  int GetSalary(int nNow)

  {

  int nYears = nNow - m_nBaseYear;

  // 对错误的输入进行处理并返回相应的错误代码

  if( nYears < 0 )

  {

  return -1;

  }

  else

  {

  // 正确的输入返回相应的计算结果

  return 300*(nNow - m_nBaseYear) + 1000;

  }

  }

  private:

  int m_nBaseYear;

  };

  经过重构之后,测试项目中的所有测试都可以顺利通过,这也宣告了我们这一次的代代已经顺利完成。而通过不断地进行这样的迭代,我们可以实现设计中的所有功能。

  经过简单的几次迭代,我们就以测试驱动了Salary的实现。整个过程完美地体现了测试驱动开发的强大优势:这种从使用者角度对代码进行的设计通常更符合后期开发的需求。因为关注用户反馈,可以及时响应需求变更,同时因为从使用者角度出发的简单设计,也可以更快地适应变化。同时,测试驱动开发将测试工作提到编码之前,并频繁地运行所有测试,可以尽量地避免和尽早地发现错误,极大地降低了后续测试及修复的成本,提高了代码的质量。在测试的保护下,不断重构代码,以消除重复设计,优化设计结构,提高了代码的重用性,从而提高了软件产品的质量。

  测试驱动开发的优势自不待言,从整个过程中我们也可以体会到,有了Visual C++ 2010的支持,面向C++的测试驱动开发也可以同样的快捷而简便。测试驱动开发的优势如此诱人,而我们又有了Visual C++ 2010这个工具的强力支持,我们不妨一试,让测试驱动开发使得我们的生活更加轻松。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

33/3<123

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网