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

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

使用测试优先方法开发用户界面[4]

发布: 2010-3-30 10:06 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网

 

  使用测试优先方法开发用户界面[4]   软件测试 

     void MovieListWindow::OnClickAddButton()

  {

  UpdateData();

  CString strNewMovieName;

  m_MovieField.GetWindowText(strNewMovieName);

  if("" != strNewMovieName)

  {

  m_pEditor->Add(strNewMovieName);

  m_MovieListBox.AddString(strNewMovieName);

  }

  }

  编译、测试、通过。

  5、Mock Objects

  在删除操作的单元测试中,我们遇到的一个问题是,影片列表的数据应该是保存在一个文本文件或者数据库当中的,如果我们编写的测试依赖于这些实际的文件或数据库,那么我们的测试就会受制于这些外部的资源。一旦文件或者数据库里的数据发生变化,必然会波及到我们的测试代码,从而产生错误的测试信息。前面的MovieListEditor中我们没有加入一些初始化的数据,在测试删除操作时会遇到一些问题 。

  这里,我们引入Mock Objects。Mock Objects用来模拟外部复杂的资源(如数据库,网络连接等),使UI可以测试那些依赖于这些复杂外界资源的模块。例如在测试一个跟数据库有关系的模块时,我们并不一定要建立一个真实的数据库连接,而只需建立一个Mock Objects就可以了。测试所需的数据都存在于这个Mock Objects。可以说,Mock Objects为我们提供了一个轻量级的、可控制的、高效的模型。

  在本例中,影片的增加、删除都会跟文件或数据库操作发生关系。这时我们就可以利用Mock Objects来隔离测试代码与文件或数据库。使用Mock Objects一般有以下几个步骤:

  a)、定义一个外部资源的接口.(这个接口一般是可以在重构过程中提炼出来的)。

  b)、定义一个Mock Objects,从外部资源的接口继承下来,实现外部资源的接口。

  c)、创建一个Mock Objects,并设置它的内部期望值。

  [NextPage]

  d)、把创建的这个Mock Objects传递给需要测试的模块进行操作。

  e)、操作完毕后将Mock Objects内部的状态与期待状态比较。 现在我们就根据这个步骤来实现本例子中的Mock Objects.通过对前面的代码进行重构,我们可以提炼出一个接口MovieListEditor:

  class AFX_EXT_CLASS MovieListEditor

延伸阅读

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

TAG: 开发 用户界面

21/212>

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

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