IOS连接测试工具tidevice

2,041 阅读2分钟

tidevice相当于iOS界的adb,

用法和adb相似,

是阿里一个开源工具~

开源地址:

gitee.com/mirrors/tid…

一、适用端

  • Mac

  • Linux

  • Windows

二、环境准备

  • Python 3.6+

    图片

  • pip3 install -U tidevice

  • windows需安装iTunes

三、常用命令

  • 查看tidevice版本:tidevice -v

    图片

    ps:成功显示的话证明tidevice安装成功

  • 配对设备:tidevice pair

    image.png

    ps:由于现在手里没有ios设备,

    所以没有匹配到设备,

    下面的命令大家可以拿自己的测试机试试

  • 取消配对设备:tidevice unpair

  • 应用安装:tidevice install example.ipa

  • 应用卸载:tidevice uninstall example.ipa

  • 查看连接设备:tidevice list

  • 应用启动:

    tidevice launch com.apple.Preferences

  • 停止应用:

    tidevice kill com.apple.Preferences

  • 查看包名:tidevice applist

  • 查看运行中的应用:tidevice ps

  • 查看目录文件:tidevice fsync +目录路径

  • 支持文件相关操作:pull、push、rm、cat、stat、tree、rmtree、mkdir

  • 获取crash日志:

    tidevice crashreport [-h] [--list] [--keep] [--clear] [output_directory]

  • 重启:tidevice reboot

  • 截图:tidevice screenshot screenshot.jpg

  • 输出日志:tidevice syslog

  • 杀进程:tidevice kill +pid

  • 获取页面fps:tidevice dumpfps

  • 获取性能信息:tidevice perf -B +包名

    支持:cpu、memory、fps、network

  • 其他命令:tidevice -h

四、支持当作python库调用

下图是通过tidevice去打开app并且对其动作进行性能数据输出

图片

五、流量统计

流量测试需要测试一段时间或一个操作的耗流,所以单从控制台输出很难看出整体数据,
利用python写了个脚本统计,支持:
1、通过修改时间测试不同时间需求流量统计
2、通过计算获取每个操作后的流量统计

import sys
import os
import time
import subprocess

def flowsum(testtime):
    #修改为测试包包名
    order = "tidevice perf -B com.xx.xxx"
    pi = subprocess.Popen(order, shell=True, stdout=subprocess.PIPE)
    num = 0
    result = []
    start_t = time.time()
    dfsum = 0
    upfsum = 0

    for i in iter(pi.stdout.readline, 'b'):
        if testtime!=0:
            # 测试5,30min耗流
            if '"network {' in str(i):
                print(i)
                now_t = time.time()
                t = now_t-start_t
                print(t)
                if t < (testtime*60):
                    num = num+1
                    if 'down' in str(i):
                        alltype = str(i).split("downFlow':")[1].split("}")[0]
                        # print(alltype)
                        time.sleep(3)
                        upflow = alltype.split("'upFlow': ")[1]
                        dwflow = alltype.split(", 'upFlow'")[0]
                        dfsum = dfsum + float(dwflow)
                        upfsum = upfsum + float(upflow)
                    else:
                        continue
                else:
                    pi.kill()
                    break

        #测试操作耗流
        elif num < 10:
            if '"network {' in str(i):
                print(i)
                if 'down' in str(i):
                    alltype = str(i).split("downFlow':")[1].split("}")[0]
                    # print(alltype)
                    time.sleep(3)
                    upflow = alltype.split("'upFlow': ")[1]
                    dwflow = alltype.split(", 'upFlow'")[0]
                    dfsum = dfsum + float(dwflow)
                    upfsum = upfsum + float(upflow)
                    num = num + 1
        else:
            pi.kill()
            break
    print(f"上行总耗流:{upfsum:.2f}, 下行总耗流:{dfsum:.2f}")



if __name__ == '__main__':
    #传入需要测试的时间,如测试操作耗流传0即可
    flowsum(0)

六、Mac环境下的一些踩坑总结

python版本要3.6+以上,配置python环境变量如下:
1、终端打开环境变量配置文件:vi ~/.bash_profile
2、添加python的bin目录:
export PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:{PATH} 
ps:每个人的python目录不一样,所以要找到自己的目录添加  
3、输入i进入编辑模式,添加目录后点击”esc“退出后,输入:wq保存修改  
使环境变量配置立即生效:source ~/.bash_profile

执行tidevice相关命令如有以下模块缺失的报错, 图片
可通过命令安装: pip3 install pyOpenSSL pyasn1