移动性能测试 Appium+python 在测试场景中的应用

tql · 2016年07月14日 · 最后由 cloudwind 回复于 2016年07月29日 · 2943 次阅读

测试中经常需要测试 App 在手机上兼容性与功能(由于 App 通过蓝牙与设备通讯,不能云测,全部真机测试),App 提供了读写数据速度与签名耗时功能,有四种不同设备,这样采集数据有 n(手机) X 4(设备) X 3(读速度/写速度/签名耗时),手机量大,如果全手动测试慢不说,还很枯燥,之前测过 100 多台手机,由于一直盯着手机按键和设备,脖子就会痛。
这里有个背景就是 App 扫描连接到设备后,其它手机 App 将扫描不到, 构想是使用 Appium+python,创建一个线程类来测试,设计每个线程测试一台手机,这样应该可以至少节省 1/3 时间。

由于不同线程一起执行安装软件,所有操作目录文件都一样,先后不一,导致文件被重写,这样导致混乱,所以在安装软件做了加锁操作,应该对临时目录设置 guid 这样就不会有问题,以后修改源码试试

class TestApp(threading.Thread):
      ###############
      # 每一台手机对应一个Appium进程,每个进程设置不同端口号
      #udid 手机的udid,udid由于经常用到,所以获取手机udid函数写在一个单独py中,使用时import就可以了
      # model 手机型号
      # kesSN 设备序列号数组,
      # port 

     def __init__(self, udid, modle, keySN, port='http://localhost:4723/wd/hub'):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['deviceName'] = modle
        desired_caps['udid'] = udid
        desired_caps['appPackage'] = 'com.es.estestesmobile'
        desired_caps['appActivity'] ='.connect.TestActivity'
        desired_caps['app'] = 'C:\Python27\xxxxxx.apk'
        desired_caps['unicodeKeyboard'] = True
        desired_caps['resetKeyboard'] = True
        self.keySNS = deepcopy(keySN)
        self.modle = modle
        self.port = port
        self.desired_caps = desired_caps
        threading.Thread.__init__(self)
        self.driver = None
        self.phoneUdid = udid
#codeing=utf-8
# 获取udid模块,返回是个字典形式
#return phone info(uuid,model) or False

import os
import re
def getPhoneInfo():
    dict = {}
    os.system('adb devices -l > devices.txt')
    fp = open('devices.txt', 'r+')
    text = fp.readlines()
    if len(text) < 3:
        return False
    for el in text[1:-1]:
        list = re.split(' |:',el)
        if len(list) < 4:
            continue
        if list[-3] == '':
            dict[list[0]] = os.popen('adb -s'+' '+list[0]+' shell getprop ro.product.model').readlines()[0]
        else:
            dict[list[0]] = list[-3]
    if len(dict) == 0:
        return False
    return dict 

def test():
    keySN = ['229200000006','229000000007','229400000005','229700000004']
    ports = ['http://localhost:%d/wd/hub'%x  for x in range(4723, 4739, 2)]
    phoneInfo = Function.getPhoneInfo()
    testThreadNum = min(len(keySN), len(ports), len(phoneInfo))
    i = 0
    for k,v in phoneInfo.iteritems():
        TestApp(k, v, keySN,ports[i]).start()
        i = i + 1
        if(i > testThreadNum):
            break   

并将采集的数据填入 excel 表格 (使用 xlrd,xlutil),截取一部分数据

再使用 pychartdir 将采集数据绘制成图表

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 10 条回复 时间 点赞
恒温 内容不符合版规屏蔽此话题 07月14日 07:44

把问题描述清楚。

tql #9 · 2016年07月14日 Author

不好意思,昨天太晚了,保存今天再写

tql #8 · 2016年07月14日 Author

#2 楼 @lihuazhang 编辑好了

tql #7 · 2016年07月14日 Author

#2 楼 @lihuazhang 感谢社区推广 appium 工具

tql #6 · 2016年07月14日 Author

@monkey @seveniruby 编辑好了,麻烦帮我审核下哦,顺便指点一下👏

tql #5 · 2016年07月15日 Author

@seveniruby @monkey @lihuazhang 麻烦审核一下😂 😂

pychartdir 很高大上,青年

tql #3 · 2016年07月26日 Author

#8 楼 @mads 常用?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册