GPIB自动化测试项目总结

接到这个项目后,经分析,发现该项目一共有5个问题需要攻克,具体如下:

(1)其他exe软件界面的控制

(2)excel文件读写

(3)软件界面设计

(4)GPIB通信和相关设备指令

(5)系统整合

经过断断续续一个月的反复,最终完成了上述几个问题。下面分步骤对上述几个问题做总结

 

一、其他exe软件界面的控制

做了一个简单的测试程序,名字为mouseCtrl

这个问题比较简单(主要是我自己的电脑就可以调试),具体的步骤主要分为以下几步

(0)引用相关类,并对user32.dll的相关函数做声明。

(1)找到要控制的exe文件的完整路径,启动它。

(2)在spy++软件的辅助下,找到相关的按钮、文本框的句柄保存。

(3)将要控制的窗口设置成前台窗口,得到相关按钮或文本框的中心坐标,通过鼠标模拟点击或向文本框发送信息来实现控制。

在开发时发现一些问题,如果移动鼠标后不延时,有时候不太好用,后来加入延时函数问题才得以解决。

 

二、excel文件读写

做了一个简单的测试程序。名字为script

从网络资料的搜索来看,方法不外乎2种,一种使用微软的库,一种是使用开源软件库。由于之前没有用过开源软件库,个人感觉可能微软的库使用更简单,只需要我开发的环境和用户的环境office的版本一致应该就可以了。所以我选择了微软的库,具体步骤如下:

(1)添加相关引用和库

(2)得到excel完整的文件名,打开。

(3)向对应的excel行列未知写入内容或读取内容。

(4)操作完毕后,采用杀进程的方法关掉excel

开发中发现,如果读取或写的时候出错,excel杀不掉,只好用ctrl +art +del的方法杀掉excel再实验(不显示界面),速度倒是还可以忍受,不算太慢。

 

三、软件界面设计

软件界面设计比较简单,但事实上却经过了一些反复,主要问题出在概念理顺、需要解决的问题重要程度的判断上。在和客户交流中发现,客户主要需要解决如下一些问题

(1)客户有部分参数需要通过实验测定,且可能发生变化,这部分必须能容易修改。

由于客户提出用记事本保存,故采用了配置文件的方案。这个东西之前做过。做的很快。为方便从文本框中数据的修改和记录更新,我使用了map(Dictionary)来完成完成相关处理工作,以在增强代码可读性的基础上简化程序界面处理逻辑。

(2)各种测试的参数控制和选择。

这部分其实时间比较长,主要是和自己和客户的沟通低了些。后来沟通清晰后,界面一下子清晰多了,客户也非常满意,感觉逻辑很清楚。

(3)客户要求启动、停止的控制

这个部分比较麻烦,刚开始的使用的是单线程的方案,采用了一个可以响应界面事件的延时函数,但可能是某些循环中没有嵌入停止检测的代码,客户反映有时候不能停止。后来专门耗费了2天事件研究多线程控制,研究明白了。可有发现更改代码较多,且代码显得更麻烦了。如果改错了,反而时间成本更高。最终也没有用多线程的方案。

多线程测试的例子保留下来,希望以后可能找到一个更合适的方案

测试程序:myThread,主要测试前台、后台线程,线程挂起和恢复。

测试程序:myThread2arg,测试多线程通信中多个参数传递的问题、测试键盘捕获的问题。

 

四、GPIB通信和相关设备通信问题

该问题处理的周期较长。大体上,主要可分为2个问题。一是GPIB通信的问题,二是主要设备的控制指令问题。

(1)GPIB通信的问题

这个问题困扰了我比较长的时间(好像有2-3天的样子),后来找到了2篇文章,下载了一个官方驱动,一个官方例程包问题才得以解决(其实后来还有了一个反复)。

文章1网址:讲解了基本概念。

https://www.cnblogs.com/hitfredrick/p/6402998.html

文章2网址:实际自己后期的开发完全是基于这篇文章做的。

https://blog.csdn.net/lv_fu/article/details/53303370

 

例程:net 4.0框架下C#编写的利用VISA协议与仪器(如泰克示波器)通讯的示例程序:

http://bbs.elecfans.com/jishu_924278_1_1.html

 

官方驱动:

http://www.ni.com/zh-cn/support/downloads/drivers/download.ni-visa.html#306031

 

这里面实际还产生了一个反复。一开始自己下的版本较高,测试的时候才发现,客户装的系统竟然是xp,后面没办法,又去官方网站重新下载的驱动,问题才得以解决。

(2)相关设备通信问题

这个问题解决得周期更长,其实到目前为止依然不能说完美解决(设备指令、时间优化、测试流程里面要研究得问题实在太多)。为加快未来开发流程,在这里做一个简要记录。

刚开始得时候,客户给我找了一份设备相关指令说明(英文),之前同事做的类似得项目。拿到资料后才发现,开发语言是一种超古老得语言,开发环境是一种没听说过环境,安装环境后发现缺乏N多文件,项目不能编译…… 设备指令说明上竟然没有标识文档适用的设备名称,总之是各种坑。

没办法,只能自己在去客户公司,自动动手找资料,花费了整整一天时间,他们原先的项目在我的电脑上才可以编译。开发语言不通的问题主要是通过制造异常、弹窗阻断的问题解决的(感谢刚上班的时候的自己曾经研究过MFC,此处问题和自己研究MFC的思路类似)。

设备指令的问题是在程序框架基本完成后才实际开始研究的。由于客户之前的项目已经可以在我电脑上编译,算是有了一个基本的验证源,只要找到设备厂家的资料说明,就可以形成闭环验证,就算是没有测试设备,基本也能研究个八九不离十了。

经过自己在网络搜索,最终找到了官方设备网址,具体如下

https://www.keysight.com/main/commonlanding.jspx?cc=CN&lc=chi

依靠自己那半吊子英语,和半吊子关键字搜索水平。终于完善了闭环验证的另外一环。至此,设备指令控制的问题算是在没有设备的情况下得以解决。

 

五、系统整合

按理说,此部分只能算是体力劳动,实际上,本部分依然耗费了一些时间。问题主要处在以下三方面。

(1)对自己过于自信,未做离线测试工作。

系统是要通过设备采集数据,然后在对数据做相关处理,在这部分,我明显对自己过于自信了,开发中没有设计虚拟数据,结果在测试时就暴漏出来了,没办法,只能回到老路,重新设计虚拟数据,问题才得以解决。

(2)在具体测试流上有偷懒嫌疑

在编写测试流代码时,部分代码没有用循环来编写,结果在客户要求更改核心测试数据时,更改地方过多。没办法,只能对这些没有用循环编写的代码重新编写,浪费了一两天的时间。

(3)数据、函数概念封装度不够

在编写各个功能模块时尚未发现此问题,系统整合时发现自己明显脑容量不够,很多变量、函数记不住什么意思。没办法,只能对部分数据和函数重新整合、封装、重命名。整合后主程序代码控制到了3000行左右,自己也再次恢复了对代码的全局掌控。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

健忘的松鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值