在自动化测试过程中,最郁闷的事情莫过于没有测试机器供使用,申请机器资源需要层层审批,焦心地等待设备的到来了。测试环境(包含硬件资源、软件资源等)是一套复杂的系统,我们的自动化测试和手工测试都在其中运行,没有环境,一切都无从谈起。
测试环境构建
测试环境(包括自动化测试、手工测试、性能测试等)的搭建,包含硬件设备,如CPU(大量计算型)、内存(大量缓存和服务加载)、磁盘(大量IO读写)、显卡(涉及视频图像处理的产品)、声卡(涉及语音视频的产品)、网卡(网络流量巨大的服务产品),软件资源(HTTP服务器、FTP服务器、Email服务器、测试框架、测试工具、编译执行依赖软件、测试用例管理系统、Bug管理系统等等),以及网络资源(路由器、交换机、VPN、防火墙等等)。
这里罗列了这么多,大部分测试环境都需要考虑这些问题,哪怕你用的是分布式云计算(背后也是在一堆的容器或VM上执行软件服务,本质上还是以上这些资源)。当然,如果有一套成熟的云计算平台,环境搭建就简单多了,否则这些一般都是测试人员自己手动搭建完成。
环境搭建原则
牵涉到原则性的问题,我这里不敢随便说,就给几个建议吧。
1.尽量仿真。
测试环境理想情况是与产品运行环境一致,包括硬件和软件的,但实际上在互联网公司,几乎没有哪家能够做到这点,不现实。但作为测试人员,应该想尽办法做到与产品运行环境一致或接近,越接近,测试结果越可靠,测试数据越有说服力。
2.尽量独立。
条件允许的话,尽量把手工测试、自动化测试、性能测试(这个比较特殊,一般都单独拿出来)的环境隔离,各自在独立的环境下操作执行。为何要隔离开?因为手工测试涉及人为频繁操作,包括各种异常测试,极易把环境的纯净性破坏掉。自动化测试环境独立,不受外界干扰,容易高效率执行自动化测试用例,避免无谓的环境和人为因素造成误判。性能测试一般运行时间比较长,如果放在日常的自动化测试环境中,不利于持续集成和每日频繁的产品验证工作。
3.易扩展。