iPhone App自动化测试工具总结

iPhone App自动化测试工具总结

无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对iPhone App的自动化测试工具。

首先,我们把这些测试框架分为三大类:接口测试工具、注入式UI测试工具、录放式UI测试工具。

一、接口测试工具,主要在iphone SDK提供的单元测试框架的基础上,完成代码的接口功能测试。

这类工具用的比较多的是SDK本身提供的test unit,以及google的google-toolbox-for-mac工具。google的GTM工具是在test unit上做了一层封装,可以简单、快速的完成测试脚本编写,提供完善的测试日志和报告,并提供部分简单的UI测试功能。

详细的文档可以参考这里:http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting

二、注入式UI测试工具,可以完成对被测应用的UI功能测试,需要在源代码中加入一些必须的测试代码。优点是可以模拟用户的操作,测试被测应用 的相关功能,可以覆盖比较全的应用功能。缺点是因为在源代码中插入了必须的测试代码,而这些应用发布时需要去除,引入了被测应用和发布应用不一致的风险。 UISpec,提供了用例运行前的准备和运行的恢复功能,UIQuery功能,以及较为完善的校验功能,但该工具的使用比较复杂,脚本的编写也很繁琐,虽然对UI可以query,但无法方便、清晰、直观的查看应用控件的属性。 详细的文档可以参考这里:http://code.google.com/p/uispec/wiki/Documentation

Bromine,脚本编写简单,对控件的操作,完全模拟touch事件实现,但控件的定位通过对控件重画,并插入定位需要的信息,xpath的描述串也稍显复杂,校验功能相对较弱。

详细的文档可以参考这里:http://code.google.com/p/bromine/

三、录放式UI测试工具,主要通过录制用户的操作行为,通过回放来完成对被测应用的功能测试,这类工具对UI的功能测试相对是比较弱的。 比较常用的有Instrument、FoneMonke 。

Instrument,是iOS提供的主要用于分析应用的性能和用户行为的工具,利用它可以完成对被测应用的简单的UI测试。

FoneMonke,是国外提供的一个开源的,免费的录制/回放工具。网站:http://www.gorillalogic.com/fonemonkey

以上是了解的一些针对iPhone App的自动化测试工具,大家感兴趣的可以了解了解,欢迎交流、学习!

 

第二篇:Iphone动画学习总结

Iphone动画学习总结

一、创建UIView动画(块)--(指过渡效果的动画) 基本方式:使用UIView类的UIViewAnimation扩展。

1、代码示例:

//开始准备动画

[UIViewbeginAnimations:nilcontext:nil];

//定义动画加速或减速方式

[UIViewsetAnimationCurve: UIViewAnimationCurveLinear]; //动画时长

[UIViewsetAnimationDuration: 2.7];

//设置过渡效果

[UIViewsetAnimationTransition: transitionforView: self.view cache: YES];

//动画中所做的改变,改变的obj应与forView中的对应 [self.viewexchangeSubviewAtIndex:

[self.view.subviewsindexOfObject(index1)]

withSubviewAtIndex:

[self.view.subviewsindeOfObject(index2)]

];

//动画结束

[UIViewcommitAnimation];

上面提到的transition参数取值范围:UIView类自身提供四种过渡效果。

UIViewAnimationTranstionNone无过渡

UIViewAnimationTranstionFlipFromLeft 从左到右翻转 UIViewAnimationTranstionFlipFromRight从右到左翻转 UIViewAnimationTranstionCurlUp 从下向上卷 UIViewAnimationTranstionCurlDown 从上向下卷

2、还有另一种形式:

//返回当前视图堆栈顶部的图形上下文

CGContextRef context =

UIGraphicsGetCurrentContext();

[UIViewbeginAnimations: nil context: context]; //以下内容如上

……

二、block方式:使用UIView类的

UIViewAnimationWithBlocks扩展

1、代码示例:

[UIViewanimateWithDuration: 2.7 //动画时长 delay: 2.7 //延迟

options: (UIViewAnimationOptions) options animations: ^(void) {

要做的变化

}completion: ^(BOOL finished) {

变化结束时做些事情

}

];

常见的是其嵌套使用。

三、core方式: 使用CATransition类

1、须知:

CATransition只针对图层,不针对视图。图层是Core Animation与每个UIView产生联系的工作层面。使用Core Animation时,应该将CATransition应用到视图的默认图层([myView layer])而不是视图本身。

使用CATransiton类实现动画,只需要建立一个Core Animation对象,设置它的参数,然后把这个带参数的过渡添加到图层即可。

使用前要引入QuartzCore.framework库,并在相应处添加代码#import <QuartzCore/QuartzCore.h>。

2、代码示例:

//定义动画

CATransition *transition = [CATransition animation]; //间隔时间

transition.duration = 0.5f;

//动画开始与结束的快慢

transition.timingFunction =

[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

//动画效果

transition.type = kCATransitionFade;

//动画方向

transition.subtype = kCATransitionFromRight; transition.delegate = self;

[self.layeraddAnimation: transition forkey:nil]; layer所在图层的变化;

3、CATransition的过渡效果类型:

公开的:

kCATransitionFade 淡化

kCATransitionMoveIn 覆盖

kCATransitionPush 推挤

kCATransitionReveal 揭开

非公开的:

@”cube” 立方体

@”suckEffect”吸收

@”oglFlip” 翻转

@”rippleEffect” 波纹

@”pageCurl” 卷页

@”cameraIrisHollowOpen” 镜头开

@”cameraIrisHollowClose” 镜头关

四、UIImageView自身动画属性

可以方便地实现幻灯片效果

1、代码示例:

//齿轮转动

UIImageView *tmpView = [[UIImageViewalloc] initWithFrame:CGRectMake(133, 118, 50, 50)];

[self.viewaddSubview:tmpView];

tmpView.animationDuration = 0.3;

tmpView.animationImages = tmpArray;

tmpView.animationRepeatCount = 0;

[tmpViewstartAnimating];

[tmpView release];

tmpView参数为数组,存放UIImage对象。

五、其它相关总结

因为在设计动画的过程中,为了体现出视图动态的效果,有些属性和方法我们还需深入了解一下。

1、UIView的frame、bounds、center属性的区别。 frame:该View在父View坐标系中的位置和大小。(参照点是父亲的坐标系统)

bounds:该View在本地坐标系中的位置和大小。(参照点是本地坐标系)

center:该View的中心点在父View坐标系中的位置和大小。(参照点是父亲的坐标系)

2、视图缩放、旋转、移动。

//将视图的大小转变为正常大小的200%

CGAffineTransformnewTransform =

CGAffineTransformMakeScal(2.0, 2.0);

//添加到相应视图中

[btnsetTransform: newTransform];

//视图的旋转

CGAffineTransformnewTransform =

CGAffineTransformMakeRotate(transform, M_PI); 或

CGAffineTransformnewTransform =

CGAffineTransformMakeRotation(-M_PI);

//视图的移动

CGAffineTransformnewTransform =

CGAffineTransformMakeTranslation(width, 0.0);

相关推荐