📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
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%免费】