硬件自动化测试

版权声明:知识共享-署名-相同方式共享(CC-BY-SA) https://blog.csdn.net/engrossment/article/details/83869575

概述

我们公司是一家嵌入式解决方案商,提供产品研发评估板和项目定制服务。在这些评估板和项目定制板上,硬件接口众多。为了在批量生产时能够保证每一套板卡的品质,需要全部做品质测试。而要加快测试进程,我们使用应用软件进行了全方位的辅助。也即是开发专门的自动化测试软件。

该测试软件的目标有以下几点:

  • 自动化。自行判断硬件接口功能测试结果并报告。
  • 快速。每一项测试以及测试的准备、报告耗时短。
  • 流程简单。便于板卡的批量品质测试,容易搭建及优化整体操作流程,对测试人员要求低。

设计

本硬件测试自动化系统的软件设计,核心思想是两步走:首先设计开发一个自动化测试框架,负责测试前提条件准备、所有测试项的触发运行以及报告测试结果;然后是设计实现各个硬件接口的独立测试程序,供测试框架使用。

测试框架使用 Python 语言开发。支持对每一套不同的板卡配置不一样的测试项。测试项包括三类。

  1. 获取结果并报告。适用于测试温度传感器等,需要在最后向测试员报告数值,由其判断是否异常。
  2. 在后台不断运行。适用于 LED 测试程序等,需要在后台运行,不断控制 LED 闪烁,由测试员观察是否异常。
  3. 自行测试并报告该接口通过与否。这是常规的测试项,所有测试项的结果由框架统一在最后集中报告。

上述各类测试项,每一项对应一个独立的测试程序,可以使用 shell、C、Python 等程序开发,根据实际情况自由选择。对于第 3 类测试项的程序,需要符合一套简单的退出值标准即可。这些程序的退出值由测试框架捕获,用于判断测试程序的实际测试情况。可以表示测试通过、失败(一般失败或稳定性失败)、前提条件不足无法测试、测试程序运行异常等。

退出值标准的制定,与 Linux shell 的 exit codes 兼容。

应用

我们几乎每一套板卡都是“异构多核”的,但是我们的自动化测试程序必须运行在 Linux 系统。所以 ARM Linux 系统是测试程序的基础。每次测试都要先启动系统,进入 Linux 系统后再启动测试程序。

另一方面,我们的板卡都带有 Nand Flash 或者 eMMC 存储器,用于烧写 Linux 系统。所以在生产部的品质测试时,也同时把系统烧写这一步骤做了。

所以我们整理了一套 SD 卡制作工具,用于制作 SD 启动卡。在这里就是测试卡。里面带有适配本板卡的系统、测试框架和测试程序。测试员烧写完系统后好验证烧写是否正常,启动系统,然后此时就启动自动化测试程序,过一遍所有测试并记录测试情况。

改进

目前该套自动化测试框架已经为我们自己以及客户的定制板测试验证了几十 K 的板卡。但还有不少地方是值得改进的,只是还没安排去做。

  • 提升独立测试程序的严格性。如 UART 接口的多种波特率、ETH 的带宽测试等。
  • 改善测试框架的测试项配置的便利性。使用图形化配置等方法。
  • 改进板卡测试结果报告的形式。例如可以报告到服务器,由服务器程序统一整理整个批次的板卡的品质情况。
  • ……

参考

Linux shell exit codes:http://www.tldp.org/LDP/abs/html/exitcodes.html

扫描二维码关注公众号,回复: 4034366 查看本文章

廖杰良 - 2018-11-08

猜你喜欢

转载自blog.csdn.net/engrossment/article/details/83869575