iOS 内存优化之appium自动化归因 [复制链接]
发表于 2025-7-25 21:58:30 | 显示全部楼层 |阅读模式
📝 口试求职: 「口试试题小程序」内容涵盖 测试基础、Linux操纵系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相干、性能测试、性能测试、计算机网络知识、Jmeter、HR口试,掷中率杠杠的。(大家刷起来…)
📝 职场履历干货:
软件测试工程师简历上如何编写个人信息(一周8个口试)
软件测试工程师简历上如何编写专业技能(一周8个口试)
软件测试工程师简历上如何编写项目履历(一周8个口试)
软件测试工程师简历上如何编写个人荣誉(一周8个口试)
软件测试行情分享(这些都不相识就别贸然冲了.)
软件测试口试重点,搞清晰这些轻松拿到年薪30W+
软件测试口试刷题小程序免费使用(永久使用)

01 前言

本文将重点报告使用appium
+python对iOS项目在模仿器环境上进行自动化UI测试.并在测试用例结束时,通过leaks工具导出内存图文件,加以分析,来诊断当前应用程序是否存在内存题目.
02 安装环境

留意对齐版本,版本不一致可能会导致脚本执行失败.
1.安装v2.11.4版本的appium

  1. npm install -g appium
  2. @2.11.4
复制代码
2.安装v4.24.0版本的selenium
  1. pip3 install selenium==4.24.0
复制代码
3.安装v4.1.0版本的Appium-Python-Client
  1. pip3 install Appium-Python-Client==4.1.0
复制代码
4.安装v7.27.0版本的xcuitest
  1. appium
  2. driver install xcuitest@7.27.0
复制代码
python包发起使用虚拟环境安装
03 脚本模板

  1. from appium
  2. import webdriver
  3. from appium
  4. .options.ios import XCUITestOptions
  5. from appium
  6. .webdriver.common.appium
  7. by import AppiumBy
  8. from selenium.webdriver.support.ui import WebDriverWait
  9. from selenium.webdriver.support import expected_conditions as EC
  10. from selenium.common.exceptions import NoSuchElementException
  11. import time
  12. import subprocess
  13. import os
  14. cur_dirctory = os.getcwd()
  15. app_name = "MemoryGraphDemo"
  16. output_dir =  f"{cur_dirctory}/output"
  17. app_file_path = f"{cur_dirctory}/app/{app_name}.app"
  18. def init_driver():
  19.    
  20.     options = XCUITestOptions()
  21.     options.device_name = 'iPhone 16 Pro'
  22.     options.platform_version = '18.0'
  23.     options.app = app_file_path
  24.     options.automation_name = 'XCUITest'
  25.     options.process_arguments = {'env': {'MallocStackLogging': 'YES'}}
  26.     # 配置WDA端口 (可选)
  27.     options.set_capability('wdaLocalPort', 8100)
  28.     options.set_capability('noReset', False)
  29.     options.set_capability('newCommandTimeout', 300)
  30.     driver = webdriver.Remote('http://localhost:4723', options=options)
  31.     return driver
  32. def export_memory_graph():
  33.     subprocess.run(f"leaks MemoryGraphDemo -outputGraph '{output_dir}/{app_name}'", shell=True)
  34.    
  35.    
  36. def click(driver, name):
  37.     element = driver.find_element(AppiumBy.NAME, name)
  38.     element.click()
  39.    
  40. def test(driver):
  41.   # UI测试用例
  42.     time.sleep(1)
  43.     click(driver, "登录")
  44. def analysis():
  45.     subprocess.run(f"leaks {output_dir}/{app_name}.memgraph -quiet > {output_dir}/analysis.txt", shell=True)
  46. def main():
  47.     driver = init_driver()
  48.    
  49.     try:
  50.         test(driver)
  51.         export_memory_graph()
  52.         analysis()
  53.      
  54.     finally:
  55.         driver.quit()
  56.         
  57. if __name__ == "__main__":
  58.     main()
复制代码
04 脚本分析

app_name
测试项目的二进制名称.
按需修改为本身测试的app名称
output_dir
内存图文件、分析结果输出目录.
目标目录必要存在
app_file_path
项目的编译产物…app文件.可通过Xcode在文件目录中Products文件夹下找到.


options.device_name
运行脚本的模仿器器设备名称.可通过xcrun simctl list命令查看模仿器列表
options.platform_version
运行脚本的模仿器设备系统版本
options.set_capability(‘noReset’,True)
每次执行脚本是否重启app项目
options.process_arguments={‘env’:{‘MallocStackLogging’:‘YES’}}
使leaks工具纪录对象创建的堆栈信息
test(driver)
对项目执行的测试用例.比如,完整的订单流程、下单、接单、发货等自动化UI测试流程
export_memory_graph()
使用 leaks 工具将内存图xxx.memgraph文件导出到 output_dir 目录下.
analysis()
对导出的xxx.memgraph文件进行分析.并将结果analysis.txt文件输出到 ouput_dir 目录下
  1. man leaks
  2. > If the MallocStackLogging environment variable was set when the application was launched, leaks also prints a stack trace describing where the buffer was allocated.
复制代码
05 Demo

1. clone项目
  1. git clone https://github.com/tuyuwang/MemoryGraphDemo.git
复制代码
2. 按默认设置启动appium

  1. appium
复制代码
3. 另启一个终端将切换路径到
MemoryGraphDemo/Scripts目录下
  1. cd MemoryGraphDemo/Scripts
复制代码
4. 运行appium
_leak.py脚本文件

  1. python3 MemoryGraphDemo/Scripts/appium
  2. _leak.py
复制代码
5. 查看分析结果
  1. cat MemoryGraphDemo/Scripts/output/analysis.txt
复制代码
以下是该demo的完整流程视频演示:


最后: 下方这份完整的软件测试视频教程已经整理上传完成,必要的朋友们可以自行领取 【包管100%免费】



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表