ios测试

1.今天在公司中遇到一个问题:想到一个好的想法

  1 //
  2 //  CloudView.m
  3 //  Test
  4 //
  5 //  Created by zhangmh on 12-7-9.
  6 //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
  7 //
  8
  9 #import "CloudView.h"
 10
 11 @interface CloudView()
 12
 13 @property (nonatomic) CGFloat top;
 14 @property (nonatomic) CGFloat bottom;
 15 @property (nonatomic) CGFloat left;
 16 @property (nonatomic) CGFloat right;
 17
 18 - (void)animationUpdate;
 19
 20
 21 - (CGFloat)limitSpeedbettowinMINandMAX:(CGFloat)speedValue;
 22 @end
 23
 24 @implementation CloudView
 25
 26 @synthesize delegate;
 27
 28 @synthesize top;
 29 @synthesize bottom;
 30 @synthesize left;
 31 @synthesize right;
 32
 33
 34 #pragma mark -
 35 #pragma mark --初始化方法--
 36 - (id)initWithFrame:(CGRect)frame andNodeCount:(NSInteger)nodeCount
 37 {
 38     self = [super initWithFrame:frame];
 39     if (self) {
 40
 41         CGSize nodeSize = CGSizeMake(25, 25);
 42
 43         speedMAX      =  2.0f;//最大移动速度
 44         speedMIN      = -2.0f;//最小移动速度
 45
 46         self.left     = frame.origin.x - nodeSize.width;
 47         self.right    = frame.origin.x + frame.size.width;
 48         self.top      = frame.origin.y - nodeSize.height;
 49         self.bottom   = frame.origin.y + frame.size.height;
 50
 51         oldtouchPoint = CGPointMake(-1000, -1000);
 52
 53         for (NSInteger i = 0;i < nodeCount; i ++) {
 54
 55             CGFloat x = arc4random()%(int)(self.right  - nodeSize.width);
 56             CGFloat y = arc4random()%(int)(self.bottom - nodeSize.height);
 57
 58             CloudButton *cloudButton = [[CloudButton alloc] initWithFrame:CGRectMake(x,
 59                                                                                      y,
 60                                                                                      nodeSize.width,
 61                                                                                      nodeSize.height)];
 62
 63             cloudButton.tag = i;
 64             cloudButton.userInteractionEnabled = NO;
 65
 66             [cloudButton setTitle:[NSString stringWithFormat:@"%d",i]
 67                          forState:UIControlStateNormal];
 68
 69             [cloudButton addTarget:delegate
 70                             action:@selector(didSelectedNodeButton:)
 71                   forControlEvents:UIControlEventTouchUpInside];
 72
 73             float fontSize = arc4random()%20+8;
 74
 75             cloudButton.titleLabel.font = [UIFont systemFontOfSize:fontSize];
 76             cloudButton.alpha = fontSize/25;
 77
 78             NSLog(@"%d.alpha==%f",i,cloudButton.alpha);
 79
 80             [self addSubview:cloudButton];
 81             [cloudButton release];
 82         }
 83
 84         animationTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/60.0
 85                                                           target:self
 86                                                         selector:@selector(animationUpdate)
 87                                                         userInfo:nil
 88                                                          repeats:YES];
 89         [animationTimer setFireDate:[NSDate distantPast]];
 90     }
 91     return self;
 92 }
 93
 94 #pragma mark -
 95 #pragma mark --触摸事件--
 96 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 97 {
 98     UITouch *theTouch = [touches anyObject];
 99     CGPoint currentPoint = [theTouch  locationInView:self];
100     oldtouchPoint = CGPointMake(currentPoint.x, currentPoint.y);
101
102     for (int i=0; i<self.subviews.count; i++) {
103         CloudButton *cloud = [self.subviews objectAtIndex:i];
104         cloud.userInteractionEnabled = NO;
105     }
106 }
107
108 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
109 {
110     UITouch *theTouch = [touches anyObject];
111     CGPoint currentPoint = [theTouch  locationInView:self];
112     if (oldtouchPoint.x != -1000 && oldtouchPoint.y != -1000) {
113
114         for (int i=0; i<self.subviews.count; i++) {
115             CloudButton *cloud = [self.subviews objectAtIndex:i];
116
117             cloud.distanceX = [self limitSpeedbettowinMINandMAX:(currentPoint.x - oldtouchPoint.x)];
118
119             cloud.distanceY = [self limitSpeedbettowinMINandMAX:(currentPoint.y - oldtouchPoint.y)];
120
121             CGFloat distance = sqrt(cloud.distanceX*cloud.distanceX+
122                                     cloud.distanceY*cloud.distanceY);
123             if (distance!=0) {
124
125                 if (0.001 <= cloud.acceleration) {
126                     cloud.acceleration = (arc4random()%100)/200.0f;
127                 }
128
129             }
130
131         }
132     }
133 }
134
135 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
136 {
137     for (int i=0; i<self.subviews.count; i++) {
138         CloudButton *cloud = [self.subviews objectAtIndex:i];
139         cloud.userInteractionEnabled = YES;
140     }
141 }
142 #pragma mark -
143
144 #pragma mark -
145 #pragma mark --动画事件--
146 - (void)animationUpdate
147 {
148     for (int i=0; i<self.subviews.count; i++) {
149
150         CloudButton *cloud = [self.subviews objectAtIndex:i];
151
152         cloud.center = CGPointMake(cloud.center.x + cloud.distanceX*cloud.acceleration,
153                                    cloud.center.y + cloud.distanceY*cloud.acceleration);
154         if (cloud.center.x < self.left) {
155             cloud.center = CGPointMake(self.right,self.bottom - cloud.center.y);
156         }
157
158         if (cloud.center.x > self.right) {
159             cloud.center = CGPointMake(self.left, self.bottom - cloud.center.y);
160         }
161
162         if (cloud.center.y < self.top){
163             cloud.center = CGPointMake(self.right - cloud.center.x, self.bottom);
164         }
165
166         if (cloud.center.y > self.bottom) {
167
168             cloud.center = CGPointMake(self.right - cloud.center.x, self.top);
169         }
170
171         cloud.acceleration -= 0.001;
172
173         if (cloud.acceleration < 0.001) {
174             cloud.acceleration = 0.001;
175         }
176
177     }
178 }
179
180
181
182 - (CGFloat)limitSpeedbettowinMINandMAX:(CGFloat)speedValue
183 {
184     if (speedValue > speedMAX) {
185         speedValue = speedMAX;
186     }
187
188     if (speedValue < speedMIN) {
189         speedValue = speedMIN;
190     }
191
192     return speedValue;
193 }
194 #pragma mark -
195 #pragma mark -
196 /*
197 // Only override drawRect: if you perform custom drawing.
198 // An empty implementation adversely affects performance during animation.
199 - (void)drawRect:(CGRect)rect
200 {
201     // Drawing code
202 }
203 */
204
205 @end

我么想

时间: 2024-11-11 12:18:59

ios测试的相关文章

使用appium进行ios测试,启动inspector时遇到的问题(一)

最近在公司,让做ios的自动化测试,因为以前做过android的自动化测试,用的也是appium,觉得没什么,结果一开始在搭建环境就遇到了很多的问题,现在将我遇到的问题,以及解决方法,给大家分享出来.(ps:吐槽一下testhome,发了两个帖子一个提问帖一个心得分享帖,全都给拉到违规区了,问题也没有人给看) 进入正题,说一下我的环境: xcode 7.1.1 simulator 9.1 appium 1.4.13 iphone 5s  ios9.1 首先说一下,appium 在ios版本选择这

ios测试基础七:常用软件

ios测试常用软件列表 charles  http://www.charlesproxy.com  官网下载: Mac下常用 的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请 求都通过它来完成,从而实现了网络封包的截取和分析. WINDOWs下也有支持的版本: 常用功能: 抓包,查看请求,入参,返回值 简单模拟 多次重复请求: 模拟不同网速: Xcode 只支持m

iOS测试——置换测试: Mock, Stub 和其他

文章地址:http://ryantang.me/blog/2014/08/21/test-doubles/ iOS测试--置换测试: Mock, Stub 和其他

做QA的日子——iOS测试入门(四)

坦言,做QA的这半年我没有成长,就算有成长也很少,我很难过,和身边的人讲其实并没有谁能真正理解自己的难过,其实还是自己不够努力,对自己不够狠,曾经觉得自己不够幸运,想有一个更好的指路人,其实这样的想法是不对的,哪有那么多的指路人,遇到了是你万幸,没有遇到你自己就做你自己的指路人,用自己的驱动力驱动自己成长,就算慢一些又怎样,当有这样的指路人助你一臂之力的时候,或许你会更加珍惜现在所拥有的. 做QA测试,很多时候是站在后方支持整个团队的,很有可能很多时候会被别人看不起,别人会说,ta不就是一个测试

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

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

iOS 测试用代码

//测试图片能否显示 -(void)showMyimgview { UIImageView *backgroundImg=[[UIImageView alloc]init]; backgroundImg.frame =CGRectMake(50, 200, 200, 100); backgroundImg.image=[UIImage imageNamed:@"navbar"]; [self.view addSubview:backgroundImg]; [backgroundImg

如何利用Pre.im分发iOS测试包

大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安装包即可,但对于 iOS 来说,想要参与 App 测试却是件很复杂的事情. Apple在收购TestFlight后将其整合进iTunes Connect中,虽然能帮助iOS开发者邀请用户协助对 App 进行测试,但过程依旧复杂. 在这样的背景下,国内权威测试平台Testin推出了免费的APP内测分发

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测试

一,软件测试的类型. 1.软件测试按照测试类型,可以划分为:单元测试,集成测试和系统测试. 2.单元测试是指对软件系统中最小可测试单元进行的检查和验证. 3.集成测试,在iOS软件开发中,集成测试主要被简单地分为API接口和iOS功能集成测试.API接口测试是指,若一个iOS程序以网络请求的方式使用了后台服务的功能,测试时需要验证网络的请求以及响应是否符合预期.iOS功能集成测试其实就是功能测试.在一个iOS程序中,有很多功能是在UI界面上体现的,所以在功能测试中测试的重点将会在UI测试上. 4

iOS 测试在应用发布前后的痛点探索以及解决方案

作者-芈 峮 前言 iOS 开发从 2010 年开始在国内不断地升温,开发和测试相关的问题不绝于耳.iOS 测试主要涉及哪些内容?又有哪些挑战呢?带着疑问我们开始第一个大问题的讨论. iOS 测试的范围和可能遇到的挑战 iOS 测试范围 一般来说,每一个 iOS 应用的背后都会有一些后台服务.后台服务会给 iOS 应用提供丰富的数据和精彩的内容,后台服务的测试必须要包含在 iOS 测试中.当然,本文主要讨论一些 iOS 测试领域的内容,后台服务的测试在此就直接掠过.因此,下文提到的 iOS 测试