您好, 访客   登录/注册

基于Python的超声设备可靠性自动化测试系统

来源:用户上传      作者:

  摘要:近年来我国医疗科技水平与日俱增,而超声医疗设备由于迭代慢,测试自动化普及程度不高,主要依赖手工,可靠性测试作为电子设备出厂测试前十分重要的环节必须充分落实。而Python作为当今最为流行的编程语言之一,能够模拟很多的手工操作再配合部分小硬件就可以实现大批量的自动化测试。该文中所介绍的测试系统依托软件与硬件结合,实现覆盖设备全部的日常操作的批量自动化测试,自动生成测试结果报告,极大地提升了效率并减少了人力投入,且在实际试用有效且复用性高,具有很高的实用价值。
  关键词:Python;可靠性;自动化测试;软件与硬件结合
  中图分类号:TP399 文献标识码:A
  文章编号:1009-3044(2020)10-0065-02
  1背景与概述
  近年来,我国科技和经济高速发展,越来越多的高新产业诞生并走向世界。以往我国医疗设备主要依赖进口,现如今越来越多的民族医疗设备企业公司开始自主研发,多个品牌已经走出国门,出口欧洲。而设备的测试作为研发过程中的关键一环直接决定了产品的质量。
  1.1Python概述
  Python是多平台的计算机程序设计语言。是一种面向对象的动态类型的解释型语言。最初就是被设计来写自动化shell脚本的,随着版本的迭代,逐渐被开始使用于大型的、独立的项目开发,如Facebook公司在过去的几年里几乎从无人问津到成为该公司主流语言,如Instagramf美国最大的图片分享社交平台)全部使用Python开发。
  Python目前主要应用于以下领域:AI、教育、桌面开发、软件开发、web前段开发、后端开发等,以其非常好的兼容性和可扩展性市场占有率逐年上升,为当下最热语言之一。
  Python的主要定位是“优雅”“明确”“简单”,所以Python的程序十分简洁,对初学者来说,不但很容易人门而且很快能深入下去。它的开发效率非常高,有着很强的第三方库,可以说你想实现的任何功能,其官方的库里都有相应的模块来支持,能直接通过内置模块pip进行下载后调用,再在该基础上进行二次的开发和封装,这可以让开发的周期大大降低,避免做无用功。
  本文中使用的主要脚本语言也是Python,用于控制脚本、串口通讯、图像处理等。
  1.2超声医疗设备概述
  根据对目前超声设备的市场调查,国产的超声设备均基于Linux来设计制造,包括彩超、血管内超声成像等;主要都由探头和计算机组成。
  Linux是基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的目前最主流的免费试用和自由传播的类Unix系统,支持32位和64位的硬件、继承了以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
  目前很多的公司,包括医疗、生产、物联网等很多的设备都采用该系统,经过深度的定制和再开发之后植入设计好的设备中。对于企业而言,相比于Windows,Linux的完全开源成本低、系统性能稳定,其核心防火墙组件性能高效、配置简单。这些特点使得Linux成为当前中国高新产业理想的开发平台。
  2实现
  本文采用的方案为“主控测试服务器+若干待测试设备”组成,所有设备和服务器需要在同一局域网下以便主控服务器与待测设备连接。
  2.1开机流程
  Linux的设备开机过程和Windows的计算机类似,如图l所示。
  2.2自动化实现模拟手动按下电源键实现
  2.2.1解决方案
  通常电源键开关采用按压式的点触开关,则可以使用USB继电器,将开关两头用导线引至继电器从而使用脚本控制继电器开合从而达到模拟手动按开关的效果。
  本文采用LCUS-1型USB继电器开关:
  将开关信号引人继电器口用串口控制开合,选择波特率为9600,以十六进制(HEX)形式发送A0 01 01 A2打开继电器,发送A0 01 00 A1关闭继电器。
  2.2.2串口写入脚本
  在上节中已经有了开合继电器的方法,接下来就是将继电器“一合一开”封装成一个脚本文件。通过Pvthon的第三方库serial即可实现往USB串口中写入这两个开关指令,合开间隔0.1秒模拟手按开关电源。
  2.3自动化实现开机状态确认
  通常开发完成的Linux设备会运行一个主程序MainApp隋些设备可能还有其他的后台程序,如:BackApp等),此时我们需要确认机器是否正常开机。
  首先可以通过主控服务器远程ssh连接待测设备输入“ps-ef I grep MainApp”指令来判断MainApp是否已经正常启动,如果有返回值则说明已经正常启动,反之则没有,此时停止该台设备的后续操作保留现场,留置开发人员查看,并将结果写入日志。
  然后通过Linux截图工具scrot截图取回并与基准图片进行对比,来确认uI界面是否正常启动。此过程采用PIL库完成,部分代码如下:
  如果对比结果异常则停止该台设备的后续操作保留现场,留置开发人员查看,并将结果写入日志。
  2.4自动化实现正常开机后随机操作测试并关机
  通常成熟的设备会已经录制好冒烟测试脚本并内置测试工具,在确认设备成功开机后,可通过Python调用该工具并随机抽取脚本来执行,并在执行完后立刻执行关机操作以模拟设备在日常使用中的开关机操作,为保障随机操作后实现关机操作,模拟真实用户使用场景,将原冒烟测试脚本库中随机抽取一个脚本,再执行该脚本前随机行数。
  如果设备没有开发好内置的测试工具,则需使用Python第三方库pyautogui自行编写一个简单脚本来代替,该库可以直接模拟鼠标和键盘的输入,代码举例如下:
  关机的方式可能根据设备不同有所差异,但利用前面的模拟按电源键脚本和autogui均可完成设备的模拟手动关机操作。
  2.5自动化实现关机状态确认
  确认设备是否已经关机的方法不难,例如用主控服务器ping待测设备,如果设备正常关机了,则不能够ping成功;如果能够持续ping通就说明设备没有正常关机成功,此时停止后续测试操作保留现场,并写入日志。
  2.6日志
  为保障测试结果的可靠性,日志是必不可少的,决定测试是否通过的直觀指标,也只能是通过一定时间或次数的测试。
  2.6.1日志结构
  日志的生成直接调用Python的文件操作接口生成TXT格式文档即可,每一行作为单次执行记录,每行中条目以制表符分割即可。
  日志中必要的项目:时间、开机是否完成、随机选取的测试脚本名称及行数、关机是否成功等。
  2.7报告
  报告的生成以日志为依据,统计测试的时间、次数、测试通过率、缺陷个数及分布。
  3每日自动化任务
  为了节省设备资源,自动化任务通常放在晚上进行,首先将当日最新的软件包打包完成以保证执行自动化测试任务的设备使用的是最新版本,随后启动执行任务,自动化测试时间为整晚,在早上工作人员到岗前完成报告生成。
  4结束语
  改革开放近40年,随着经济社会的快速发展,尤其是科学技术的进步,我国医疗器械行业取得长足进步。我国的医疗器械生产企业从改革开放之初的数百家,增加到2016年的近15,343家;医疗器械行业的总产值从改革开放之初的微不足道,增加到2016年的近5,000亿元。今天,我国已经成为全世界医疗器械的主要生产国和主要消费国之一。本文从实际出发,完成了一整套基于Linux的医疗设备的自动化测试方案设计,但还可从图像的识别、脚本的全面性上继续改进,后续将会持续更新争取提高更多的研发效率。
转载注明来源:https://www.xzbu.com/8/view-15238540.htm