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 A | Tool B | |
多线程操作 |
| tool B仅仅在需要打印Log时注意多线程操作; |
gerrit + 快速部署 |
|
|
设备交互 |
|
|
5.一些困惑
说句实话,对于现司的工具我的理解可能会更深一点,在现司的工作生涯结束之后我会在本篇或者新开一篇来比较三家公司工具的异同点;
我理解我的工作并不是测试;而是面向测试人员,开发一些减少他们工作量的测试工具;而是操控一些设备,让测试人员能自动化的进行测试操作;简而言之,自动化测试开发工程师;
我不知道现在世界上的测试工具是如何开发的,世界上先进的测试工具开发是什么样的呢?普通的测试工具开发是什么样的呢?我是在什么位置呢?
我想写一些更技术的,而不是更产品的博客出来;
但是这又有多大意义呢?
中士闻道,若存若亡;