- 博客(203)
- 收藏
- 关注
原创 facebook/infer静态扫描分析oc代码
最近在研究facebook的开源工具infer,它是一个静态扫描工具,可以分析 Objective-C, Java 或者 C 代码,我按照官方说明在本地进行了安装,遇到了很多环境的问题,把安装说明详细的记录下来,供大家参考。一、安装依赖需要安装如下依赖:- opam >= 1.2.0 - Python 2.7- Java (only needed for the Java analysis
2015-12-28 17:50:51
3229
1
原创 白盒测试覆盖率概念普及
一、覆盖率的概念 覆盖率是用来度量测试完整性的一个手段,现在有越来越多的测试工具能够支持覆盖率测试,但是它们本身并不包含测试技术,只是测试技术有效性的一个度量。白盒测试中经常用到的覆盖率是逻辑覆盖率。 二、覆盖率的目的 覆盖率对于软件测试有着非常重要的作用,通过覆盖率我们可以知道我们的测试是否充分,我们测试的弱点在哪些方面,进而指导我们设计能够增加覆盖率的测试用例,有
2015-09-29 18:56:57
4386
原创 sdk测试总结
从1月份开始至4月底,在跟进一个SDK项目,主要负责iOS端的SDK测试,研发过程曲折,延期上线,测试工作量巨大。收获挺大的,在此总结下。 整个项目的进程大致是:① 技术背景宣讲->②技术方案确定->③开发编码(测试准备并行)->④部分方案变更->⑤测试开始测试->⑥开发bugfix->重复③④⑤⑥步骤n次(这次的n有点多)->⑦提供framework包给业务方,配合测试、b
2015-05-13 18:40:19
27249
2
原创 利用XcodeCoverage统计iOS单测覆盖率
最近在做iOS SDK的测试,需要统计framework里单元测试覆盖率,网上搜索了下,基本都是使用XcodeCoverage,但每次执行完测试用例后,要手动切换到文件夹,执行对应脚本生成报表,不是很自动化,后来添加了test的post action,问题解决。步骤如下:1、下载XcodeCoverage,放入与project平级的目录2、复制debug schem
2015-05-11 17:41:16
5352
原创 基于技术方案的用例设计
上一篇介绍了基于需求文档的用例设计,主要是运用了黑盒测试的用例设计方法。之前提到用例在整个项目过程中是动态更新,逐步完善的,经过了需求评审的用例编写后,项目会进行技术方案评审,评审结束后,需要基于技术方案对用例进行一次补充完善。我仍然以登录为例,由于每个开发设计的方案不同,在此列一个大致的通用方案,基于该方案做用例设计,精髓会了,其他的融会贯通。登录成功的时序图如下:
2014-12-23 15:50:46
1404
原创 基于需求文档(PRD)的功能用例设计
上一篇我讲了在项目运行过程中,用例是需要动态更新的。接下来我将结合实例(移动app)讲解在不同的阶段如何设计用例。需求文档(PRD)主要讲述app的某个模块有什么功能,每一项功能的页面展示、页面操作有哪些,不同操作之间的关系是什么。基于PRD的用例设计是使用黑盒测试方法,而我平时主要使用了等价类划分、边界值分析法、状态转换测试、场景测试,操作实践时偏好于将模块分成页面展现、页面操作、接口、异常
2014-12-18 11:48:20
3874
1
原创 用例需要动态设计更新
移动互联网时代,版本快速迭代,不像之前pc时代软件更新慢,更新成本较大,出问题并且修复的代价也很大。移动互联网时代,是允许带着bug上线的,虽然我们评估有些bug对用户影响很大,但有些漏网之鱼的bug却让用户苦不堪言。在分析很多线上问题的原因时,有些是粗心大意,有些是测试未覆盖到,有些是需求理解错误。用例的设计非常重要,且需要在不同的阶段去更新。就以笔者跟进的项目为例,整个项目过程大致分为:需
2014-12-03 15:25:29
1105
转载 iOS开发隐藏键盘方法总结
下面为大家带来我整理总结的几种隐藏键盘的方法。一、隐藏自身软键盘当对于有多个UITextField控件都想通过点击“Return”来隐藏自身软键盘的情况,这时的最好办法是使用Did End on Exit事件。在点击软键盘右下角的“Return”按钮后,会触发该事件。该事件有一个sender参数表示当前文本框,这样便可以编写一个通用的事件处理方法(.m文件)- (I
2014-10-27 15:39:45
844
转载 ios中的几种指令集(armv6、armv7、armv7s、arm64)
目前ios的指令集有以下几种:armv6iPhoneiPhone2iPhone3G第一代和第二代iPod Toucharmv7iPhone4iPhone4Sarmv7siPhone5iPhone5Carm64iPhone5S 机器对指令集的支持是向下兼容的,因此armv7的指令集是可
2014-10-17 17:41:05
2157
转载 理解 Objective-C Runtime
当人们初学 Cocoa/Objective-C 时,Objective-C Runtime 是被忽略的特性之一。原因是 Objective-C(这门语言)很容易在几小时内就熟悉,新学 Cocoa 的人花费他们大部分的时间学习 Cocoa 框架和适应它是如何工作的。然而每个人至少应该知道一些 runtime 的工作细节,需要比知道编译器会把 [target doMethodWith:var1];
2014-10-08 14:26:38
1136
转载 layoutSubviews总结
ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————-- (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————–- (void)setNeedsDisp
2014-09-24 10:43:06
800
原创 检测文件是否存在
echo -n "input your file path:"read filePathecho $filePathif [[ -f $filePath ]]; then#statementsecho "file:\"$filePath\" exists"elseecho "file:\"$filePath\" doesn't exist"fi
2014-09-04 09:17:30
822
原创 通过ipsw控制固定端口的网速
# 限制80端口的下载和上传的网速sudo ipfw pipe 20 config bw 20KBytes/ssudo ipfw pipe 30 config bw 30KBytes/ssudo ipfw add 10 pipe 20 tcp from any to me 80sudo ipfw add 11 pipe 30 tcp from any 80 to me
2014-09-02 17:53:37
784
转载 经营成功的测试生涯
再次转一下这篇文章,常读常新。----------------------参加ChinaTest大会期间,听到的最多的3个问题就是:1.测试行业的前景;2.测试人员的职业规划;3.KPI。对于第一个问题,我是充满信心的。现代的软硬件系统复杂程度正在呈几何速增长,越复杂的系统需要进行测试的强度就会越大,从近几年测试从业人数的猛增就能看出来。在《骇客帝国》那样由人工智能统治人类的世界到
2014-08-20 09:37:02
658
转载 使用Xcode创建Cocoa Touch Static Library(静态库)
首先科普一下静态库的相关知识:程序编译一般需经预处理、编译、汇编和链接几个步骤。对于我们项目中的一些公共代码,如果想要对其进行复用,可以把这些代码编译成一个静态库文件。在链接步骤中,链接器会从库文件中取得对应的代码并生成可执行文件。静态库的执行文件中包含了库中的完整代码,但是多次使用会产生多份冗余拷贝。静态库和动态库的区别在于静态库在链接阶段被复制,与程序的运行阶段无关;动态库在程
2014-06-29 22:35:19
1655
转载 cocoa之动态创建类
今天我们来如何在运行时动态创建类。下面这个函数就是应用前面讲到的Class,MetaClass的概念,在运行时动态创建一个类。这个函数来自《Inside Mac OS X-The Objective-C Programming Language》。#import #import BOOL CreateClassDefinition( const char * n
2014-04-25 10:08:41
741
转载 详解键值观察(KVO)
一,前言Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的。观察者模式较完美地将目标对象与观察者对象解耦。在 Objective-C
2014-04-25 09:52:42
948
转载 事件的响应(UIResponder)、touch、UIGestureRecognizer
ios 中事件的处理接口或者说协议是由UIResponder 定义的。最主要的事件就是touch事件,touch事件是 UIAapplacation 对象 runloop 检测到并封装的。UIApplaction 对象封装好后将事件传递给UIWindeow对象。touch 事件的处理分为两步,第一个步是找到 该touch 所对应的 view,即touch 是那个在那个view上的;第二是步
2014-04-24 17:22:02
1754
转载 NSObject
NSObject是大多数Objective-C类的继承的根类;它没有父类。通过NSObject,其它类继承了一些基础的与Objective-C语言编译器系统之间的接口,并且获得了在它的实例中表现为一个对象的能力。尽管NSObject不是一个严格的抽象类,实际上它已经是一个类。但是通过它自己一个除了表现为一个简单类之外,NSObject实际上几乎无法完成任何有用的操作。为你的程序添加任何属性(a
2014-04-24 16:42:40
656
原创 iOS Local Nitification(本地通知)
iOS 的本地通知(local notification)用于基于时间行为的通知,在iOS4.0后支持,比如有关日历或者 todo 列表的小应用。另外应用如果在后台执行,iOS 允许它在受限的时间内运 行,它也会发现本地通知有用。比如,一个应用在后台运行,向应用的服务器端获取消息,当消息到达时,比如下载更新版本的提示消息,通过本地通知机制通知 用户。对本地通知的数量限制,iOS最多允许最近
2014-04-03 08:59:30
1297
转载 黑盒测试用例设计---因果图法
因果图方法一. 方法简介1.定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。2.因果图法产生的背景:等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视
2014-03-29 20:14:07
2730
转载 iOS push原理浅析
第一部分:Push原理(以下绝大多数内容参考自、图片来自iPhone OS Reference Library)机制简介Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器。 APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,下文统一使用该缩写
2014-03-28 09:43:51
1132
转载 iOS推送机制精简教程
最近在学习iOS的推送机制,包括本地和远程的。今天看到一篇介绍iOS push机制的,比较精简,转载过来。===================================================================================研究了一下Apple Push Notification Service,实现的很简单,很环保.原理如下
2014-03-27 10:04:10
1247
转载 runtime系列学习之iOS runtime
1. 什么是runtime运行时刻是指一个程序在运行(或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为"运行库"。这些实例可以在它们运行的时候被连接或者被任何程序调用。程序员有时候会在什么东西应该在编译的时候加载进来以及什么东西该在运行的时候使用之间做出抉择,前者有时候成为编
2014-03-14 09:33:39
992
原创 runtime系列学习之类与对象的内部结构
要理解runtime,首先我们要了解类和对象的内部结构,下面将首先介绍下OC中类与对象的结构层次。 一、首先,从 runtime.h头文件中找到对 class 与 object 的定义/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Rep
2014-03-12 09:35:30
1097
原创 2014年2月总结
3月份已然过去了三分之一,时间哪,才发现我的2月总结真的不能再拖了,hoho在1月份,我就给自己订了个半年计划,需要完成哪些积累,需要完成哪些学习,然后再把一个个目标分解到每个月及每个周,将大目标化为小目标,实现起来就不那么难了。2月份,工作上跟进的项目依旧是iPad3.0项目,开发进度上稍微滞后了些,测试的时候,坚持了走读开发的代码做为测试的一部分,在走读开发代码的时候也发现了部分问题,
2014-03-09 20:14:37
1147
2
原创 .git目录剖析
当从一个空目录创建git项目时,需要执行git init命令,执行完毕后会产生一个名为.git的隐藏目录,查看目录的内容如下:{14-03-02 23:42}tingxuan:~/iOSWorkSpace/UnitDemo/.git@master % ls -F1COMMIT_EDITMSGFETCH_HEADHEADORIG_HEADbranches/conf
2014-03-02 23:48:11
1024
原创 Podfile的详细配置
#限定iOS的固件platform :ios,'5.0'inhibit_all_warnings!#workspace的名字workspace'workspace'#主project的名字xcodeproj'project.xcodeproj'#使用Cocoapods里已有的库pod'CocoaLumberjack', '~> 1.6
2014-03-02 23:16:34
2637
原创 pod命令汇总
最近经常用pod命令,把常用的命令整理了下,如图:如果对某个命令有疑问,加help参数查看详细的使用方法,比如pod install --help
2014-03-02 23:04:30
6213
原创 利用OCMock写单元测试
前一篇文章里,我讲了用GHUnit写iOS单元测试,这篇主要在前一篇的基础上讲利用OCMock写单元测试,工程跟上一篇的demo同一个工程。可以从我的github下载:https://github.com/tingxuan/UnitDemo首先讲下OCMock的背景,OCMock是一个用于建立伪造对象的简单框架,它使用Objective-C的运行时探测(Runtime introspectio
2014-03-02 21:29:44
1841
原创 利用GHUnit编写iOS单元测试
GHUnit是一个开源的objective-c的unit test框架,他比起OCUnit来说,配置简单一些,没有Logic Tests和Application Tests的分别,但使用起来需要第三方库GHUnitIOS.framework的支持。GHUnit有GUI的界面,并非仅仅能看到log文件,比较直观,编写test case和OCUnit没有太多的区别。言规正传,下面就来看如何使用
2014-03-02 20:44:42
1418
转载 教你在mac上面创建可执行脚本文件
由于iphone的成功,用mac os的朋友也越来越多,创建批处理脚本文件还是非常重要的。由于在mac下面创建脚本文件和windows下面大不一样,于是写篇博文纪录一下。首先需要一个文本编辑工具,可以下载vim编辑器(下载地址http://code.google.com/p/macvim/),也可以用系统自带的文本编辑器,在里面输入代码。[plain] view p
2014-02-27 21:47:31
2788
转载 NSFileManager
NSFileManager判断一个给定路劲是否为文件夹[self.fileManagerfileExistsAtPath:isDirectory:];用于执行一般的文件系统操作 (reading and writing is done via NSData, et. al.).主要功能包括:从一个文件中读取数据;向一个文件中写入数据;删除文件;复制文件;移动文件;比较两个文件的
2014-02-16 20:10:04
852
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人