NVMe SSD 自动化平台

GNU General Public License v3.0
python
linux
yuwen123441 · December 16, 2019 · 1417 次阅读 · 1 条评论

NVMe 自动化测试平台

这是NVMe SSD 设备的测试平台,用户可以用于测试NVMe协议相关的内容

为什么开发这个平台

  • 随着NVMe SSD 的普及,国内做NVMe 芯片的厂商越来越多,对NVMe测试需求也逐步增加,开源的NVMe测试平台可以帮助厂商快速搭建自己的测试场景。
  • 现在市场上NVMe的测试设备都很昂贵,一般需要购买测试设备,还有测试软件的license,进行NVMe测试的成本很高,搭建一个NVMe开源自动化测试平台,可以降低测试成本,同时集中大家的力量一起,完善测试用例,增加测试覆盖。

测试平台

  • Linux

开发语言

  • Python

框架结构

框架结构介绍

  • 如下图所示,NVMe SSD 设备链接插在PCIE 接口上,我们可以通过操作系统驱动层的ioctl 和SSD 进行交互, IOCTL 接口如下:
    #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
    #define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io)
    #define NVME_IOCTL_IO_CMD _IOWR('N', 0x43, struct nvme_passthru_cmd)

  • 根据ioctrl 相关的接口,使用C 语言,我们开发了一组和SSD 进行交互的接口,用户帮助我们实现和NVMe交互, 如下:
    int nvme_fw_download(int fd, __u32 offset, __u32 data_len, void *data);
    int nvme_fw_commit(int fd, __u8 slot, __u8 action, __u8 bpid);

  • 有了step2中开发的动态链接库中,使用python开发相关的NVMe 接口,这部分库需要实现相关的NVMe功能,如实现 get log page 或者identify 等功能

  • NVMe相关的python库的基础上,开发对应的测试用例和测试套

已经实现的NVMe库

  • IO
  • Get log page
  • Identify
  • Firmware download commite
  • get set feature
  • namespace
  • format

如何开发测试用例

  • 测试用例采用nosetests 作为用例管理框架,nosetest是基于Python的自动化测试框架, 易于编写,测试报告也完整。
  • 用户可以在 “test case” 目录下面开发所需的case,模板如下

如何执行测试用例

  • 在测试用例的目录下,执行nosetest的命令执行
    执行单个测试用例:nosetests -s test_identify_controller.py:TestIdentifyController.test_vid
    执行整个测试套:nosetests -s test_identify_controller.py:TestIdentifyController
  • nosetests 在执行中,还有其他许多功能,可以参考: https://nose.readthedocs.io/en/latest/man.html
评论列表
匿名 发表于 February 27, 2020

kylinTOP是一款国产优秀的测试平台,支持自动化(HTTP接口,web,app)、性能测试、业务监控。业界自动化工具录制后基本上还是要维护脚本代码(包括:qtp,selenium,robotframwork等),对用例的维护是相当的耗时,也此是长期以来自动化叫好叫卖的原因,很多公司使用一段时间,消耗了大量人力,也看不到时实际的效果,积极性不段的降低。不过还是有好的产品分享给大家,kylinTOP是一款难得好用的自动化测试工具。完全跳出了代码维护怪圈,是所见即所得的操作界面,不需要代码维护。kylinTOP具有大量的智能属性,如:支持元素智能判断、步骤智能等待等一系智能化的操作。可以给测试人员节省大量的时间,优其是在版本不段变更的情况下,也能很好的识别元素。优其适合自动化不懂的人员,学习起来非常容易。