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\n";
my $status = $SSHObj->auth_password( $user, $password );
print "$status\n";
die("unable to establish connection to -- $ip") unless ($status);
my $shell = $SSHObj->channel();
print "$_\n" while ;
$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 \n";
print "$_\n" while ;
print $shell "ps \n";
print "$_\n" while ;
print $shell "dir \n";
print "$_\n" while ;
print $shell "init 6\n"; #rebooting the system
push( @ips, $ip );
}
}
sleep 600;
foreach (@ips)
{
if ( $ping->ping($_) )
{
print "$_ is alive.\n" if $ping->ping($_);
}
else
{
print "$_ is not still up --waiting for it to come up\n";
}
}
網絡測試
Perl不僅限於存儲和網絡測試。我們還可以使用PERL執行基於Web的測試。WWW-Mechanize是用於Web測試的一個模塊。基本上,它不會啟動任何瀏覽器來測試Web應用程序的功能,而是使用html頁面的源代碼。
我們還可以使用Selenium IDE,RC,Web驅動程序執行基於瀏覽器的測試。Selenium支持Perl。
閱讀更多 飛禹德蒙 的文章