Perl广泛用于自动化。它可能不是世界上最好的编程语言,但它最适合某些类型的任务。我们来讨论Perl用于自动化测试的位置和原因。
存储测试
什么是存储?数据存储在Files中。
假设,我们有一个与存储相关的测试用例,我们必须在一个分区上写入数据,读取并验证数据是否正确写入。
这可以手动完成,但手动测试仪可以执行相同的10000次吗?这将是一场噩梦!我们需要自动化
自动化与存储相关的任何事物的最佳工具是Perl,因为它具有文件处理技术, REGEX 和强大的文件解析,与其他编程语言相比,它消耗的执行时间最短。
为什么我们需要测试存储?想想大型数据中心,数据将从一个系统连续流向另一个系统,每秒存储1000个记录。测试这种存储机制的稳健性至关重要。
惠普,戴尔,IBM和许多服务器制造商等许多公司都使用Perl作为测试存储和网络域功能的接口。NetApp就是这样一家公司,它完全致力于存储,并使用Perl作为编程语言来自动化测试用例。
如果您对Perl Automation感兴趣,那么建议您了解存储和网络概念。
服务器和网络测试:
PERL广泛用于服务器正常运行时间和性能监控。
考虑一个拥有100台主机(服务器)的数据中心。您需要连接到每个主机,远程执行某些命令。您还需要重新启动系统并检查它何时重新联机。
手动为所有100个主机执行此任务将是一场噩梦。但我们可以使用PERL轻松实现自动化
使用PERL设计实现上述自动化的步骤
从文件中获取有关主机信息的输入,例如(IP,用户名和密码)。
使用Net :: SSH2连接到每个系统并建立执行命令的通道。
执行ex:ls,dir,ifconfig,ps等所需的命令集。
重新启动系统。
等待10分钟以使系统出现。
使用Net :: Ping模块ping系统并打印状态。
我们将编写上述场景的代码。
这里给大家推荐一个软件测试学习群:672899761 这里提供给各位测试同行一个学习交流平台,群里有多年测试经验的大牛给大家分享经验解答问题。群里有关测试的各种文档、视频、软件、工具安装包下载。群主还会不定期更新软件测试的学习资料给大家下载学习,帮助大家减少一些找资料的时间,相信无论是从事测试中还是刚入们的朋友都能找到自己想学习的东西~
我们来一个名为Input.txt的文件,它将存储我们需要连接并执行命令的所有主机的完整信息。
INPUT.TXT
192.168.1.2 root密码
192.168.1.3 root密码
192.168.1.4 root root123
HostCheck.pl
use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new(); # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new(); #Creating object for Net::SSH2
open( FH, "Input.txt" ); # Opening file and placing content to FH
my @hosts = ;
my $ip;
my @ips;
foreach (@hosts)
{
if ( $_ =~ /(.*)s+(w+)s+(.*)/ ) #Regex to get each info from file
{
$ip = $1;
my $user = $2;
my $password = $3;
$SSHObj->connect($ip);
print "Connecting to host -- $ip --Uname:$user --Password:$password ";
my $status = $SSHObj->auth_password( $user, $password );
print "$status ";
die("unable to establish connection to -- $ip") unless ($status);
my $shell = $SSHObj->channel();
print "$_ " while <$shell>;
$shell->blocking(1);
$shell->pty('tty');
$shell->shell();
sleep(5);
#Executing the list of command on particular host. Can be any command
print $shell "ls ";
print "$_ " while <$shell>;
print $shell "ps ";
print "$_ " while <$shell>;
print $shell "dir ";
print "$_ " while <$shell>;
print $shell "init 6 "; #rebooting the system
push( @ips, $ip );
}
}
sleep 600;
foreach (@ips)
{
if ( $ping->ping($_) )
{
print "$_ is alive. " if $ping->ping($_);
}
else
{
print "$_ is not still up --waiting for it to come up ";
}
}
网络测试
Perl不仅限于存储和网络测试。我们还可以使用PERL执行基于Web的测试。WWW-Mechanize是用于Web测试的一个模块。基本上,它不会启动任何浏览器来测试Web应用程序的功能,而是使用html页面的源代码。
我们还可以使用Selenium IDE,RC,Web驱动程序执行基于浏览器的测试。Selenium支持Perl。