51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 455|回复: 0
打印 上一主题 下一主题

两个工具教你如何自动化分析无线通信终端故障

[复制链接]
  • TA的每日心情
    擦汗
    4 小时前
  • 签到天数: 1047 天

    连续签到: 5 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-3-31 10:39:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    高通工具简介
      针对高通无线通信终端(如手机、上网卡等)产品,有两大故障分析工具QXDM和QCAT。当产品出现问题时,例如:手机无法上网、手机下载速率低、手机信号差等等,需要抓取故障日志进行定位排查,此时就需要用到QXDM工具。
      QXDM主要用来抓故障日志、修改终端配置、升级终端软件等。
      QCAT主要用来解析日志log,这个工具可以将QXDM抓取的log解析成结构化的数据,便于开发进行快速定位故障。
      自动化优势
      常见的通信信令流程分析,使用QXDM和QCAT UI界面手工操作即可以做到,比如手机无法上网。
      但是,比如手机下载速率低、手机信号差等问题,需要进行性能指标分析,可能包含多种数据的分析,比如物理层Throughput、应用层Throughput,还需要分开分析上行(UL)、下行(DL),LTE、5G,信号强度(RSRP、RSRQ)、信噪比(SINR)、误码率(BLER)等等。
      由此可见,纯手工进行分析明显会影响分析效率和准确率,而借助工具自动化的实现,就可以解决这个问题,并且自动化除了分析快、准之外,还有两个优势,就是无人值守和批量执行。
      自动化实现
      总体思路
      那么,如何实现高通工具自动化,从而实现性能指标分析自动化呢?
      QXDM和QCAT提供了com接口,支持多种语言调用,例如VBScript、Jscript、Perl、Python
      本文将介绍如何借助python语言,结合QCAT、QXDM、EXCEL等工具,实现QXDM日志的自动截取、分析、筛选、导出,以及输出关键解析参数数据。
      具体分为以下几个步骤:
      1.截取有效业务时间
      2.按照需求筛选数据
      3.导出有效数据
      4.数据提取和计算
      细细说来
      下面依次来介绍各个步骤的实现思路和自动化接口。
      第一步:截取有效业务时间
      由于log中可能存在一些无效时间段,需要将有效时段从log中识别出来。虽然,不同的情况下,有效时间段的规则可能有所不同,但是,从工具的角度,都是从开始时间点到结束时间点,即一个时间窗。
      此处,我们需要调用QCAT 工具接口。而不管是QCAT还是QXDM,都是通过调用wind32com接口来实现工具功能模块的自动化应用的。相关Python脚本如下:
    from win32com.client import Dispatch

      导入了Dispatch模块之后,就可以调用QCAT和QXDM了。调用方法:
    Dispatch("QCAT6.Application")
    Dispatch("QXDM.QXDM5AutoApplication")


      另外,还有一个前提是,注册表中有QCAT和QXDM的应用。注册表路径如下:
      HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QCAT6.Application
      HKEY_LOCAL_MACHINE\SOFTWARE\Classes\QXDM.QXDM5AutoApplication
      使用QCAT中的SetTimeWindowAbsolute方法,即可根据需要切割log,只需要指定开始时间戳和结束时间戳。脚本示例如下:
    #脚本示意,并非源码
    #打开一个QCAT6实例
    qcat_test = Dispatch("QCAT6.Application")
    #打开一个log
    qcat_test.Openlog(logpath)
    #设置时间窗
    qcat_test.SetTimeWindowAbsolute (starttime , endtime)
    #重新保存一个log到指定路径
    qcat_test.SaveAsIsf(log_save_path)


      starttime和endtime需要为如下格式:yyyy/mm/dd hh:mm:ss.ddd, 例如2023/01/04 15:07:26.456。
      上述自动化操作相当于手工在QCAT UI界面做如下设置:

      第二步:按照需求筛选数据
      这一步的主要目的是,保留所需的数据类型,提高脚本执行和数据分析的效率。我们需要使用QCAT中的PacketFilter方法来设置一个过滤器。脚本示例如下:
    #脚本示意,并非源码
    #打开一个QCAT6实例
    qcat_test = Dispatch("QCAT6.Application")
    #打开一个log
    qcat_test.Openlog(logpath)
    #创建一个过滤器对象
    filter = qcat_test.PacketFilter
    #设置过滤器的值
    filter.SetAll(False)
    filter.Set(message_type,True)
    filter.Commit()


      上述自动化操作相当于手工在QCAT UI界面做如下设置:

      第三步:导出有效数据
      这一步导出的数据由两部分组合,一部分是由QCAT导出的xlsm格式的数据,另一部分是由QXDM熬出的txt格式的数据。这两部分数据将作为后续数据分析的主要数据来源。
      首先是,用QCAT导出xlsm数据:
    #脚本示意,并非源码
    qcat_test = Dispatch ( "QCAT6.Application" )
    qcat_test.Openlog(logpath)
    qcat_test.LoadWorkspace
    qcat_test.workspace.SelectOutput ( ";" , False )
    qcat_test.workspace.SelectOutput (workspace_path, True )
    qcat_test.workspace.ExportToExcel (export_file_path, 0 )


      上例中的workspace_path是指QCAT工作空间的路径,例如,下图中的工作空间路径就是:";LTE;Time Gridshysical Grid;LTE L1 CQI RI and MCS vs. Time",各级路径之间用分号”;”隔开。

      接下来是,用QXDM导出txt数据,QXDM导出数据要稍微复杂一些。
      首先,创建一个logsession,然后在这个session中创建一个DataView,然后将每一条message的内容读出来,最后将这些内容依次存储到txt中:
    #脚本示意,并非源码
    log_session.createDataView
    data_items = log_session.getDataViewItems
    file_object = open(file, "a")
    file_object.write(data_items)


      上述自动化操作相当于手工在QXDM UI界面做如下设置:

      第四步:数据提取和计算
      这一步主要是使用pandas.DataFrame进行数据处理,再结合min,max,mean等进行最小值、最大值、平均值的计算:
    #脚本示意,并非源码
    df = pd.DataFrame({'A' : dataA, "B" : dataB, 'C' : dataC})
    df[[“A”,”B”,”C”]].mean()
    df[[“A”,”B”,”C”]].min()
    df[[“A”,”B”,”C”]].max()


      是否好用?
      那么,自动化与手工操作的效率对比效果如何呢?自动化的提升效果并不固定,但是,它会随着处理的数据量的增大,效果越加明显。
      举个例子,我在实际使用过程中,一个1Gb左右的log,手工操作大概需要30分钟,自动化大概7-8分钟即可。
      另外,基于以上处理逻辑,还可以将数据计算结果形成统一格式的测试报告。当然,还可以通过循环控制、多线程管理来实现多个log的连续处理和并发执行。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 13:50 , Processed in 0.071029 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表