def mkdirInit(devices, app, data=None): # destroy(devices) cpu = PATH("./info/" + devices + "_cpu.pickle") men = PATH("./info/" + devices + "_men.pickle") flow = PATH("./info/" + devices + "_flow.pickle") battery = PATH("./info/" + devices + "_battery.pickle") fps = PATH("./info/" + devices + "_fps.pickle") app[devices] = { "cpu": cpu, "men": men, "flow": flow, "battery": battery, "fps": fps, "header": get_phome(devices) } OperateFile(cpu).mkdir_file() OperateFile(men).mkdir_file() OperateFile(flow).mkdir_file() OperateFile(battery).mkdir_file() OperateFile(fps).mkdir_file() OperateFile( PATH("./info/sumInfo.pickle")).mkdir_file() # 用于记录是否已经测试完毕,里面存的是一个整数 OperateFile( PATH("./info/info.pickle")).mkdir_file() # 用于记录统计结果的信息,是[{}]的形式 writeSum(0, data, PATH("./info/sumInfo.pickle")) # 初始化记录当前真实连接的设备数
def mkdirInit(devices, app, data=None): # destroy(devices) print 'devices:', devices bflag = False # if ':'in devices: # print '替换 :' # bflag=True # devices1=devices # devices=devices.replace(':', ' ') #device 包含':' ,无法写入文件名,因为文件名不能有特殊符号 cpu = PATH("./info/" + devices + "_cpu.pickle") men = PATH("./info/" + devices + "_men.pickle") flow = PATH("./info/" + devices + "_flow.pickle") battery = PATH("./info/" + devices + "_battery.pickle") fps = PATH("./info/" + devices + "_fps.pickle") # if bflag : # devices =devices1 app[devices] = { "cpu": cpu, "men": men, "flow": flow, "battery": battery, "fps": fps, "header": get_phome(devices) } OperateFile(cpu).mkdir_file() OperateFile(men).mkdir_file() # ???? OperateFile(flow).mkdir_file() OperateFile(battery).mkdir_file() OperateFile(fps).mkdir_file() OperateFile( PATH("./info/sumInfo.pickle")).mkdir_file() # 用于记录是否已经测试完毕,里面存的是一个整数 OperateFile( PATH("./info/info.pickle")).mkdir_file() # 用于记录统计结果的信息,是[{}]的形式 # print "1111111" writeSum(0, data, PATH("./info/sumInfo.pickle")) # 初始化记录当前真实连接的设备数
def start(device): devices = device["devices"] try: num = device["match_num"] app = {} mkdirInit(devices, app, num) # mc = BaseMonkeyConfig.monkeyConfig(PATH("./monkey.ini")) mc = BaseMonkeyConfig.monkeyConfig("./monkey.ini") # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 if not os.path.exists('./monkey_log'): os.mkdir('./monkey_log') mc["log"] = PATH("./monkey_log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey(devices, "adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_flow(pid, mc["net"], devices) BaseMonitor.get_battery( devices) # 上方的beforeBattery和下方afterBattery会使电量列多两行,后面再优化 if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() # print(str(devices) + "测试完成!") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) # subprocess.Popen("taskkill /f /t /im adb.exe", shell=True) shutil.rmtree((PATH("./info/"))) # 删除持久化目录 path = os.path.abspath('./') print("\n" + '{0:*^79}'.format('测试完成!') + '\n{0:*^79}'.format('测试报告:' + path)) except: print('>>>Stopping monkey process...') stop_monkey(devices)
def Create_pickle(dev, app, data): print("创建持久性文件...") cpu = PATH("./info/" + dev + "_cpu.pickle") men = PATH("./info/" + dev + "_men.pickle") flow = PATH("./info/" + dev + "_flow.pickle") battery = PATH("./info/" + dev + "_battery.pickle") fps = PATH("./info/" + dev + "_fps.pickle") time.sleep(2) app[dev] = { "cpu": cpu, "men": men, "flow": flow, "battery": battery, "fps": fps, "header": get_phone(dev) } OperateFile(cpu).mkdir_file() OperateFile(men).mkdir_file() OperateFile(flow).mkdir_file() OperateFile(battery).mkdir_file() OperateFile(fps).mkdir_file() OperateFile( PATH("./info/sumInfo.pickle")).mkdir_file() # 用于记录是否已经测试完毕,里面存的是一个整数 OperateFile( PATH("./info/info.pickle")).mkdir_file() # 用于记录统计结果的信息,是[{}]的形式 writeSum(0, data, PATH("./info/sumInfo.pickle")) # 初始化记录当前真实连接的设备数
def start(devicess): devices = devicess["devices"] num = devicess["num"] app = {} mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) print 'start------------123' while True: with open(mc["monkey_log"], 'a+') as monkeylog: time.sleep(1) # 每1秒采集检查一次 print "star()----1" BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) print "mc vm :", mc["vm"] BaseMonitor.get_flow(pid, mc["vm"], devices) # 获取流量 BaseMonitor.get_battery(devices) bflag1 = (monkeylog.read().count('Monkey finished') > 0) bflag2 = (monkeylog.read().count('Monkey aborted due to error') > 0) if bflag1 or bflag2: endtime = datetime.datetime.now() print(str(devices) + "测试完成咯") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) # 这里有问题 subprocess.Popen("taskkill /f /t /im adb.exe", shell=True) # shutil.rmtree((PATH("./info/"))) # 删除持久化目录 print("------来吧------")
def start(devicess): devices = devicess["devices"] print(devices) num = devicess["num"] print(num) app = {} print(app) mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_flow(pid, mc["net"], devices) BaseMonitor.get_battery(devices) if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() print(str(devices) + "测试完成咯") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
def mkdirInit(devices, app, data=None): # destroy(devices) cpu = PATH("./info/" + devices + "_cpu.pickle") men = PATH("./info/" + devices + "_men.pickle") flow = PATH("./info/" + devices + "_flow.pickle") battery = PATH("./info/" + devices + "_battery.pickle") fps = PATH("./info/" + devices + "_fps.pickle") app[devices] = {"cpu": cpu, "men": men, "flow": flow, "battery": battery, "fps": fps, "header": get_phome(devices)} OperateFile(cpu).mkdir_file() OperateFile(men).mkdir_file() OperateFile(flow).mkdir_file() OperateFile(battery).mkdir_file() OperateFile(fps).mkdir_file() OperateFile(PATH("./info/sumInfo.pickle")).mkdir_file() # 用于记录是否已经测试完毕,里面存的是一个整数 OperateFile(PATH("./info/info.pickle")).mkdir_file() # 用于记录统计结果的信息,是[{}]的形式 writeSum(0, data, PATH("./info/sumInfo.pickle")) # 初始化记录当前真实连接的设备数
def start(devicess): devices = devicess["devices"] num = devicess["num"] app = {} mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) # 打开想要的activity # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等 # monkey开始测试 mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4()) mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_flow(pid, mc["net"], devices) BaseMonitor.get_battery(devices) if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() print(str(devices)+"测试完成咯") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices] ["header"]["beforeBattery"] = beforeBattery app[devices]["header"]["afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str((endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒" # report(go.info) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
def start(devicess): devices = devicess["devices"] num = devicess["num"] app = {} mkdirInit(devices, app, num) mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini")) now = datetime.datetime.now().strftime('%b-%d-%Y-%H-%M-%S') mc["log"] = PATH("./log") + "\\" + now mc["monkey_log"] = mc["log"] + "monkey.log" mc["cmd"] = mc['cmd'] + mc["monkey_log"] start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"]) time.sleep(1) starttime = datetime.datetime.now() pid = BaseMonitor.get_pid(mc["package_name"], devices) cpu_kel = BaseMonitor.get_cpu_kel(devices) beforeBattery = BaseMonitor.get_battery(devices) while True: with open(mc["monkey_log"], encoding='utf-8') as monkeylog: time.sleep(1) # 每1秒采集检查一次 BaseMonitor.cpu_rate(pid, cpu_kel, devices) BaseMonitor.get_men(mc["package_name"], devices) BaseMonitor.get_fps(mc["package_name"], devices) BaseMonitor.get_battery(devices) if monkeylog.read().count('Monkey finished') > 0: endtime = datetime.datetime.now() print(str(devices) + "测试完成") writeSum(1, path=PATH("./info/sumInfo.pickle")) app[devices]["header"]["beforeBattery"] = beforeBattery app[devices]["header"][ "afterBattery"] = BaseMonitor.get_battery(devices) app[devices]["header"]["net"] = mc["net"] app[devices]["header"]["monkey_log"] = mc["monkey_log"] app[devices]["header"]["time"] = str( (endtime - starttime).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break if readInfo(PATH("./info/sumInfo.pickle")) <= 0: print(readInfo(PATH("./info/info.pickle"))) report(readInfo(PATH("./info/info.pickle"))) subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
def start(dev): rt = os.popen('adb devices').readlines() # os.popen()执行系统命令并返回执行后的结果 num = len(rt) - 2 print(num) app = {} Create_pickle(dev, app, num) """os.popen("adb kill-server") os.popen("adb start-server") time.sleep(5)""" #手动测试部分(手动测试性能数据统计),直接杀掉app进程即可结束测试统计(备注:操作过程中请不要杀掉app进程,否则测试终止) """signal = input("现在是手动测试部分,是否要开始你的测试,请输入(y or n): ") if signal == 'y': print("测试即将开始,请打开需要测试的app并准备执行您的操作....") time.sleep(5) path_log = Config.log_location + dev device_dir = os.path.exists(path_log) if device_dir: print("日志文件目录log已存在,继续执行测试!") else: os.mkdir(path_log) # 按设备ID生成日志目录文件夹 run_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())) # logcat日志 logcat_log = path_log + "\\" + run_time + "logcat.log" cmd_logcat = "adb -s " + dev + " logcat > %s" % (logcat_log) os.popen(cmd_logcat) # print("logcat 命令:", cmd_logcat) # "导出traces文件" traces_log = path_log + "\\" + run_time + "traces.log" cmd_traces = "adb -s " + dev + " shell cat /data/anr/traces.txt > %s" % traces_log os.popen(cmd_traces) # print("traces 命令:", cmd_traces) time.sleep(2) start_time = datetime.datetime.now() pid = BaseMonitor.get_pid(Config.package_name, dev) cpu_kel = BaseMonitor.get_cpu_kel(dev) beforeBattery = BaseMonitor.get_battery(dev) print("测试前电量", beforeBattery) try: while True: time.sleep(1) # 每1秒采集一次 print("----------------数据采集-----------------") BaseMonitor.cpu_rate(pid, cpu_kel, dev) BaseMonitor.get_men(Config.package_name, dev) BaseMonitor.get_fps(Config.package_name, dev) BaseMonitor.get_flow(pid, Config.net, dev) BaseMonitor.get_battery(dev) except: end_time = datetime.datetime.now() print(str(dev) + ":测试完成!") afterBattery = BaseMonitor.get_battery(dev) writeSum(1, path=PATH("./info/sumInfo.pickle")) app[dev]["header"]["beforeBattery"] = beforeBattery app[dev]["header"]["afterBattery"] = afterBattery app[dev]["header"]["net"] = Config.net app[dev]["header"]["time"] = str((end_time - start_time).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) if readInfo(PATH("./info/sumInfo.pickle")) <= 0: report(readInfo(PATH("./info/info.pickle"))) print("Kill adb server,test finished!") os.popen("taskkill /f /t /im adb.exe") shutil.rmtree((PATH("./info/"))) # 删除持久化目录 elif signal == 'n': print('用户主动放弃测试,测试结束!') else: print("测试结束,输入非法,请重新输入y or n!")""" #Monkey测试部分,如果是进行monkey测试,去除该部分注释(line134~line191)并注掉手动测试部分(line72~line131);另外BaseReport.py中line85,line120~line132注释也要去除 print("--------------开始执行Monkey----------------") path_log = Config.log_location + dev device_dir = os.path.exists(path_log) if device_dir: print("日志文件目录log已存在,继续执行测试!") else: os.mkdir(path_log) # 按设备ID生成日志目录文件夹 run_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())) # Monkey测试结果日志:monkey_log adb_monkey = "shell monkey -p %s -s %s %s" % ( Config.package_name, Config.monkey_seed, Config.monkey_parameters) monkey_log = path_log + "\\" + run_time + "monkey.log" cmd_monkey = "adb -s %s %s > %s" % (dev, adb_monkey, monkey_log) os.popen(cmd_monkey) print("monkey 命令:", cmd_monkey) # logcat日志 logcat_log = path_log + "\\" + run_time + "logcat.log" cmd_logcat = "adb -s " + dev + " logcat > %s" % (logcat_log) os.popen(cmd_logcat) # print("logcat 命令:", cmd_logcat) # "导出traces文件" traces_log = path_log + "\\" + run_time + "traces.log" cmd_traces = "adb -s " + dev + " shell cat /data/anr/traces.txt > %s" % traces_log os.popen(cmd_traces) # print("traces 命令:", cmd_traces) time.sleep(2) start_time = datetime.datetime.now() pid = BaseMonitor.get_pid(Config.package_name, dev) cpu_kel = BaseMonitor.get_cpu_kel(dev) beforeBattery = BaseMonitor.get_battery(dev) print("测试前电量", beforeBattery) while True: try: with open(monkey_log, encoding='utf-8') as monkeylog: time.sleep(2) # 每2秒采集一次 print("----------------数据采集-----------------") BaseMonitor.cpu_rate(pid, cpu_kel, dev) BaseMonitor.get_men(Config.package_name, dev) BaseMonitor.get_fps(Config.package_name, dev) BaseMonitor.get_flow(pid, Config.net, dev) BaseMonitor.get_battery(dev) if monkeylog.read().count('Monkey finished') > 0: end_time = datetime.datetime.now() print(str(dev) + ":测试完成!") afterBattery = BaseMonitor.get_battery(dev) writeSum(1, path=PATH("./info/sumInfo.pickle")) app[dev]["header"]["beforeBattery"] = beforeBattery app[dev]["header"]["afterBattery"] = afterBattery app[dev]["header"]["net"] = Config.net app[dev]["header"]["monkey_log"] = monkey_log app[dev]["header"]["time"] = str( (end_time - start_time).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break except: end_time = datetime.datetime.now() print(str(dev) + ":测试完成!") afterBattery = BaseMonitor.get_battery(dev) writeSum(1, path=PATH("./info/sumInfo.pickle")) app[dev]["header"]["beforeBattery"] = beforeBattery app[dev]["header"]["afterBattery"] = afterBattery app[dev]["header"]["net"] = Config.net app[dev]["header"]["monkey_log"] = monkey_log app[dev]["header"]["time"] = str( (end_time - start_time).seconds) + "秒" writeInfo(app, PATH("./info/info.pickle")) break if readInfo(PATH("./info/sumInfo.pickle")) <= 0: report(readInfo(PATH("./info/info.pickle"))) print("Kill adb server,test finished!") os.popen("taskkill /f /t /im adb.exe") shutil.rmtree((PATH("./info/"))) # 删除持久化目录