iOS 应用测试最佳实践
IOS改变了移动游戏,毫无疑问。它为“移动时代”铺平了道路,通过简单的用户体验提供惊人的功能。然而涉及到测试与监控,使用iPhone/iPad移动应用程序是除了简单之外的任何事情。
随着IOS应用市场持续生产记录增长,围绕着iOS应用测试的挑战与复杂性也继续干扰发展。IOS测试的一个关键挑战就是,不像开源的Android系统,苹果的IOS是一个封闭的操作系统。在开发与测试阶段增加的复杂性也就发生在了这样一个封闭的系统。因为用户无法从低级对象中提取必要的数据,而这对测试自动化来说是必不可少的。所以,获取IOS设备必须的访问级别的最佳方式是什么呢?- 越狱还是编译时源仪器呢?你应该基于本地对象测试还是基于OCR屏幕分析呢?
让我们来深入观察其中一些挑战,为了给开发与测试人员提供必要的覆盖、容量与灵活度以交付更好的iOS应用并有信心地部署它们,为什么基于云的混合方法是重要的。
系统最高权限(越狱) vs. 源仪表(编译时)
在今天的移动测试行业有两种常用的方法来解决这个挑战(即访问低级对象):获取系统最高权限(越狱)与源仪表(即编译时解决方案)。
越狱是指去除由苹果放置于iOS设备上权限的过程,为了获取低级别(根)访问操作系统。这就使得测试者能够识别应用程序内被测的对象。
源仪表是通过用一段提供访问(“后门”)低级操作系统进行目标识别的代码来编译被测应用程序执行的。这个代码运行测试人员执行低级别调用,并取得操作系统的对象IDs(没有必要获取最高权限或越狱设备)。
决定通过采取什么方法强烈依赖于几个因素(下面只是一部分):
1)使用软件开发生命周期流程(SDLC process)
2)公司政策
3)被测应用程序
4)测试频率
Perfecto Mobile应用提供其终端用户自由选择适合他们的应用程序,考虑到每种方法的优缺点。当客户要求快速测试一个iOS应用的新版本或者新的iOS设备时,越狱方法就不太合适。在这种情况下,编译时方法是可取的——即使它通过引入附加代码到被测应用程序使得SDLC流程更加复杂。
另一方面,使用越狱设备让你测试将被发布的精确代码(编译时则在商店提交前管制了这个,你要么移除“后门”,要么就暴露在严重的安全问题下)。这消除了编译与入侵操作的需要,而这些有可能带来潜在的质量风险。使用编译时方法的公司也应该考虑可能的法规(比如HIPPA)在最后一个二进制上执行测试(而不是在调试版本,测试友好版本,等等)。
混合方法让你选择在哪种iOS设备上执行哪种测试,根据应用程序的性质、项目需求与政策。当测试设备被部署和安全管理在一个“私有云”(比如由Perfecto Mobile提供的),这样一种配置就保证越狱方法不会引入任何风险或非测试目的进行的平台的滥用。越狱设备仅仅在一个封闭而安全的测试环境下为测试目的而使用,这与开发时使用iOS设备都需有个“开发者证书”是类似的。同样使用Android设备开发拥有比那些普通ALM周期中所需的更多访问级别也是一样。
对象识别的混合方法需求
测试移动应用需要强大的对象识别能力。可视化分析可能是不够充分的,例如,OCR技术能检测测试设备上的UI问题与故障,但不能保证100%的精准由于其启发式特性。另外,低级别对象可能“错过”可视化分析很容易就检测到的明显资格。这就是为什么可视化分析与本地对象分析的结合势在必行,来覆盖所有移动业务案例。这种方法是被Perfecto Mobile所支持的。
对象级别分析vs.视觉分析
对象级别分析不会检测到文本上按钮的重叠。
Perfecto Mobile方法:云,混合
Perfecto Mobile作为一个市场领头人的经验告诉我们,最好的方式就是向每个客户展示所有可能的方案使之在云端使用。
iOS 应用测试最佳实践的更多相关文章
- iOS应用开发最佳实践
<iOS应用开发最佳实践> 基本信息 作者: 王浩 出版社:电子工业出版社 ISBN:9787121207679 上架时间:2013-7-22 出版日期:2013 年8月 开本:16 ...
- CODING DevOps 线下沙龙回顾二:SDK 测试最佳实践
讲师:潘志刚 声网质量效能部门负责人,超过 14 年服务器.移动终端.音视频编解码以及汽车电子等跨行业从业经历,负责建立测试基础架构和自动化测试方案,主持搭建持续集成测试生态体系.现任声网质量效能部门 ...
- [翻译] API测试最佳实践 - 身份验证(Authentication)
API测试最佳实践 - 身份验证 适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了 ...
- iOS应用开发最佳实践:编写高质量的Objective-C代码
本文转载至 http://www.cocoachina.com/industry/20131129/7445.html 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问 ...
- API测试最佳实践 - 身份验证
适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了,他将被授权访问那些期待访问的资源 ...
- iOS应用开发最佳实践系列一:编写高质量的Objective-C代码
本文由海水的味道编译整理,转载请注明译者和出处,请勿用于商业用途! 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法. 良好的 ...
- [翻译] API测试最佳实践 - 组织你的测试
组织你的测试 适用级别:初学者 在最底层,一个测试步骤(Test Step)用来验证一个单独的操作.组合若干测试步骤到测试用例,允许你验证那些被分隔出来的一个一个的功能,这些功能是应用程序所需要的.接 ...
- 【巨杉数据库SequoiaDB】巨杉Tech | 分布式数据库Sysbench测试最佳实践
引言 作为一名DBA,时常需要对某些数据库进行一些基准测试,进而掌握数据库的性能情况.本文就针对sysbench展开介绍,帮助大家了解sysbench的一般使用方法. sysbench简介 什么是 ...
- CI Weekly #18 | flow.ci iOS 最佳实践出炉,正式支持 Git@OSC 构建
如大家所期待,flow.ci 现已支持开源中国的代码仓库 - 码云,可以直接构建 Git@OSC 的项目了,点击创建项目-选择代码仓库-选择码云-绑定 OSChina 账户-选择要构建项目,教程看这里 ...
随机推荐
- Ormlite or()的使用
如题,由于不熟悉这个框架的API,所以用的时候出错了,直接上代码 public List<Type> getAllBetweenDate(String start, String end) ...
- C# 调用Webservice并传递序列化对象
原文:C# 调用Webservice并传递序列化对象 C#动态调用WebService注意要点 1.动态调用的url后面注意一定要加上?WSDL 例如:string _url = "ht ...
- EasyUI的后台界面
EasyUI的后台界面搭建及极致重构 〇.前言 要了解一个东西长什么样,至少得让我们能看到,才能提出针对性的见解.所以,为了言之有物,而不是凭空漫谈,我们先从UI说起,后台管理页面的UI我们将使用应用 ...
- IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统
原文:IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统 asp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的 ...
- SQL点滴24—监测表的变化
原文:SQL点滴24-监测表的变化(转载) 在网上看到一篇关于监测表中的插入,更新,删除的方法,使用触发器实现的,很有价值. 地址:http://www.dbaunion.com/u/livecoac ...
- IOS开发苹果官方Sample Code及下载地址
IOS开发苹果官方Sample Code及下载地址 在线浏览地址:https://developer.apple.com/library/ios/navigation/#section=Resourc ...
- android项目--上下文菜单
一般说到上下文菜单基本上都是长按事件,在一个控件上长按,就会弹出一个菜单. 1.创建上下文菜单: //覆盖方法,创建上下文菜单 @Override public void onCreateContex ...
- svn外网访登录不进去提示证书错误Authorization Required
为了外网能访问内网svn.于是坐在外网端口映射.但是奇怪的是内网能访问,外网总也登录不进去.以为是浏览器版本低 但是其他浏览器也一样.最后客户端也登录不进去.提示报错: Authorization ...
- “String.h” 源代码总结
<String.h> 总结: 常用的函数: 一.memchr: 说明:当第一次遇到字符ch时停止查找.如果成功,返回指向字符ch的指针:否则返回NULL. 代码: #include ...
- T4 Template Overview
T4 Template Overview T4 Template的组成 指令区:为模板转换引擎提供指令,控制模板如何被处理 template:模板相关的属性,debug是否可以调试:hos ...