经历过的两款TestTool的架构简画

1.背景

        之前待过两家公司,参与过两款测试软件的开发;不论语言,都是面向工业产品的测试工具。其中有一些道理是相通的。

2.基本介绍

        公司A野蛮而健壮

  •                 基于Visual Studio ,以C++ 作为基础语言,用MFC写界面;
  •                 测试对象是半模乃至整机阶段的手机;
  •                 测试工具需要和手机、各个外部治具,Mes进行交互;
  •                 使用者是各个自有工厂和代工厂

        公司B草创未久

  •                 基于pycharm,以python语言进行脚本开发,没有UI界面
  •                 测试对象是FPGA乃至整机阶段的蓝牙耳机
  •                 测试工具需要交互的对象是耳机、手机,
  •                 使用者是测试组成员

3.管窥蠡测

       拾人牙慧,刨除UI界面,一个完整的测试工具需要有可以加载修改的测试项,在每个测试项中调动操作测试对象,控制测试治具,获取测试结果,打印或者上传测试数据;

公司A公司B
测试项类光感校准测试、指纹校准测试等蓝牙连接,断开,重连,仲裁,游戏等
测试对象类各个型号的手机:高通、MTK各个型号的耳机
测试治具类光箱,指纹头,按键等各个厂家的手机
测试Log类本地记录,上传本地记录,上传

        基于流程和面向对象编程的基本原理,按照以下规则进行初始化

  • 工具设计了一个testItem基类;对于不同的测试需求,测试工具会读取本地的xml或者ini或者Json文件,解析然后获得当前的测试项,然后派生需要的testItem子类。
  • 工具设计了一个testObject基类;对于不同的测试对象,测试工具会读取本地的xml或者ini或者Json文件,解析然后获得当前的测试对象,然后派生需要的testObject子类。
  • 工具设计了一个testFixture基类;对于不同的测试站位,测试工具会读取本地的xml或者ini或者Json文件,解析然后获得当前站位的测试治具,然后派生需要的testFixture子类。

        大体运行流程如下        

  • 在测试工具使用时,使用者只需要点击run button,然后工具会进行串行或者并行的testItem执行;
  • 在每个testItem中,调用testObject来操作测试对象,调用testFixture来操作测试治具;
  • 在执行过程中,需要及时打印Log来记录测试的信息;
  •  在测试结束之后,需要将结果送到云端进行记录;

4.一些细节

Tool ATool B
多线程操作
  • 涉及对于一部手机同时进行多个测试项目的测试时,需要进行多线程操作--手机需要对于大耗时的测试项目进行并行组合测试;不要让手机内部测试项冲突,也不要让治具的状态冲突;
  • 不涉及高并发
  • 需要注意的点是Log打印记得加锁
  • 没有用到很多多线程的知识,仅仅用到了 mutex和vector<thread>,自己加了一点条件变量
tool B仅仅在需要打印Log时注意多线程操作;
gerrit + 快速部署
  • Tool A因为涉及到很多代码分支多人同时提交的情况,使用了gerrit + Jenkins + JFrog进行代码管理和部署,
  • 代码通过gerrit 托管,
  • 提交到Gerrit的代码可以通过Jenkins在服务器验证能否进行正确编译,会跑一些基础case看能否pass;
  • 对于一些通用的Team公用的Library库,可以通过JFrog进行同步部署(有些遗忘了)
  • tool B仅仅使用了gerrit进行托管
设备交互
  • tool A用到了串口控制,因为toolA 涉及到了和治具交互的过程,如果足够强大的公司,可以要求乙方按照自己的接口去自己包装自己的下位机,提供给我们对应的dll然后我们通过调用对方的dll去控制设备
  • tool A涉及到了 ADB控制,因为安卓手机需要ADB来进行交互,下发指令,收集数据;一般使用自己包装的或者原装的ADB 指令控制一些测试程序的开始或者数据的收集
  • tool B也用到了串口控制,tool B需要通过串口烧录hex或者bin到耳机中,或者从串口获得一些sensor的log信息
  • tool B也涉及到了 ADB控制,因为耳机测试也需要连接安卓手机,需要ADB来进行交互,下发指令,收集数据;不过异同点是toolB一般通过ADB来进行UI界面元素操作来进行对耳机的控制;我理解的更广义的APP测试是否就是这样呢?希望有人可以向我解答

        

5.一些困惑

        说句实话,对于现司的工具我的理解可能会更深一点,在现司的工作生涯结束之后我会在本篇或者新开一篇来比较三家公司工具的异同点;        

        我理解我的工作并不是测试;而是面向测试人员,开发一些减少他们工作量的测试工具;而是操控一些设备,让测试人员能自动化的进行测试操作;简而言之,自动化测试开发工程师;

        我不知道现在世界上的测试工具是如何开发的,世界上先进的测试工具开发是什么样的呢?普通的测试工具开发是什么样的呢?我是在什么位置呢?

        我想写一些更技术的,而不是更产品的博客出来;

        但是这又有多大意义呢?

        中士闻道,若存若亡;

        

        

        

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值