Autotest本身是一个自动化测试框架,可以在上面添加各种测试工具用于系统测试。前几天我在上面添加了几个基于龙芯桌面5.0系统的性能测试工具。现在做以下总结,大体写以下添加的过程。
以unixbench5为例,首先在client/tests目录下有一个文件夹:unixbench5,此文件夹有如下文件:
[root@Autotest-server unixbench5]# ls
control Makefile.patch UnixBench5.1.3.tgz unixbench5.py
其中control是控制文件,添加用例到autotest上时首先用到的,里面有测试名称NAME(很重要,添加新的用例时会修改这里的),测试属性、测试类、测试说明等,最后一行是测试执行的函数:
job.run_test('unixbench5',args='-c 1 -c 4', iterations=3)
run_test函数是job类里的一个方法,里面有很多参数,unixbench5是测试的用例,跟文件unixbench5.py直接对应,一般得相同才可以。"args"是执行参数,"iterations"是执行次数,一般是执行3次取平均值。
unixbench5.py文件是运行测试程序要用的脚本文件,里面有一个"unixbench5"的类,这个名词一般与外部的文件名相同,在这个类下有几个函数:
import os import re from autotest.client import test, utils from autotest.client.shared import error #需要的模块 class unixbench5(test.test):#类,名词应该和外部的文件相同。 """ This test measure system wide performance by running the following tests: - Dhrystone - focuses on string handling. - Whetstone - measure floating point operations. - Execl Throughput - measure the number of execl calls per second. - File Copy - Pipe throughput - Pipe-based context switching - Process creation - number of times a process can fork and reap - Shell Scripts - number of times a process can start and reap a script - System Call Overhead - estimates the cost of entering and leaving the kernel. - Graphical Tests - Both 2D and 3D graphical tests are provided. @see: http://code.google.com/p/byte-unixbench/ @author: Dale Curtis <dalecurtis@google.com> """ #说明文件 version = 5 #版本 def initialize(self): #初始化函数,检查是否含有gcc,作用不是太大 self.job.require_gcc() self.err = [] def setup(self, tarball='UnixBench5.1.3.tgz', args=''): #配置函数,创建源码目录,解压源码文件 """ Compiles unixbench. @tarball: Path or URL to a unixbench tarball @see: http://byte-unixbench.googlecode.com/files/unixbench-5.1.3.tgz """ tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir) utils.extract_tarball_to_dir(tarball, self.srcdir) os.chdir(self.srcdir) if 'graphics' in args or 'gindex' in args: utils.system('patch -p1 < %s/Makefile.patch' % self.bindir) #打patch包 utils.make() #编译安装 def run_once(self, args=''): #执行函数,用来执行测试用例,运行程序,收集结果到特定文件里。 vars = 'UB_TMPDIR="%s" UB_RESULTDIR="%s"' % (self.tmpdir, self.resultsdir) os.chdir(self.srcdir) self.report_data = utils.system_output('export DISPLAY=:0.0;'+ vars + ' ./Run ' + args) self.results_path = os.path.join(self.resultsdir, 'raw_output_%s' % self.iteration) utils.open_write_close(self.results_path, self.report_data)
Makefile.patch是一个patch包,非必须。UnixBench5.1.3.tgz是源码文件,一般会有。
以上就是一个测试用例的基本文件目录。如果要添加新的测试工具,需要修改control、unixbench5.py里的相关信息,还要替换源码目录。
修改完所有的信息后需要在auotest目录下执行:./utils/test_importer.py -t client/tests/test_tool/即可。test_tool是测试用例的名称。修改完后直接登录auotest服务器的网页即可看到用例已经更新到列表里,可以使用了。
总结:
可以看出添加一个测试用例不是很难,在原有的测试用例上简单修改即可,需要有一点的python知识,因为测试用例都是用python写的。