ios测试框架的理解

关于ios的测试

Cedar 、Specta 、Kiwi  、  XCTest

Specta和Kiwi的区别就是Kiwi包含了Specta和OCmock以及Expeata所有的功能

测试框架的作用:

由于行业中的干进度,所以我们一般都是不用TDD来测试,而是用BDD来测试。

BDD是用来测试的“数据存取”的重要环节。

“术语” 理解:

BDD(Behavior Driven Development),也就是行为驱动开发,它旨在解决具体问题,帮助开发人员确定应该测试些什么。

TDD(Test-Driven Development),就是测试驱动开发,通过测试来推动整个开发的进行。

gihub上面的框架:

oc 语言上面的测试框架:

wiki   https://github.com/kiwi-bdd/Kiwi/wiki

specta https://github.com/specta/specta

Cedar  https://github.com/pivotal/cedar

XCTest 与xcode高度集成

swift语言的测试框架

https://github.com/railsware/Sleipnir

https://github.com/Quick/Quick

RAC  :IOS响应式编程框架ReactiveCocoa(RAC)使用示例

XCTest的解释:  ——> 简单  ,只需要创建一个类,使用 “test” 作为测试方法名的前缀即可。

XCTest与Xcode深度集成,而且可以享受Apple后续对XCTest升级的福利。

上面可以看出XCTest只是一个非常简单使用,所以功能也是比较简单的,所以只是能够用于中、小的项目当中。

“大”的工程,——> Kiwi 或者 Specta

区别:

Kiwi包含了Specta和OCmock以及Expeata所有的功能。

Specta就是没有mock和验证功能Kiwi。

他们是不可以同时是使用的,但是它们可以各自和XCTest混合使用。——> 原因:他们是对XCTest进行封装的。

上面的oc中的三大用来测试的框架各有利弊:

选择Kiwi是因为只需要在podfile导入一个Kiwi就行了,

Specta则需要依赖别的第三方库,灵活,但是因为灵活而复杂。

使用Specta,还要引入OCmock/OCMockito以及Expeata/OCHamcrest一起配合使用。

OCMock Or OCMockito

这两个都是用来mock对象,Stub方法的,区别在于使用OCMock的库比OCMockito的库多,而且文档和教程更加丰富。

/*

mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。

mock对象,这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。

*/

Expecta Or OCHamcrest

都是断言的扩展框架,Expecta不成熟,框架还有一些的问题。

OCHamcrest更加成熟,而且可扩展性高,可以自定义自己的断言,更灵活。

specta框架的总结:在用specta的时候,一般都会再引入OCMock 和OCHamcrest 这两个一起使用。

BDD的理念: 不是写代码,而是讲故事。

整个故事是由Given…When…Then组成。

eg:BDD框架Kiwi的一段测试代码:

describe(@"Team", ^{

context(@"when newly created", ^{

it(@"has a name", ^{

id team = [Team team]; [[team.name should] equal:@"Black Hawks"];

});

it(@"has 11 players", ^{

id team = [Team team]; [[[team should] have:11] players];

});

});

});

这个测试用例就是在说Given a Team,When newly created,it should have a name, and should have 11 players,基本上不需要注释就能知道在干嘛。

3、我们应该测试什么?

BDD:我们应该关注的是“行为” Behaviour而不是测试。

eg:例如你设计的一个对象,它有一个接口定义了其方法和依赖关系。这些方法和依赖,声明了你对象的约定,它们定义了如何与应用的其他部分交互,以及它的功能是什么。它们定义了对象的行为。同时这也应该是你的目标:测试你对象的行为方式。

不应该测试什么呢?

不要测试私有方法:

(私有方法意味着私有,如果你感到有必要测试一个私有方法,那么那个私有方法一定含有概念性错误,通常是作为私有方法,它做的太多了, 从而违背了单一职责原则)。

不要 Stub 私有方法:Stub 私有方法和测试私有方法具有相同的危害,更重要的是,Stub 私有方法将会使程序难以调试。通常来说,用于Stub的库会依赖于一些不寻常的技巧来完成工作,这使得发现一个测试为什么会失败变的困难。

不要测试构造函数:构造函数定义的是实现细节,你不应该测试构造函数,这是因为我们认同测试应该与实现细节解耦这一观点。

不要 Stub 外部库:第三方代码不应该在你的测试中直接出现。

4.测试的目的

使重构更简单 —— 你可以自信的修改实现细节,而不用去触及公有 API。

避免代码恶化—— 恶化在什么时候发生?在你修改代码的时候。

提供了可执行的说明和文档 —— 你在什么时候更想知道软件实际上是如何工作的?在你想修改它们的时候。

减少了创建软件的时间 —— 怎么减少时间的?是通过更快速地修改你的代码,出错时测试会自信地告诉你哪里出错了。

降低了创建软件的代价 —— 时间就是金钱,朋友。

测试应该:

很快速(Fast) —— 测试应该能够被经常执行。

能隔离(Isolated) —— 测试本身不能依赖于外部因素或者其他测试的结果。

可重复(Repeatable) —— 每次运行测试都应该产生相同的结果。

带自检(Self-verifying) —— 测试应该包括断言,不需要人为干预。

够及时(Timely) —— 测试应该和生产代码一同书写。

5.UI测试

关于UI测试,需要测试的是用户的交互,而不是应用的外观,Xcode7中新增了UI Testing,具体可以看wwdc 2015 session :406_hd_ui_testing_in_xcode。

参考链接:

http://www.cocoachina.com/ios/20150731/12859.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-29 11:01:36

ios测试框架的理解的相关文章

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

GHUnit使用指南(翻译自GitHub)-IOS测试框架

Installing in iOS (Xcode 5) 1:首先你要有一个项目.LOL 2:添加一个新的测试target.(关于Target是什么,请参考我的另外一篇文章)最新版Xcode 将Add Target放在顶部栏 3:选择新的target的类型 4:将GHUnit框架放到新建的target中 5:打开Objective-C categories,因为我们新建的Target默认是没有打开的,如果是原本就有的Target的话,默认是打开的.使用-ObjC打开 6:删除原有的文件 7:将ma

对于iOS前端框架的理解

iOS前端的架构设计,我所理解的意思就是,使用什么样的模式或者结构敲代码就是各个类怎么协同工作的.或者文件存放的结构.各个类到底如何分工的. 国外有好多关于iOS端的架构的文章,无奈实在英语水平有限,只看了几篇被翻译过的文章.MVC.MVVM.VIPER等还有几个记不住名字的,但是无论什么架构感觉理解的都不是很深刻,具体写代码的时候也没有分的太清楚,也是怎么方便怎么来.最后导致了来回几次的重构,但是重构完成后,过一段时间再看代码的时候还是感觉结构不够清晰,各个类之间的关系比较混乱.现在的项目也是

十大免费移动程序测试框架(Android/iOS)

十大免费移动程序测试框架(Android/iOS) 概述:本文将介绍10款免费移动程序测试框架,帮助开发人员简化测试流程,一起来看看吧. Bug是移动开发者最头痛的一大问题.不同于Web应用程序开发,你可以时刻发现并修复Bug,而移动应用程序中的Bug隐藏得很深,直到用户使用时才发现问题.这样一来,不仅有损产品在市场上的名声,而且还会影响销售.所以在产品发布以前,开发人员需要严格测试程序.本文将介绍10款免费移动程序测试框架,帮助开发人员简化测试流程,一起来看看吧. Appium for iOS

消灭Bug!十款免费移动应用测试框架推荐

对于移动应用开发者而言,Bug往往是最让人头疼的一大问题.不同于时时刻刻可以修补的Web App,移动App中的Bug往往隐藏得很深,甚至有时候等到用户使用才显现出来,这么一来开发者搞不好就会赔了名声又折钱.所以在应用发行之前,对其进行严格的测试是非常必要的.而移动应用测试框架可以帮助开发者简化测试流程,从而很好地解决这一问题.今天,给大家详细介绍当下最受开发者欢迎的十大免费移动应用测试框架,一起来看看吧. 1. Appium(iOS/Android) Appium是一个开源的.跨平台的自动化测

Google推出iOS功能性UI测试框架EarlGrey

经过了一段时间的酝酿后,Google很高兴地宣布了EarlGrey,一款针对于iOS的功能性UI测试框架.诸如YouTube.Google Calendar.Google Photos.Google Translate.Google Play Music等多款Google应用都成功地采用了EarlGrey框架来满足其功能性测试之所需. EarlGre的特点 EarlGrey所提供的主要特性如下所示,这些特性使得应用的测试变得更加轻松,也更具效率: 强大的内建同步机制:测试会在与UI进行交互前自动

iOS开发中的测试框架 (转载)

作者:CrespoXiao授权 地址:http://www.jianshu.com/p/7e3f197504c1 我们为什么要用测试框架呢?当然对项目开发有帮助了,但是业内现状是经常赶进度,所以TDD还是算了吧,BDD就测测数据存取和重要环节,这很重要,一次性跑完测试单元检查接口或模块的可用性,这比打断点调试强多了吧,至于UI测试就算了吧(xcode7集成了),呵呵. 首先了解一下BDD与TDD的概念: BDD(Behavior Driven Development),也就是行为驱动开发,它旨在

2015年iOS测试现状

本文由 伯乐在线 - nathanw 翻译,dopcn 校稿.未经许可,禁止转载! 英文出处:www.mokacoding.com.欢迎加入翻译小组. 几周前,我决定将将我在 mokacoding 上的创作更多集中在单元测试与验收测试,自动化和生产效率上,主要在iOS领域. 相关深入文章可以看看“通过 CocoaPods 为 iOS 项目创建 Calabash 并构建配置”和“用终端运行 Xcode 测试”. 这周我们要回过头来看看,或者说是站在更高的角度审视单元测试和验收测试,以及在云端运行持

初识 iOS 自动化测试框架 WebDriverAgent

微信跳一跳最近很火,外挂代练什么的也越来越多.作为一只程序猿,对外挂的原理产生了强烈的好奇心,于是埋头研究了一阶段,注意到了 WebDriverAgent 这套 Facebook 出品的自动化测试框架. 为了让大家产生兴趣,先从跳一跳外挂的实现说起. 准备工作 安装 homebrew homebrew 是 Mac OS 下最优秀的包管理工具,没有之一. xcode-select --install ruby -e "$(curl -fsSL https://raw.githubuserconte