iOS移动应用模拟定位的非侵入式测试方案

简介: iOS移动应用模拟定位的非侵入式测试方案

背景


像饿了么、口碑这样的LBS应用,在平时业务测试过程中经常会遇到需要修改定位信息的时候,有的时候可能修改一下应用内的地址定位即可满足,但有的时候需要mock手机本身的GPS信息,今天来分享一下如何在iOS真机上模拟GPS定位信息。


方案


由于iOS系统获取定位的方式依赖于系统统一接口,所以模拟的位置会在整个手机生效,不过有些应用具有定位矫正功能比如会根据当前网络IP或者其他手段来做校验,这类应用就需要通过内部集成相应的模拟工具来实现了。


Xcode模拟

苹果的Xcode本身就提供了定位的模拟方案,如下先创建一个空的App项目

image.png

然后在根目录下新建一个gpx文件,文件名可以命名为要模拟的地址


image.png


在谷歌或者百度地图上找到你想要模拟位置的经纬度信息

image.png


image.png


将经纬度信息填到gpx文件中即可


image.png


这时候连接真机运行工程,选择对应想要模拟的地址即可


image.png


此时手机上的定位信息以及被修改,随便打开一个地图应用可以看到修改后的位置

image.png

idevicelocation模拟


idevicelocation是一个命令行工具,可以通过USB或者WIFI连接设备然后直接修改定位信息,而且可以很方便的用于自动化。

GitHub地址:https://github.com/JonGabilondoAngulo/idevicelocation


依赖软件


libimobiledevice
libusbmuxd
libplist
openssl
usbmuxd
make
autoheader
automake
autoconf
libtool
pkg-config
gcc


安装


先把GitHub仓库clone下来,然后执行下面的命令:


./autogen.sh
make
sudo make install

这个过程中可能会遇到找不到openssl库的问题以及libimobiledevice的编译错误,可以执行下面的命令来解决:


If the compiler cant find the openssl libs try this:
  export PATH=/usr/local/opt/openssl/bin:$PATH
  export LD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$LD_LIBRARY_PATH
  export CPATH=/usr/local/opt/openssl/include:$CPATH
  export LIBRARY_PATH=/usr/local/opt/openssl/lib:$LIBRARY_PATH
  export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig

brew update 
brew uninstall --ignore-dependencies libimobiledevice 
brew uninstall --ignore-dependencies usbmuxd 
brew install --HEAD usbmuxd 
brew unlink usbmuxd 
brew link usbmuxd 
brew install --HEAD libimobiledevice


完成后既可以在命令行中输入经纬度信息执行:


$ idevicelocation 48.856614 2.3522219000000177
相关文章
|
3月前
|
开发工具 Android开发 iOS开发
Android vs iOS:构建移动应用时的关键考量####
本文深入探讨了Android与iOS两大移动平台在开发环境、性能优化、用户体验设计及市场策略方面的差异性,旨在为开发者提供决策依据。通过对比分析,揭示两个平台各自的优势与挑战,帮助开发者根据项目需求做出更明智的选择。 ####
|
4月前
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
237 4
Android性能测试——发现和定位内存泄露和卡顿
|
3月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
127 0
|
5月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
202 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
4月前
|
缓存 监控 算法
软件测试中的性能瓶颈定位与优化策略
性能瓶颈,如同隐藏在系统深处的“拦路虎”,悄无声息地制约着软件的表现。本文将揭示如何通过一系列科学方法,识别并消除这些障碍,从而显著提升软件性能,确保用户享受到流畅无阻的数字体验。
|
5月前
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
482 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
|
5月前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
195 0
|
5月前
|
Android开发 iOS开发 C#
Xamarin.Forms:从零开始的快速入门指南——打造你的首个跨平台移动应用,轻松学会用C#和XAML构建iOS与Android通用界面的每一个步骤
【8月更文挑战第31天】Xamarin.Forms 是一个强大的框架,让开发者通过单一共享代码库构建跨平台移动应用,支持 iOS、Android 和 Windows。使用 C# 和 XAML,它简化了多平台开发流程并保持一致的用户体验。本指南通过创建一个简单的 “HelloXamarin” 应用演示了 Xamarin.Forms 的基本功能和工作原理。
118 0
|
5月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
17天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
66 11