• 0
  • 0
分享
  • 无线通信终端故障如何自动化分析?两个工具教给你!——软件测试圈
  • 曼倩诙谐 2023-04-19 13:29:22 字数 3230 阅读 1631 收藏 0

  高通工具简介

  针对高通无线通信终端(如手机、上网卡等)产品,有两大故障分析工具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界面做如下设置:

1-1.png

  第二步:按照需求筛选数据

  这一步的主要目的是,保留所需的数据类型,提高脚本执行和数据分析的效率。我们需要使用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界面做如下设置:

-2.png

  第三步:导出有效数据

  这一步导出的数据由两部分组合,一部分是由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 Grids;Physical Grid;LTE L1 CQI RI and MCS vs. Time",各级路径之间用分号”;”隔开。

1-3.png

  接下来是,用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界面做如下设置:

1-4.png

  第四步:数据提取和计算

  这一步主要是使用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的连续处理和并发执行。



作者:快乐至上    

来源:http://www.51testing.com/html/63/n-7795663.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 读者提问:公司只有 1个测试,领导让我同时测试 10个项目,我该怎么办?阿常回答:如果我是那个测试,我会做这三件事1、向上申请资源2、任务分配到人3、执行测试任务一、向上申请资源1个测试同时对接 10个项目(这 10个项目大部分是新项目),这个确实让人难以招架,不瞒大家说,阿常在以前的公司就遇到过这种情况,当时我做的第一件事就是向上申请资源。当时我们有 10个开发,1个测试,2个产品,2个设计,我跟领导申请到了产品和设计帮忙做测试验证工作。二、任务分配到人总共 10个项目,测试资源 5人(测试 1人,产品 2人,设计 2人)。1、每人平均分配到 2个项目2、按阿常给的模版写测试用例3、由阿常检...
            0 0 1060
            分享
          •   前言  · 在实际业务场景中,很多业务都需要先登录才能正常使用。  · 在做接口性能测试的时候,需要测试登录后才能访问的接口肯定是无法避免的。  · 那么,我们怎么才能完成先登录后发出请求的性能脚本呢?  思路  1.发出登录请求  2.提取响应的认证内容  3.后面的请求引用认证内容  提出问题  做性能测试,是模拟多个虚拟用户实现并发的,那我们的登录接口也需要重复发起吗?  可以类比一个场景  做UI自动化的时候肯定也需要登录的,一般我们会将登录放到全局前置来操作,所以整个测试流程下来只需要登录一次。  关键点  一个用户只需要登录一次,避免重复发起登录请求,造成不必要的资源消耗。  ...
            0 0 4633
            分享
          •   质量监控的范围和概念  1.用户体验是否舒服:  以用户的角度对产品进行使用,以找到不合理,体验差的功能点。  2.产品设计是否符合:  以产品的角度对产品设计的完整性进行检验。  3.性能状况是否稳定:  以系统运维的角度找到产品性能的瓶颈。  4.逻辑设计是否存在漏洞:  以开发人员的角度检测产品的逻辑合理性。  5.系统安全,数据安全是否有保障:  以不法分子,黑客的角度对产品进行攻击,以检测产品的安全性。  测试用例设计方法:  软测行内共识的设计方法不再赘述,转帖一篇文章小白们可以自己去看:  测试用例的几种常见设计方法:  已有的常规方法我们可以照搬照用,但是从质量管理的整体性...
            11 10 1418
            分享
          •   一、避免去外包公司  基于行业影响,企业需要降低成本,会更倾向于使用外包。大公司使用外包的结果就是外包市场会进一步发展,这些发展会进一步推动企业裁员的进程。如果外包能够搞定很多事情,外包的价格又比较低,很明显很多低级的工作会更倾向于使用外包的。  外包公司的本质是通过提供廉价劳动力赚取剪刀差的一种公司。你拿到的收入,已经被扣除了一部分了。所以你进入这样的公司,既没有办法接触到业务核心,公司也不会提供很好的培训,也没有很好的经验积累,也没有进入更深的测试实践,所以在这里面的成长会面临发展困境。  如果你现在在外包公司,建议你待个一年两年就立马要走,千万不要留的太久,不然将来会面临很大的发展问...
            0 0 464
            分享
          •   当前测试市场技术发生了什么变化?  自2018年,软件测试就业市场发生了变化。因为随着国内互联网的发展,测试越来越重要,根据业务的不同,导致发展方向越来越多,细分职能越来越多,请看下图:  所以市场上对软测技能要求也是水涨船高,企业更需要的是全栈型测试,或懂得多种测试技能,以提高人效。早期功能测试打天下,撸起袖子就是点的时代早已一去不复返,如果你刚入行也许认为我还能点点点,那么你可能很快会被行业淘汰,从入门到失业你做到了无缝衔接。  未来路如果想走的更好,我们有必要深入了解下软件测试行业未来发展趋势,让我们一起来拥抱变化:  趋势1.功能测试虽然是测试的核心,但提供的价值日益降低。当前行业...
            0 0 1002
            分享
      • 51testing软件测试圈微信