iOS 内存优化之appium自动化归因

📝 面试求职: 「面试试题小程序」内容涵盖 测试基础、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

npm install -g appium@2.11.4

2.安装v4.24.0版本的selenium

pip3 install selenium==4.24.0

3.安装v4.1.0版本的Appium-Python-Client

pip3 install Appium-Python-Client==4.1.0

4.安装v7.27.0版本的xcuitest

appium driver install xcuitest@7.27.0

python包建议使用虚拟环境安装

03 脚本模板

from appium import webdriver
from appium.options.ios import XCUITestOptions
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
import time
import subprocess
import os

cur_dirctory = os.getcwd()
app_name = "MemoryGraphDemo"
output_dir =  f"{cur_dirctory}/output"
app_file_path = f"{cur_dirctory}/app/{app_name}.app"

def init_driver():
    
    options = XCUITestOptions()

    options.device_name = 'iPhone 16 Pro'
    options.platform_version = '18.0'
    options.app = app_file_path
    options.automation_name = 'XCUITest'

    options.process_arguments = {'env': {'MallocStackLogging': 'YES'}}

    # 配置WDA端口 (可选)
    options.set_capability('wdaLocalPort', 8100)
    options.set_capability('noReset', False)
    options.set_capability('newCommandTimeout', 300)

    driver = webdriver.Remote('http://localhost:4723', options=options)
    return driver

def export_memory_graph():
    subprocess.run(f"leaks MemoryGraphDemo -outputGraph '{output_dir}/{app_name}'", shell=True)
    
    
def click(driver, name):
    element = driver.find_element(AppiumBy.NAME, name)
    element.click()
    

def test(driver):
  # UI测试用例
    time.sleep(1)
    click(driver, "登录")

def analysis():
    subprocess.run(f"leaks {output_dir}/{app_name}.memgraph -quiet > {output_dir}/analysis.txt", shell=True)

def main():
    driver = init_driver()
    
    try:
        test(driver)
        export_memory_graph()
        analysis()
     
    finally:
        driver.quit()
        

if __name__ == "__main__":
    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 目录下

man leaks

> 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项目

git clone https://github.com/tuyuwang/MemoryGraphDemo.git

2. 按默认配置启动appium

appium

3. 另启一个终端将切换路径到

MemoryGraphDemo/Scripts目录下

cd MemoryGraphDemo/Scripts

4. 运行appium_leak.py脚本文件

python3 MemoryGraphDemo/Scripts/appium_leak.py

5. 查看分析结果

cat MemoryGraphDemo/Scripts/output/analysis.txt

以下是该demo的完整流程视频演示:

在这里插入图片描述


最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值