到了 Perl5.6 ,一个新的线程模型引入了,各个线程的数据默认是私有的,而且共享数据的访问需要显式地调用相关的函数来保证同步。这个模型称为“ithreads”。在 Perl 5.6 中, ithreads 模型并没有提供一些 API 供用户调用,仅作为一个内部的 API 供扩展使用。
到了 Perl 5.8,ithreads 模型通过 Perl 的 threads 模块供用户使用,但是 Perl 5.8 同时也保留了 5005threads 模型。这里,用户可以通过配置来选择使用哪一种模型。
对于最新的 Perl 5.10, 5005threads 模型就不再使用了,已从 Perl 解释器中移除了。所以要使用真正意义的、稳定的多线程模块,建议使用 Perl 5.10 解释器。2009 年 3 月 release 的 SLES11 的安装包已经默认使用 Perl 5.10 了。至此,多进程和多线程应该是区别开来了。
Perl 的 threads 模块提供的多线程,应用于我们经典的多线程编程例如 Socket Server 编程、硬件驱动或者适配层编程十分有效,然而对于非线程安全的一些函数或者模块调用就无能为力了,会导致不可预知的错误或者主进程的吊死、崩溃。
自动化测试场景介绍
很多大型 IT 公司都以版本控制来发布一系列的企业级系统产品,为此,周期性地更新产品的每个新版本和已有产品版本间的兼容性和互操作性测试结果,对客户而言,尤为重要。而这类测试由于重复性强,工作量大,所以经常采用自动化。下面举一个自动化测试中的常见场景例子。
假设有一个团队从事企业级产品系统之间的兼容性和互操作性测试,需要在以 1 个月为周期的时间内完成一组配置的兼容性测试,团队成员很少,但是负责的设备却很多,往往每个人需要负责数十台甚至数百台机器,那么就必须采用多任务并发处理的自动化测试。该团队测试存储网络中的服务器,交换机和存储之间的互操作性。服务器包括很多个硬件平台,操作系统包括 Linux,Unix,Windows 和 VMware 等,光纤交换机、主机总线适配器卡和存储产品都涵盖多个厂商品牌。这个团队就需要建立一个端到端的自动化测试流程来支撑其测试任务。
下面是一个典型测试环境的简化图示。
图 1. 测试硬件环境概览图
其中,服务器有不同 CPU 架构的众多品牌;它们上面运行的测试操作系统有 Linux、Windows、VMware 和各类虚拟机。物理层的光纤交换机(FC Physical Layer Switch)是测试工具仪器,用于控制光纤的链路通断等异常测试。
下面是自动化测试环境框图。
文章来源于领测软件测试网 https://www.ltesting.net/