虚拟机(Virtual Machine)和容器(Container)是两种流行的虚拟化技术。

虚拟机模拟机器的硬件,包括了完整的操作系统和应用,它一旦被开启,预分配给它的资源将全部被占用。容器是运行在宿主机上的一个进程,多个容器之间使用同一个宿主机的操作系统内核。容器相对于虚拟机启动更快、占用资源更少,但隔离和安全性要弱于虚拟机。

测试人员为了准备不同的测试环境,往往使用可视化的VMWare、VirtualBox软件,来模拟不同的操作系统和浏览器。本文介绍另外一种Qemu+KVM的虚拟化解决方案,通过它在自动化测试中,我们可以使用命令行,按需地自动创建、销毁和管理虚拟测试机。另外,了解这种方案,也是后续自动化测试平台搭建的一个铺垫。

这里使用Ubuntu20.04桌面版来作为宿主机,搭建虚拟化环境。

(1)验证主机是支持虚拟化,有输出表明支持。

root@pve:~# egrep -o "(vmx|svm)" /proc/cpuinfo vmx
vmx
vmx

(2)安装虚拟化软件

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients qemu virt-manager bridge-utils
sudo service libvirtd restart

老的Ubuntu系统,请用以下命令替换。

sudo apt-get install qemu-kvm libvirt-bin qemu virt-manager bridge-utils
sudo service libvirt-bin restart

(3)在配置虚拟机时(本文第6步中),若需要将虚拟机链接到网桥,请编辑文件/etc/netplan/01-network-manager-all.yaml为以下内容。如果不明白网桥其意,暂可忽略,另外文件名不同操作系统可能会不一样。

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1:
      addresses: []
      dhcp4: true
  bridges:
    br0:
      interfaces: [eno1]
      dhcp4: no
      addresses: [192.168.0.56/24]
      gateway4: 192.168.0.1
      nameservers:
        addresses: [114.114.114.114]

(4)下载系统和驱动

  • 这里下载微软Win10官方光盘镜像;
  • 这里下载虚机I/O设备驱动,我选择的是稳定版virtio-win-0.1.185.iso。

(5)打开虚拟机管理工具

  • 在图形界面中打开终端,输入virt-manager,启动虚拟机管理工具;
  • 图中显示的QEMU/KVM表明,已成功连接到本地服务;
  • 如果状态为断开,请双击尝试连接,若显示不能连接到libvirtd服务,可重启机器修复;
  • 您也可以通过点击菜单“文件->添加连接”,来连接和管理远程宿主机上的虚拟机。

(6)新建虚拟机

  • 点击菜单“文件->新建虚拟机”,打开虚拟机创建向导;
  • 选择前面下载的Win10镜像文件作为本地安装介质。
  • 网络设置页面,选择“主机设备”也就是宿主机的网卡,这样虚拟机会作为局域网中的一台电脑而存在。
  • 按向导完成其他设置,并保存。

(7)设置虚拟机

  • 双击打开虚拟机窗口,点击”查看->详情“,进入虚拟机属性页面;
  • 点击引导选项卡,设置系统从光盘启动;
  • 点击左下角”添加硬件”,增加一个光盘,指向下载的virtio驱动。

(8)安装虚拟机

  • 启动后,自动从光盘安装系统;
  • Windows安装向导中,选择加载驱动程序;
  • 选择virtio驱动CDROM里,NetKVM目录下对应系统的文件;
  • 完成后续的安装步骤。

(9)系统配置

  • 安装完成后,再次打开虚拟机窗口;
  • 进入CDROM选项卡,删除安装光盘;
  • 启动虚拟机,更新系统,安装测试相关软件;
  • 在命令行输入netplwiz,用户账号页面中,取消勾选“要使用此计算机必须输入用户名和密码”,然后输入账号和密码;
  • 如果需要开机运行程序,执行相应操作,可进入目录c:\ProgramData\Microsoft\Windows\Start Menu\Programs,创建BAT文件(可选)。

专题目录


陈哥聊测试
158 声望3.3k 粉丝

资深敏捷测试顾问,国内知名项目管理软件禅道团队成员。