- 浏览: 50138 次
-
文章分类
最新评论
Autotest 是一套开源的完全自动化的测试框架。主要应用于 Linux 内核测试,其内部包含了对 KVM 的自动化测试。 Autotest 系统架构如图所示,通过 Web 前端或者命令行工具提交测试任务, Autotest Server 通过调度器将任务分发到不同的 Client , Client 端任务执行完之后,再将结果返回到结果分析后端, Web 前端与命令行接口即可查看测试结果。
请参考其官方主页(注:由于autotest主页改版,下面的链接可能失效了)。
1) 必要软件
Server 安装过程按照以下链接的说明。
http://www.linux-kvm.org/page/KVM-Autotest/Server_Install
注意:必须要以 autotest 帐户安装 server 。
而且从 /usr/local/autotest/utils/test_importer.py –A 导入 autotest 目录下的用例后 ,从
http://your_ip/afe 界面上 Admin interface->Tests 下面可以看到刚刚导入的用例。
2) 配置 DHCP server ( 或者在同网段的其他机器上搭建 dhcp server)
yum install dhcpd
vim /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
ddns-update-style interim;
ignore client-updates;
allow bootp;
subnet 180.96.41.0 netmask 255.255.255.0 {
option routers 180.96.41.1; # default gateway
option subnet-mask 255.255.255.0;
option domain-name "";
option domain-name-servers 180.96.41.16;
option netbios-name-servers 180.96.41.16; #WINS Server
default-lease-time 43200;
max-lease-time 86400;
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 180.96.41.100 180.96.41.160; #DHCP Range to assign
host h1 {
hardware ethernet 04:93:94:95:96:01;
fixed-address 180.96.41.161;
}
host h2 {
hardware ethernet 04:93:94:95:96:02;
fixed-address 180.96.41.162;
}
……
}
service dhcpd restart
chkconfig --levels 345 dhcpd on
autotest 是通过 tcpdump dhcp 广播来发现虚拟机的 IP 的,并且 autotest 中有一部分测试 ( 例如 remote netperf/jmeter) 都需要在 dhcpd.conf 文件中配置固定 mac 对应固定的 IP ( fixed-address )。
3) 另修改配置文件 global_config.ini
[AUTOSERV]
client_autodir_paths: /usr/local/client_autotest,/home/autotest
将 host 上 autotest 的安装目录修改,使之区别于 server autotest 的安装目录。如果 server 同时配置为 host ,则该选项必须要修改。
HOST 端按照以下链接的说明,需要安装 qemu-kvm 、 genisoimage 等(一般情况下 HOST 上已经安装好这些软件)。
http://autotest.kernel.org/wiki/KVMAutotest/InstallPrerequesitePackagesClient
要作为 autotest host ,需要建立从 autotest server 到 host 之间无密码的 SSH ,大部分测试用例需要 HOST 上的 root 帐户才能执行,所以必须直接登录到 root@host_name 。
root@autotest_server --- à root@host_name
autotest@autotest_server --- à root@host_name
Ø 配置第一个 HOST
在 autotest server 上,分别用 root 帐户和 autotest 用户分别执行以下两条命令:
ssh-keygen -t rsa
注意 ssh-keygen -t rsa 命令,只执行一次。后续新添加的 host ,再配置无密码的 SSH 时,不需要重复执行这条命令。
Then, still on the server, copy it to the host:
ssh-copy-id root@host_name
如果 root 帐户不能直接登录,则可以先借用其他帐户:
ssh-copy-id sdgadmin@host_name
cat /home/sdgadmin/.ssh/authorized_keys >> /root/.ssh/authorized_keys
验证是否配置成功: ssh -p 58422 root@180.96.41.18
如果还是需要输入密码,则需要检查 host_name 上面的 /etc/ssh/sshd_config ,再重新尝试:
PermitRootLogin yes
StrictModes no
ChallengeResponseAuthentication no
UseDNS no
#AllowGroups sshers (注释掉)
Ø 配置后续 HOST
Autotest 集群里的其他 host ,例如 host2, 可以简单地把已配置好的 host1 上的 /root/.ssh/authorized_keys 追加到自己的 /root/.ssh/authorized_keys 。同时注意修改本机上 /etc/ssh/sshd_config 配置是否正确。
用于打压力的 host 还需要安装 jmeter 运行的环境。
Jmeter 的运行需要 JDK 的支持,需要安装 JDK 环境:
yum install java-1.6.0-openjdk-devel.x86_64
同时需要监控异常情况发邮件通知,安装 sendmail:
yum install sendmail
service sendmail start
service sendmail status
如果 sendmail 状态异常,有可能是默认的 SMTP 的 25 号端口已被占用,修改 vim /etc/mail/sendmail.cf
O DaemonPortOptions =Name=MTA
为
O DaemonPortOptions=Port=2025
1.2.4 将 autotest server 配置成 host (不推荐)
如果机器紧张,也可以将 autotest server 配置成 host , 此时需要建立从 server 到 root@server 的无密码的 SSH 。
Windows 与 linux 的 guest image 都有如下需求:
1) 与集群中机器可以相互 socket connect ( 防火墙配置 )
1) 防火墙配置允许集群内机器互连。如果需要关闭防火墙,对于 linux:
service iptables stop
chkconfig –del iptables
2) 配置从 server 到 guest 的无密码的 SSH (这只有 linux netperf remote 这个用例有需要)。
3) Linux image: 配置启动时删除文件 /etc/udev/rules.d/70-persistenct-net.rules
在 /etc/rc.d/rc.local 中加入一行:
rm –f /etc/udev/rules.d/70-persistenct-net.rules
4) Linux: 配置 serial console login
a) 在 VM 启动后,检查系统是否支持 serial:
dmesg | grep tty
当显示出 /dev/ttyS0 和 /dev/ttyS1. 时说明系统支持 serial
b) 修改 /boot/grub/grub.conf, 在 kernel 后面添加参数:
console=tty0 console=ttyS0,9600n8
c) 修改 /etc/ inittab , 添加:
s0 : 2345:respawn:/sbin/agetty -h -t 60 ttyS0 9600 vt102
d) 配置可以以 root 身份登录串口终端: 修改 /etc/securetty ,添加
ttyS0
winutil.iso 中 setuprss.exe 的自启动。
并且根据具体测试用例的要求,需要配置好 iometer/jmeter 等的环境。
总的来说,集群里的所有机器(包括虚拟机)要保证:
1) 从 Autotest server 到其他机器(包括 linux 虚拟机)的无密码的 SSH 。
2) 保证可以相互 socket connect ( host 与 guest 的防火墙配置)
cd <autotest_root>/client/tests/kvm
./get_started.py
该脚本按照 cfg.sample 生成 cfg 文件,并下载测试 KVM 所需的 guest os ISO 。由于我们是自己提供 image ,所以不需要 guest os ISO 。所以第一次运行该脚本,出现 (y/n) 时,可以一致选 n ,但 winutil.iso 必须选 y 。 所有的 image 或 iso 建议放在 autotest 目录之外,否则任务执行时远程拷贝的量太大 !
这是因为 winutil.iso 中包括了测试 windows 所需的套件(如 rss.exe, autoit 等),这个必须要下载。其默认安装路径: /tmp/kvm_autotest_root/isos/windows/winutils.iso 。
当 winutil.iso 在 guest os 中加载后,双击 setuprss.exe 安装这些套件( 配置开机自启动 )。
Autotest 用例是通过 control 文件来执行, control 文件分为两种:
Ø Client control ,只需要由一台 host 执行的任务。这种任务可以有两种方式执行,例如:
/usr/local/autotest/client/bin/autotest path_to_client_control
或者
/usr/local/autotest/server/autoserv -m root@180.96.41.18:58422 -c path_to_client_control
Ø Server control, 一般文件扩展名是 .srv 。是需要由两台或两台以上的 host 执行的任务。这种任务必须要通过 autoserv 执行,例如:
/usr/local/autotest/server/autoserv -m root@180.96.41.18:58422 , root@180.96.41.19:58422 -r ./results -s ../server/tests/netperf2/control.srv
使用 bin/autotest 或者 autoserv 来执行任务,其执行结果不会记录到数据库中,也不维护 HOST 的状态,这两种方式一般作为调试时使用。而 web frontend ,以及 CLI 这两种方式对 autoserv 以及 bin/autotest 进行了包装,将每个 job 的执行状态以及结果记录到 DB 中。
所以,正式执行测试任务时,推荐使用以下的 web frontend 以及 cli 两种方式。
在浏览器中访问: http://180.96.41.19/afe
Ø 创建 host 。注意 host 名必须是可 SSH 的名字 ,如 root@180.96.41.18:58422.
在页面上点击“ Admin interface ” -> “ HOSTS ” -> ”ADD ”
可以设置 host 的标签,分组。
Ø 创建并提交测试任务:
进入主页面: Go to Frontend à CreateJob
按要求填写各项后,然后 Submit Job
如果未设置 reboot_before 和 reboot_after ,默认会在 job 开始前以及结束后,重启该 host 。
Ø 查看 JOB 结果
在 Job List 选中相应的 JOB ,进入 View Job ,查看:
所有 WEB 提交的 JOB 存放结果的目录位于: autotest/results/
可以参照 http://autotest.kernel.org/wiki/CLIHowTo
cd /usr/local/autotest/cli/
Ø 创建 host ,注意 host 名必须是可 SSH 的名字,如 root@180.96.41.18:58422.
./attest host create root@180.96.41.18:58422 -w http://180.96.41.19
Ø 创建并提交测试任务:
./atest job create -m root@180.96.41.18:58422 -f ../client/tests/sleeptest/control --reboot_before=never --reboot_after=never -g -v -w http://180.96.41.19 yupiwang
如果未设置 reboot_before 和 reboot_after ,默认会在 job 开始前以及结束后,重启该 host 。
2 KVM 配置修改
KVM 的自动化测试目录在 client/tests/kvm 目录下,针对虚机的测试配置,包括 base.cfg , subtest.cfg , guest-os.cfg , tests.cfg 等配置文件(这些配置文件由 get_started.py 根据 samples.cfg 生成)。
Ø base.cfg 负责虚机的通用的基本配置,包括 name 、 mem 、 image 、 nic 等信息。内部主要需要修改的项包括 bridge, vms, main_vm
qemu_binary = /usr/libexec/qemu-kvm
qemu_img_binary = /usr/bin/qemu-img
Ø guest-os.cfg 负责针对各操作系统的特有的参数,内部主要需要修改的项是:
修改 windows 的 winutils.iso 的实际路径 :
Ø subtest.cfg 负责 KVM 虚机各个子测试用例的相关参数。这个根据测试用例的需求作相应的修改,比如 netperf 的测试时长、测试类型等。
Ø tests.cfg 为一个总括的测试配置,其最终决定了该测试跑什么测试用例、测试用例的顺序。
其中,配置文件的格式参见:
http://www.linux-kvm.org/page/KVM-Autotest/Test_Config_File
并且,在 KVM 目录下,使用以下命令可以查看 tests.cfg 描述的测试用例中的 key-value 集合是否和预期一致:
../../common_lib/cartesian_config.py tests.cfg
../../common_lib/cartesian_config.py -c tests.cfg
../../common_lib/cartesian_config.py --verbose /path/to/cfgfile
在修改配置时,必须要注意的是,如果同时跑在集群内多个任务,必须要把 nic_mac 指定为不同的值,以获取不同的 IP 地址。同时,如果一个 host 上同时跑多个任务创建多个 VM ,还需要把各任务的 image_name 指定为不同的镜像。
3 KVM 测试用例的添加
KVM 的测试用例目录为 client/virt/tests 和 client/tests/kvm/tests ,前者为 autotest 为虚拟机提供的通用测试用例,后者为专为 kvm 应用。
需要多机协调进行的,需要放到 server/tests 目录下,只需要单机完成的,放到 client/tests 目录下。
测试用例的添加具体细节同时可以参考:
http://autotest.kernel.org/wiki/KVMAutotest/WritingNewTests
http://autotest.kernel.org/wiki/ControlHowto
http://autotest.kernel.org/wiki/ServerControlHowto
http://autotest.kernel.org/wiki/Autoserv
写好对应的 control 以及相应脚本后,使用以下命令重新向 WEB 导入用例:
/usr/local/autotest/utils/test_importer.py -c
/usr/local/autotest/utils/test_importer.py
相关推荐
《AutoTest-master.zip——自动化测试框架构建指南》 在当今的软件开发领域,自动化测试已成为不可或缺的一部分,它能够显著提高测试效率,降低错误率,并确保软件质量。本资源"AutoTest-master.zip"提供了详尽的...
autotest, 在Linux上,自动测试完全自动化 自动测试:在linux平台下完全自动化测试自动测试是一个完全自动化测试的框架。 它主要是为了测试Linux内核,尽管它对许多它的他函数,如限定新硬件有用。 它是GPL下开源...
在Ruby on Rails开发中,测试是确保代码质量与应用程序稳定性的重要环节。Rails提供了多种测试工具,Autotest和Spork就是其中两个常见的辅助测试工具。本文将详细介绍如何在Rails环境中安装和配置这两个工具。 首先...
"autotest-devices稳定版"是一个专为自动测试设备设计的解决方案,旨在提高测试效率,确保软件产品的质量和稳定性。"autoTest_devices"这一名称暗示了它可能是一个用于控制和管理测试设备的库或工具,用于自动化执行...
在移动应用开发中,特别是在安卓平台,自动化测试为开发人员和测试工程师提供了一种快速、可重复的方式来检测软件缺陷,并确保应用的稳定性与性能表现。 本文档的标题为“Android autotest 安卓app性能自动化测试”...
集成这两者能够实现跨浏览器、跨平台的自动化测试,提高了测试覆盖率。 **Python库和Jenkins集成** `RF.exe`可能是Robot Framework的命令行执行器,用于运行测试套件。`pyodbc-3.0.7.win32-py2.7.exe`是Python的...
本项目是基于Java的lmc-autotest全链路自动化测试工具设计源码,包含735个文件,其中包括475个JavaScript文件、77个Java源文件、69个PNG图片文件、39个CSS文件、18个Markdown文档、15个JPG图片文件、15个FTL文件、7...
Autotest_platform 是一款基于 POM 模式开发的 Web UI 自动化测试平台,通过选择绑定好的 selenium 的关键字,比如打开 url,左键点击,输入文本等等这些动作,背后的代码已在后端封装好,前端只需要像填表格来设计...
- **框架简介**:Autotest是一个用于全自动化测试的框架,主要用于Linux内核的测试,同时也适用于新硬件的资格认证、虚拟化测试以及其他用户空间程序在Linux平台上的测试。 - **开源与贡献者**:作为一个开源项目,...
7. **系统稳定性测试**:长时间运行各种任务,观察系统是否会出现崩溃、重启或其他异常现象。 8. **安全性和隐私测试**:确认应用程序的数据加密、权限管理、隐私保护等功能是否符合标准。 9. **兼容性测试**:...
"AutoTest 检测串口传来的测试指令"这个项目显然涉及到自动化测试,特别是通过串行通信(COM)接口来接收和处理测试指令。COM接口是计算机硬件和软件之间进行通信的一种常见方式,而SYSTRAY可能指的是系统托盘,即...
基于Python和CSS的Autotestplat自动化测试平台设计源码项目,是一套用Python语言和CSS样式共同构建的综合性自动化测试系统。这个系统由132个文件组成,其中包括26个JavaScript文件、24个Python脚本文件、23个CSS样式...
4. **页面对象模型(Page Object Model)**:autotest-hyrobot支持使用页面对象模型设计测试脚本,将页面元素和操作封装在独立的对象中,提高代码复用性和可维护性。 5. **报告生成**:执行测试后,框架能生成详细...
在标签"autotest ate"中,"autotest"代表自动化测试,这强调了ATE的核心特性——通过软件控制实现测试的自动化,以提高效率,减少人工干预,降低成本,并且可以进行更精确和可重复的测试。 Advantest_ATE.pdf文件很...
《接口自动化测试实践——Python语言实现》 在软件开发中,接口自动化测试是不可或缺的一环,它能够有效地提高测试效率,降低人工出错的概率,确保系统间的交互无误。本资料包“autotest_第一版.7z”专注于Python...
"autotest"是一个专注于Linux平台的全自动测试框架,它结合了Python的强大功能,使得自动化测试更加便捷高效。在这个场景中,我们将深入探讨Linux环境下的自动测试,特别是与Python相关的技术。 首先,我们要理解...
"interface-autotest-py.zip"这个压缩包文件很可能包含了一个Python实现的接口自动化测试框架。从标签"autotest"我们可以推断,该框架主要用于对Web API或RESTful接口进行自动化测试。 接口自动化测试通常涉及到...
自动化测试是软件开发过程中的一个关键环节,它通过使用预先定义的脚本或工具来执行测试任务,以验证软件功能、性能和稳定性。相比于手动测试,自动化测试具有速度快、准确性高、可重复性好等优点,尤其适用于回归...
参考链接: + flask +Selenium自动化测试用例管理,执行平台自动化测试用例整理分解-百度首页 :使用python多进程模块multiprocessing并发执行测试用例autotest_platform注:2019-03-25:添加接口测试模块,具体请...