All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!

Mock介绍及使用场景讨论

上一篇 / 下一篇  2010-12-27 19:47:02 / 个人分类:软件工程

【这两天写的一个部门分享 关于Mock的使用】

本文主要给大家普及一下Mock的基本概念,讨论一下我们实际的使用场景,并推荐了王兴勇同学开发的Mock Service系统。大家在今后项目中能够根据实际的情况,适当考虑使用Mock来提高测试效率,相关疑问可以联系:Jay** ***(开发)等。 PS:我们测试也有searchMock在部分场景下使用过,本文暂未做介绍(benben曾经发邮件介绍过的)。

 

什么是Mock

In object-oriented programming,mock objects are simulated objects that mimic the behavior. of real objects in controlled ways. A computer programmer typically creates a mock object to test the behavior. of some other object, in much the same way that a car designer uses a crash test dummy to simulate the dynamic behavior. of a human in vehicle impacts.

 

Mock的最大优势是什么?就是它的行为固定,它确保当你访问该Mock的某个方法时总是能够获得一个没有任何逻辑的直接就返回的结果。

 

Mock Object的好处:

第一、隔绝其他模块出错引起本模块的测试错误。

第二、隔绝其他模块的开发状态,只要定义好接口,不用管他们开发有没有完成。

第三、一些速度较慢的操作,可以用mock Object代替,快速返回。

 

在我们遇到如下问题时,Mock是我们的第一选择:

1.      外部资源,比如文件系统、数据源,这是因为对此类外部资源依赖性非常强,而其行为的不可预测性很可能导致测试的随机失败。

2.      UI(这一条不太适用于目前的测试),这个实际上和外部资源也搭得上边,因为UI很多时候需要用户行为触发事件。MVCMVP模式都很好地解决了这个问题。

3.      第三方API,当接口属于使用者,通过mock该接口来确定测试使用者与接口的交互,明确定义该接口的职责。

 

Mock在测试过程中可能的实际使用场景有哪些?

1.      接口测试:对一个接口进行测试,排除这个接口对外部环境的依赖,避免因外部资源而导致测试失败。

2.      UI自动化测试:对数据源的MockUI自动化测试时,页面上展示的信息是来源于其他的数据源(如:searchUDAS等)

3.      功能测试:功能测试初期,依赖到其他部门或者其他公司提供的接口,但是他们接口初期不稳定(前期已做好服务接口的约定)。当有较稳定的外部接口后,我们进行全面地测试,保证接口的功能都正常了。如果数据准备比较麻烦或者造数据要两方配合成本比较高的项目,在对外部接口进行第一次全面联调测试后,仍然可以考虑使用Mock来全面测试自己内部的功能逻辑;当然,在项目发布前,去掉mock,联调测试一下主干功能也是很有必要的。

 

Mock使用可能存在的风险?

There's no silver bullet(没有银弹)Mock也不是silver bullet,所以根据项目实际情况和具体需要来使用Mock

测试时如果使用Mock太多,可能会导致在联调测试中才发现bug,这样缺陷发现的时间较晚,可能会造成bug修复成本增大。

好的建议:在联调测试接口稳定后,就尽可能地使用真实测试环境接口;在接口不稳定时,建议使用Mock方式。开发联调自测时也是一样的道理。

 

测试环境目前Mock(***同学的mock)使用状况:

1. av acp认证的一个Mockhttp://10.20.157.179:4080/acptest/AcpServlet

2.***同学也在自动化回归中已使用几个Saas相关的Mock接口,**也正在项目中使用,效果较好。

 

***同学的Mock Service

主要适用于对远程服务mock;***同学也在根据开发和测试的实际需求逐步完善其功能,非常给力的!

目前的Mock环境:http://10.20.157.179:4080/userLogin.htm

使用参考文档:http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=45004947

Mock系统问题反馈:http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=45005091

 

 

网上Mock相关的一些资料和讨论:

http://en.wikipedia.org/wiki/Mock_object

http://www.nfwin.com/news-263/9243.html

http://www.cnblogs.com/lanvige/archive/2010/05/01/Mock-Framework-In-Action.html

http://www.javaeye.com/topic/20035

http://www.javaeye.com/topic/21630

http://news.csdn.net/n/20060726/93003.html

 


TAG: 软件工程 Mock

 

评分:0

我来说两句

smile665

smile665

Stay hungry, stay foolish. 得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。

日历

« 2024-03-23  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 952265
  • 日志数: 220
  • 建立时间: 2008-11-06
  • 更新时间: 2012-10-06

RSS订阅

Open Toolbar