这篇文章,主要讲解软件设计方案。
“简易”软件的设计,结合了当今众多语言和工具的优点,采用最适合电子产品测试的思维来设计。
一、UUT设计根据前面章节的设计思路,我将UUT设计为一个单独的组件,每个UUT可以随意增减测试项,多个UUT组合为一个脚本,这样当需要并行测试时,只需要创建多个UUT即可,每个UUT互相独立。
(1)Setup(自检)每个UUT是独立的,那么电子产品测试前,一定有很多仪器或协议的初始化,这部分内容,没必要每次测试都运行一遍,只在测试前运行一遍。
很多软件会重复的去做初始化动作,这个时间是可以节省的,哪怕节省1秒,当产品数量成千上万时,节省的就是成千上万秒了。
(2)Main(主测试)UUT的主要测试内容,这里包含了UUT的所有测试项,测试内容在这里做增删改操作,为了更方便调试,软件具有主流软件都有的调试功能,比如:“开始”“自检”“停止”“暂停”“单步”“断点”,也设计有主流软件没有的调试功能,比如:“失败暂停”“忽略错误”“单项调试”“json文本”“UUT调测配置”。
按钮设计也是思考良久,方便用户看型猜意。
选中Main或者Main中的大项名称,可以添加测试大项。例如:
(3)Cleanup(清尾)
既然有自检的初始化,那么对应就应该有清尾动作,那些仪器端口关闭、协议的关闭,测试结果上传,都可以在清尾时,做相应处理,这里又可以减少重复的操作,又节省一点时间(时间就是省出来的,成本就是这样通过在设计时降低了的)。
清尾是包含两种情况:测试成功、测试失败,两种情况所需处理的测试内容随意配置。这里的测试成功与失败的结果来自于Main,与自检没有关系。
Main测试成功时,运行序号0以下的测试项;Main测试失败时,运行序号1以下的测试项。
(4)Properties(属性)看到这里有同学就问了,测试项怎么添加呢?
学过微服务或者Python的同学,回忆一下,你们开发代码时,需要一个函数功能,而这个函数在一个外部库里面封装时,你是如何做的呢,答案如下:
1、通过库管理工具pip、npm等找到并下载这个外部库(总之下载到本地的文件夹里)。
2、程序代码中,开头的地方导入这个外部库。
3、程序代码就可以,随时调用外部库里的函数了。
那么,沿用这个思路,咱们这样设计:
1、库管理工具(我还没开发,原因没钱建服务器供大家免费下载库文件,惭愧),我放到了开源社区GitHub上,大家下载时,就包含了已经封装的库文件,和库文件对应的源码。
2、脚本中有一个单独的模块,放置需要引用的库信息,参考微服务开发的代码,将其命名为Properties(属性),属性中包含所需要的库文件信息(库名称与库版本)。
3、UUT的界面,可以直接调用外部库的函数,右键添加。
至此,添加测试项的问题就解决了!
(5)Variables(变量)有同学看到上面图片,疑惑Variables是变量么,干嘛的
你设想一下,为了实现UUT组件化,那么每个UUT就是互相独立的,而UUT开发过程中,肯定存在变量的引用传递赋值操作,这个时候,为了方便随时复制UUT到另外脚本文件,就需要将这个UUT所用到的变量,放在UUT内部一起携带。
变量也是参考各种语言,去繁存简,保留常用字符串和字符串数组,两种变量模式:
有了变量,那么整个UUT就活了,每个测试项之间,通过变量穿针引线,连成了一个整体。
注:上图下划线“_”开头的变量,参考Python,定义为软件私有变量,用户不能更改名称,但可以获取值。
二、脚本设计上面讲解了UUT后,大家应该理解了UUT都包含哪几个部分了,接下来讲解脚本设计方案
脚本有了UUT这个组件,随时都可以快速创建自己的测试项,那么脚本如何管理UUT呢?
很简单,按照编号管理,比如UUT1、UUT2、UUT3。。。。
选中文件名称,右键新增UUT,在末尾追加一个UUT,并且自动按照编号排序
或者,选中一个UUT后,右键添加UUT,复制后的粘贴UUT,都可以在选中UUT后面添加一个UUT。
注意:属性Properties是独立于UUT外的,原因是,我考虑到库信息在一个脚本文件,只需要配置一次,那么所有这个脚本的UUT,就都可以同步用到属性中所配置的库文件。
至此,脚本的设计也告一段落。
三、库函数设计上面有了脚本,有了UUT,也有了测试项,这里讲解一下外部库函数
外部库的设计,我是参考多种语言与测试常用思维综合设计出来的,也许有同学就问了,不就是一个库嘛,添加进去就好了,还需要考虑那么多?
说实话,还真是要比别的语言,多考虑一些的,比如库文件新建、打包、管理,同步、配置、调试、终端等等很多细节,要让工程尽量减少重复动作,用起来舒服,调试时间哪怕节省1秒,长年累月,为用户就节省了大量的时间,用户就可以把时间放在产品开发上,说到底,目的就是要比大厂效率提升一些(效率提升尽在设计细节上)。
咱们先讲解库函数怎么用,在讲解如何新建,如下:
(1)库函数管理通过上面Properties属性页的图片,大家应该也能猜测到,外部库是在属性中来配置的,对的。
每当新建或打开一个脚本文件时,属性页都会获取左侧项目列表中,都存在哪些外部库,并且和自身比较解析出最新的版本供用户使用。
点击添加按钮,可以弹出对话框,由用户添加所需外部库,并且指定版本,可以是中版本,也可以是小版本
(2)库函数同步注:n.n.n分别代表大.中.小
那么库版本添加后,就自动同步到UUT啦?不是的
添加后,属性页会出现一个小铅笔,意味着这个属性页已被编辑,需要Ctrl+S保存后,所配置的内容才算生效,保存后的版本将同步给同一脚本下的各个UUT
(3)库函数配置那么,就让咱们在新的UUT上添加一个库函数
第一步:双击打开UUT,选中UUT的Main,右键添加测试项(这个是大项)
第二步:输入测试大项名称,描述随意,由用户决定是否添加
第三步:选中UUT的测试项编号那一行,就可以添加属于这个大项的测试小项了
第四步:在弹出的对话框中,可以配置测试小项名称,可以执行,添加小项的描述
点击确认按钮,则一个外部库的测试小项,就配置完成了,简单吧,使用时,不需要研究那么多,只需要知道每个库都是干啥的,直接拿来就是用。
(4)库函数调试添加完测试小项后,当我要修改或调试这个小项怎么办呢,很简单。
双击所需调试小项,则会出现一个调试修改界面,这里你可以随意编辑或运行小项。
详细调试,咱们后面章节在讲解,这里主要说明库是有这个功能的
(5)库函数终端终端,很多人很陌生,用过PyCharm或者其他IDEA的同学,对于终端应该非常熟悉,它是单独的一个页面,用来运行一些命令的,我借鉴这个思想,将终端引入电子产品测试中,我把它比做微信的小程序,用户可以创建、添加、使用终端,来提升测试效率。
看完上面一段话,还是懵,那么以一个例子来讲解,如下:
串口协议是电子产品最常用的通信调试协议,关于此协议的工具“玲琅满目”,一般大家测试时,经常是这样操作的,测试软件开发后,一顿测试,突然出现了异常,此时用户不知道异常原因,需要关闭软件串口,打开外面串口小工具,挨个敲一遍命令,查找定位异常,这是调测的常规操作。
那么,我就想了,我为啥要跳出测试软件去多余的打开一个新工具呢,难道不能把工具做成微信的小程序一样,打开微信,直接弹出绿码(额,绿码现在2022年是常规操作),依照这个思想,我开发了终端功能,将其作为一个上帝之眼一样,只要测试项是使用该终端开发的,那么任何内容都不会逃脱终端的掌控。
关于终端使用,咱们后面章节在详解。它对效率提升,就相当于给汽车增加了两个牛X的发动机!
刚开发,实际还没用,一切都是想象(惭愧,没钱买串口板调试)
不过,道路打通了,那么其余单机可以调试的各类终端,是可以后续开发的,比如,命令行终端、Telnet终端、SSH终端、MQTT终端、蓝牙终端、WIFI终端、Zigbee终端、电源仪器终端、示波器终端、频谱仪终端等等,各类终端就像微信小程序一样,随用随测,方便简单,有了终端,再也不用愁了。
额,扯远了,现在只弄了个串口终端。。。还未经实践。
(6)库函数新建、打包最后,咱们讲解一下如此好用的库函数,如何新建,打包的呢?很简单。
第一步:安装LabVIEW和VISA,包含常用的第三方库,当然你可以自己安装更多,我只是列举一下可能用到的,假如缺失,自己到NI-VIPM上下载即可。
基于Number库源码为基础,新建一个Demo库,复制一份Number文件夹,更名为Demo
格式保持库名-n.n,其中n.n代表中版本,n.n.n代表小版本,“简易”以中小版本来管理外部库。
注:库名不要包含“-”
双击打开Demo-1.0文件夹下的库项目LibPackage.lvproj,选中Number,右键重命名“Demo”
弹框提示是否保存所有,点是。
新的库创建成功!
库中具体方法如何添加,后续章节详解!
第一步:选择打包列中Number,点击属性
第二步:修改名称,注:文件名中,务必使用n.n.n的小版本格式,点击build,打包完成
第三步:将打包完成的外部库,放入Libraries文件夹。
大功告成!如此简单、容易,符合软件名称的名称“简易”。
四、数据设计数据分析,一直都是各大厂不外传之密,当然没人会告诉你数据库和密码(这属于泄密),但也说明数据的重要性,它是产品的生命之源,没有测试数据,谁敢直接就卖到外面给用户?那不是砸自己招牌嘛。
为了让数据可视化,将数据按照固定层次格式保存在本地,开发一个数据分析的界面,专门对本地数据做处理。
具体层次如何布局,其实你只需要下载“简易”,按照上面流程配置一遍,运行几个测试项,在数据分析界面上,就可以恍然大悟,原来如此简单,我通过层级管理,去掉了数据库,目的就是方便用户,随时随地,都可以打开分析,而不是要敲数据库命令,才能查看结果,要的是快。
例如:我运行一下刚才配置的随机数测试项,打开数据分析界面(按钮位于左侧)
每次测试的结果都可以随时方便的查看,点log日志按钮,可以查看每次测试的测试项日志。
还可以把结果文件转换为HTML网页报告,更加直观,如下:
再也不用挨个文件夹翻了,说实话,我就是不想翻文件夹,就下定决心,我自己的软件,一定不要让我翻文件夹(翻烦了。。。)。
文件列表可以查看文件,那么数据分析,可以查看数据散点、CPK、正太分布。
耗时统计,可以查看我测试项耗时的分布情况,及时发现耗时异常的测试项。
这样下来,数据分析,几乎是秒出结果,快速发现产品问题,超越大厂的利器,就是比他们更快!
下一篇文章,讲解软件如何让调试变得简单、容易



