2019年第19期
信息与电脑
China Computer & Communication
软件开发与应用
基于Python 的半导体测试软件系统的设计
方 明
(是德科技(中国)有限公司,北京 100102)
摘 要:半导体行业持续发展,从个人电脑到智能手机,再到5G、IOT,半导体作为当前电子科技的物理基础发挥着重要的作用,而半导体测试作为提供可靠芯片的保障与半导体功能本身同等重要。半导体领域的测试面临的主要挑战之一是快速变化的测试需求,实现一个跨平台、易扩展的自动测试平台变得十分重要。笔者将介绍一种基于Python 的自动测试平台的设计与实现,该系统兼具跨平台与可扩展等关键特性。
关键词:半导体测试系统;Python;中间件;可扩展;跨平台
中图分类号:TP311.53 文献标识码:A 文章编号:1003-9767(2019)19-074-03
Design of Semiconductor Test Software System Based on Python
Fang Ming
(Keysight Technology (China) Co., Ltd., Beijing 100102, China)
Abstract: Semiconductor industry continues to develop, from personal computers to smartphones, to 5G, IOT. Semiconductor
plays an important role as the physical basis of current electronic technology. Semiconductor testing is as important as providing reliable chips. One of the main challenges facing semiconductor testing is the rapidly changing testing requirements. It is very
important to implement a cross-platform and scalable automatic testing platform. The author will introduce the design and implementation of an automatic test platform based on Python, which has the key characteristics of cross-platform and scalability.
Key words: semiconductor test platform; Python; middleware; flexible; cross platform
1 测试软件平台设计
1.1 设计思想
该自动测试平台的主要设计目标是跨平台、易扩展。二者对于用户快速发布可用且稳定的测试解决方案至关重要,下面对二者进行分别阐述。1.1.1 跨平台
所谓跨平台是指应用程序可以在多个平台如Linux 或Windows 上运行。该自动测试平台包括测试开发环境与测试运行环境两部分。测试开发环境可以利用Python 相关的集成开发环境即可,如基于插件框架的Eclipse
[1-3]
。运行环境一般
用高性能的语言编写而成,如果使用Java 则可以实现跨平台,如果使用C/C++语言,若设计合理,虽然无法直接跨平台运行,复用大部分的代码也是可能的[4]
。至于测试解决方案,由于它是基于Python 编写的,所以对于不同的平台几乎无需要改动。
1.1.2 易扩展
软件行业不变的规则就是不断的变化,所以拥有良好的扩展性来应对不断变化的业务需求对于现代应用软件至关重要。在软件的开发与设计中,为了保证应用程序拥有良好的扩展性,一般需要将程序中变化的部分和不变的部分进行解耦分离,常用的技巧就是引入中间层,屏蔽底层的异构性,向上层提供统一的接口[5-6]。
比如,要用C 语言写一个文件操作程序,使用系统调用的API 、open 、read 、close 等即可,如果这个程序一旦在一台电脑上可以运行,拷贝到不同的运行着同样操作系统的机器上也是可以运行的。这就得益于操作系统的出现,它屏蔽了硬件的异构性,对程序编写者提供统一的接口从而实现了程序与硬件的解耦,用户在写代码时不再需要考虑CPU 或者主板的型号了。同样,该自动测试平台通过使用中间件技术,屏蔽各种编程语言的异构性,让用户使用统一的Python 开发测试解决方案。
作者简介:方明(1983—),男,湖北潜江人,本科,高级软件工程师。研究方向:应用软件研发。
2019年第19期
信息与电脑
China Computer & Communication
软件开发与应用
1.2 总体设计
在半导体测试领域,测试通常涉及以下3要素,即测试流程、测试计划、测试界面。测试流程用于宏观的控制测试步骤,用户需要通过编写代码的自定义测试步骤;测试计划是具体的测试任务,是一组测试用例的集合,它的特点在于数据量大但格式规范;测试界面主要用于用户交互,如测试坏境配置、测试结果展示等。其模块关系如图1所示,在详细计中将对这3
要素进行详细介绍。
图1 模块图
另外,需要引起注意的地方是性能问题,对于测试而言,性能是非常重要的。Python 比C/C++要慢10~100倍。举个例子如果一个测试方案用C/C++语言需要运行3天能完成,如果该测试系统完全用Python 实现,在极端情况下将要300天才能完成,将近一年的时间,用户将无法接受。所以为了提高性能,所有的中间件都将使用高性能的语言实现,这对前端测试方案工程师没有太大影响。1.3 创新与优点1.3.1 易于扩展
由于该平台的架构通过引入中间件技术,使得该平台易于扩展。比如,用户需要使用C#/WPF 语言来开发一套测试界面,只要修改界面中间件来支持该语言的界面库,而无需要修改测试系统的其他地方。1.3.2 易于移植
解决方案包括测试流程、测试界面和测试计划。测试流程由Python 编写,由于Python 具有易移植的特性,而测试计划是由一定格式的文本组成,而文本比Python 更容易移植。综上所述,测试平台的移植性非常好。1.3.3 快速发布解决方案
该系统提供了一整套的软件集,从测试方案的编辑到测试方案的运行和调试面面俱到,解决方案工程师可以专注于业务知识,只需要懂得少量的Python 编程知识,就可以快速提出解决方案,而测试平台与其他集成开发环境的结合,为开发工程师提供了更人性化的编辑和调试功能,从而提高了工程师的
生产效率。对于不同的产品,系统可以提供相应的解决方案模板,当有新的测试需求时,解决方案工程师只需
要对解决方案模板进行适当修改,便可以进行发布。
2 软件详细设计即实现
2.1 测试流程的设计与实现
顾名思义,测试流程用来定义一个测试解决方案要做的事情和做事情的顺序,比如初始化硬件、配置测试、执行测试计划和展示测试结果。程序语言最擅长的就是流程控制,如条件、顺序执行、循环执行。在众多编程语言中选择Python 语言的原因如下。第一,良好的移植性,很多时候移植Python 代码仅需要拷贝就可以了。第二,与其他语言的交互性。Python 只是定义了一个规范,真正实现的Python 其实有3个版本,即CPython 、IronPython 和JPython 。IronPython 是.NET 版本,可以直接与.NET 进行交互,引入.NET 相关的库;JPython 是Java 版本的Python ,可以直接引入Java 相关的库;CPython 是最流行的版本,由C 语言写成,它可以与C/C++进行很好的交互,平时说的Python 其实就是CPython 。第三,简单但功能强大。Python 的语法简单,而且是解释性语言,运行方便。但是功能却十分强大,
支持各种变程方式,面向对象,函数式编程,元编程,而且Python 广泛用于数据分析、机器学习等,有大量的库供使用,如Numpy 、Pyplot 等。第四,可调试。Python 作为一种编程语言,有很多IDE 都提供了调试功能,该功能有助于快速定位解决方案的缺陷。总之,Python 语言语法简洁明了,功能强大,这些特点让它非常适合作为测试解决方案的标准语言。2.2 测试界面的设计与实现
测试界面相对来说比较简单,一般的控件比如文本输入框、单选框、复选框、列表框就可以。目前,软件领域常用的界面库有QT 、WPF 、Swing 等,为了提升扩展性,该自动测试系统将引入一个界面的中间件来屏蔽不同界面库的异构性,测试解决方案与中间件之间的接口不变,如果用户要增加对某个界面库的支持,只需要对中间件进行适当修改,不需要在额外修改其他地方。
该测试系统测试解决方案与界面中间件通信的接口是JSON 格式的文件[7],用户在测试解决方案中编写Python 代码描述界面,在运行时,通过该代码生成相应的JSON 数据,发送给中间件,中间件收到该JSON 数据后进行解析,然后加载相关的界面库来显示。这就是一个典型的界面显示的过程。
为了方便理解,可以用网页浏览器作为例子进行类比分析。浏览器相当于该系统的控制界面的中间件,当浏览器收到界面的相关数据后,它就会按照数据内容在浏览器显示相关的控件来展示数据。基于浏览器在实际应用中的良好表现,完全可以相信这个设计方案是非常稳定、可行的解决方案。2.3 测试计划的设计与实现
对于测试计划,在半导体测试领域,测试用例的格式固
(下转第78页)
2019年第19期
信息与电脑
China Computer & Communication
软件开发与应用
件,则利用控件的currentIndexChanged()事件,当选择下拉框子项目,则调用该事件,查询当前时间段+产品代码/操作人员字段内所有的操作人员/产品代码信息,并显示在相应下拉框中。随着上一个条件的选择,下一个条件的可选择范围将大幅度减少,且都为当前组合条件下的有效范围值,减少对数据库的无用操作,提高程序的灵活性。
查询函数部分代码如下:
void Widget::on_query_IdBx_currentIndexChanged(const QString &arg1)
{
QString Operator = ui->query_OperatorBx->currentText();// 操作人员
QString data1 = ui->query_DateChseEdt1->text;//开始、结束时间
QString data2 = ui->query_DateChseEdt2->text;QString pdID = arg1.mid(0,3);//产品代码
bool check = ui->checkbox->isChecked();//选中状态if(!pdTD.isEmpty()&&Operator.isEmpty()){
past_model->setQuery(QString(“select operator from DataRecords where productID = ‘%1’group by operator ”).arg(pdID);
ui->query_OperatorBx->setModel(past_model);}
if(!pdID.isEmpty()&&Operator.isEmpty()&&check){
past_model->setQuery(QString(“select distinct operator from DataRecords where productID ”=‘%1’and dataTime >=’%2’ and dataTime <=’%3’”).arg(pdID).arg(data1).arg(data2);
ui->query_OperatorBx->setModel(past_model);}
}
3 结 语
本文针对自动灌装系统设计了基于Qt 的上位机监控系统,使用Qt 自带模块QSerialPort 实现串口通信,使用QSql 模块实现数据库操作。该上位机软件提供了良好的用户使用界面,能够用便捷的操作实现对数据的传输、处理、图形展示及数据库查询调用,能够有效提高监控系统的效率。
参考文献
[1]沈江.自动称重系统的开发与应用[J].仪表技术,2010 (1):56-57.
[2]耿志辉,李西.工业检测系统的上位机软件设计[J].北京联合大学学报,2013,27(1):59-62.
[3]Jain V K,Collins W L,Davis D C.High-Accuracy Analog Measurements via Interpolated FFT[J].IEEE Transactions on Instrumentation and Measurement,1979,28(2):113-122.
[4]耿爽,黄劼.基于C8051F021的高精度自动装料称重系统研制[J].电子测量技术,2019,42(1):83-86.
[5]孔翔鸣.Qt 本地数据库开发[J].电脑知识与技术, 2017,13(10):4-5.
[6]黄邑燊.基于Qt 的微波辐射计数据采集系统上位机软件设计[J].电子设计工程,2018,26(24):101-106.
[7]吴佳静,黄劼.主从式测量系统中传感器标定方案的研究及实现[J].工业控制计算机,2014,27(10):68-69,71.
[8]郑郧,文科,章恒,等.一种基于MODBUS 协议的上位机软件设计[J].电子质量,2018(1):21-25.
[9]缪雨润.基于Qt 的图形用户界面的研究与实现[D].南京:东南大学,2015:45.
[10]霍亚飞.Qt Creator 快速入门[M].北京:北京航空航天大学出版社,2014:198.
[11]霍亚飞,程梁.Qt 5编程入门[M].北京:北京航空航天大学出版社,2015:72-73.
定,类似于数据库中的表。对于不同的测试领域,需要根据相应的领域知识来定义测试用例的结构标准,然后将测试用例按照该结构标准存储在文本文件中。在编辑时可以将该文本载入到表格中,让用户编辑表格来修改测试计划。在执行时,调用该测试系统提供的一个解析并执行该测试计划的中间件即可。
3 结 语
本文对半导体测试领域的自动测试平台设计与实现进行了详细阐述,该测试平台充分利用Python 的语言优势,在架构上充分考虑解耦而引入中间件技术,实现了测试系统跨平台与可扩展的特性。每个应用领域遇到的实际问题可能不一样,但是笔者相信本文所阐述的设计思想与方法对于其他领域的测试系统也有较高的参考价值。
参考文献
[1]王康.自动化功能测试工具Eclipse Jubula 的架构研究[J].电脑与信息技术,2019(8):15.
[2]黄子卿.基于OSGI 构建Eclipse 高标准扩展组件[J].电脑编程技巧与维护,2018(2):18.
[3]田丹.Eclipse 的CDT 插件分析[J].信息通信,2018(1):15.[4]王其祥,沈洋,周春蕾.C++语言下的跨平台软件开发设计探讨[J].信息系统工程,2017(11):49.
python新手适合的软件[5]邵鹏,彭章友.基于微服务的消息中间件设计与实现[J].工业控制计算机,2019(4):25.
[6]孙弋,温迅.一种面向消息的中间件的设计与实现[J].物联网技术,2019(3):20.
[7]王振铎,王振辉,边倩,等.基于JSON 的农业异构数据中间件的研究[J].微型电脑应用,2019(8):92.
(上接第75页)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论