CheckBox Navigation 1
Using Checkbox
1. Getting Started
Installation
:
Checkbox can be installed from a PPA.
$ sudo add-apt-repository ppa:hardware-certification/public
$ sudo apt-get update
$ sudo apt-get install checkbox-ng plainbox-provider-resource-generic plainbox-provider-certification-client plainbox-provider-checkbox canonical-certification-client
plain - box-provider-certification-client包将拉出许多与桌面相关的包。
如果打算在服务器上运行测试,请转而运行以下命令:
$ sudo add-apt-repository ppa:hardware-certification/public
$ sudo apt-get update
$ sudo apt-get install checkbox-ng plainbox-provider-resource-generic plainbox-provider-certification-server plainbox-provider-checkbox canonical-certification-server
要运行命令行版本的checkbox ,请在终端上运行checkbox-cli
。
您将看到测试计划选择屏幕:
选定测试计划后,可以选择要运行的各个测试:
当测试运行时,结果被保存到文件中,程序提示将它们提交到 Launchpad。
2. Checkbox Command Line
当checkbox 运行时没有任何参数,即:
$ checkbox-cli
交互式会话使用默认选项启动。
$ checkbox-cli startprovider com.acme:example
该命令还将向该提供程序添加示例单元,以创建一个空提供程序, 使用——empty
选项,例如:
$ checkbox-cli startprovider --empty com.acme:another-example
-
(2) checkbox-cli list
list命令打印出下列类型的所有单位。
目前有以下类型你可以列出:- job
- test plan
- category
- file
- template
- file
- manifest entry
- packaging meta-data
- exporter
- all-jobs (this special type list both, jobs and templates generating jobs and has a different output formatting)
example:
$ checkbox-cli list job
$ checkbox-cli list "test plan"
$ checkbox-cli list all-jobs
Note
对于像
test plan
这样的多单词类型,记得转义中间的空格,或者引用类型名。
-
Output Formatting
对于"all-jobs"组,可以根据需要对输出进行格式化。在列出
all-jobs
时,使用——format
选项。该字符串将使用列出的作业的属性来插入。调用checkbox-cli list all-jobs——format ?
查看可用属性。如果作业定义没有指定的属性,则将在其位置打印<missing $property_name>
。附加属性——当列出所有作业时,将向格式化程序提供unit_type
。对于普通作业,它被设置为job
;对于使用模板单元生成的作业,它被设置为template job
。
Example:
$ checkbox-cli list all-jobs -f "{id}\n\t{tr_summary}\n"
$ checkbox-cli list all-jobs -f "{id}\n"
$ checkbox-cli list all-jobs -f "{unit_type:12} | {id:50} | {summary}\n"
Note
格式化字符串中的
\n
和\t
分别被解释并替换为新的 line 和 tab。
当使用自己的格式时,作业不加新行后缀——您必须显式地使用它。
-
(3)checkbox-cli list-bootstrapped
这个特殊的命令列出了在引导阶段之后将在设备上运行的所有作业,即在所有资源作业运行之后,以及所有模板都实例化之后。
它需要一个参数,即应该执行引导的测试计划。
Example:
$ checkbox-cli list-bootstrapped com.canonical.certification::default
与checkbox-cli list all-jobs
命令类似,可以使用-f参数对checkbox-cli list-bootstrapped
的输出进行格式化。
更多信息请参见checkbox-cli
列表 Output Formatting部分。
-
(4)checkbox-cli tp-export
tp-export
将测试计划导出为电子表格文档。测试按类别分组,并按字母顺序与完整描述(或工作总结,如果没有描述)。除了描述,还导出了认证状态(阻断/非阻断)。这个会话类似于
list-bootstrapped
,但是所有的资源作业都返回假对象,并且模板过滤器被禁用以确保模板单元的实例化。默认情况下只返回一个资源对象。唯一的例外是graphics_card资源,其中使用两个对象来模拟混合图形。
Example:
$ checkbox-cli tp-export com.canonical.certification::client-cert-18-04
它可以使用pdf转换器自动生成测试用例指南:
Example:
$ checkbox-cli tp-export com.canonical.certification::client-cert-18-04 | xargs -d '\n' libreoffice --headless --invisible --convert-to pdf
参见Checkbox launchers tutorial教程了解更多细节。
Note
当以文件作为唯一参数调用checkbox-cli时,将隐含launcher。例如:
$ checkbox-cli my-launcher
等价于:
$ checkbox-cli launcher my-launcher
$ checkbox-cli run com.canonical.certification::smoke
Note
上面的命令运行所有id以com.acme开头的作业:
您可以使用多个模式进行匹配,例如:
$ checkbox-cli run .*true .*false
3. Looking Deeper
首先,我们安装了一些“提供者”包。提供者被设计来封装测试描述及其相关工具和数据。提供程序是在Debian包中发布的,这允许我们表达依赖关系,以确保安装所需的外部包,我们也可以分离这些依赖关系;例如,用于服务器测试的提供程序实际上并不包含特定于服务器的测试定义(我们试图将所有的测试定义保存在checkbox 提供程序中),但是它确实依赖于服务器测试所需的所有包。大多数用户都想要资源和checkbox 提供程序,因为它们包含了许多预先准备的测试,但是这个组织允许提供微小的核心和完全定制的提供程序,而不需要外部依赖。
提供程序在配置文件中描述(存储在 /usr/share/plainbox-providers-1
中)。此文件描述在何处从提供程序中找到所有文件。这个文件通常是自动管理的(稍后详细介绍)。提供者可以提供作业、二进制文件、数据和测试计划。
作业或测试是checkbox 所知道的最小单元或描述。它描述了一个单一的测试(历史上称为工作)。最简单的工作是:
id: a-job
plugin: manual
_description: Ensure your computer is turned on. Is the computer turned on?
作业在提供者的作业目录中提供。这个超级简单的例子有三个字段:id
, plugin
和description
。(一份真正的工作也应该包括一个_summary field
。)id标识作业(当然),_description
提供作业的纯文本描述。在本例中,描述显示给用户,用户必须响应,因为plugin
类型是manual
。plugin
类型包括(但不限于):
manual
– 要求用户执行某些操作并报告结果的测试。shell
– 不需要用户交互的自动化测试;测试是通过还是失败取决于脚本或命令的返回值。resource
– 任务,标识系统拥有的资源。(如离散GPU、Wi-Fi模块)。以后,其他作业可以使用此信息来控制其他作业的执行。(例如,如果没有Wi-Fi芯片,就跳过Wi-Fi测试)。user-interact
– 在执行测试之前,要求用户执行一些操作的测试。然后,测试根据测试的输出自动通过或失败。一个例子是keys/media-control
,它运行一个工具来检测按键,要求用户按音量键,然后在最后一个键被按下或用户单击工具中的skip按钮时自动退出。user-interact-verify
– 这种类型的测试类似于user-interact
测试,除了测试的输出将显示给用户,然后用户必须决定测试是通过还是失败。一个例子是usb/disk_detect
测试,它要求用户插入一个usb key,单击test按钮,然后手动验证usb key是否被正确检测到。user-verify
– 用户手动执行或自动运行的测试,并要求用户验证结果是通过还是失败。这方面的一个例子是图形最大分辨率测试,它探测系统以确定支持的最大分辨率,然后要求用户确认分辨率是正确的。