2017-02-09 26 views
-1

我已經使用PHP編寫了一個bot檢測腳本。我想通過發送漫遊器點擊鏈接來測試該腳本,以便我可以知道該腳本是否有效。我怎樣才能做到這一點?如何測試機器人檢測腳本?

這裏是PHP代碼:

function bot_detected($USER_AGENT){ 
    $crawlers = array(
    'Googlebot', 
    'msnbot', 
    'Yahoo', 
    'Lycos', 
    'facebookexternalhit' 
    ); 

    $crawlers_agents = implode('|', $crawlers); 

    if(strpos($crawlers_agents, $USER_AGENT) === false){ 
     return false; 
    } else { 
     return TRUE; 
    } 
} 
+0

衝浪的網頁使用不同的用戶代理... – Jerodev

+0

如果你建立了**,他們會來看看它是否**,你想他們或不 – RiggsFolly

回答

0

你可以使用Chrome的插件設置自定義用戶代理,所以你可以測試它,例如this one

0

測試的心臟是模擬環境。

首先,下載一個測試套件。我推薦並使用PHPUnit。這將允許您編寫能夠在單獨文件中存在的代碼更改後執行的測試。如果沒有一個測試套件,你將不可避免地寫一個程序,稱爲司機和做同樣的事情,但司機文件通常會丟失或者遺忘,因爲每一個在需要的基礎上編碼,它們是通常不存在將驅動程序存儲在一起或使用一致且可預測的命名模式的系統。出於這些原因,我建議學習一個測試套件,比如PHPUnit,這會迫使您考慮測試使用壽命和文件名稱約定。

一旦你選定了一個測試套件,通過設計測試套件開始。您的簡短程序實際上只是一個函數調用,因此您需要測試將多個值傳遞給函數,然後測試響應以確保獲得預測結果。

在混合PHP的僞代碼,這可能如下所示:

require 'myfile.php' 
class MyTest extends TestClass{ 
     /** 
     * Provides parameters and expected results to the test method. 
     */ 
     public function providerOfTestCases(){ 
      return [ 
       'Googlebot Test Case' => [ 'Googlebot', true ], 
       'msnbot Test Case' => [ 'mstbot' , true ], 
       . 
       . 
       'nonbot test case' => [ 'randomStringData', false ] 
      ]; 
     } 

     /** 
     * @dataProvider providerOfTestCases 
     */ 
     public function testBotDetector($userString, $expectedResult){ 
      $functionResult = bot_detected($userString); 
      $message_on_failure = "When testing $userString, we expect " 
         . ($expectedResult ? "TRUE" : "FALSE") 
         . " but instead the function outputs " 
         . ($functionResult ? "TRUE" : "FALSE"); 
      $this->assertEquals($expectedResult, $functionResult, $message_on_failure); 
     } 
} 

試驗中,如此簡單的功能,會告訴你大部分你已經知道,在您的列表中的每個字符串的殭屍名稱,你會得到一個真實的結果。

除了這個,我想補充日誌記錄功能,您的生產系統,以保持所有被測試的$ USER值的軌道。類似於您所寫的功能的最大問題是,它依賴於您的預設數據列表來準確。沒有辦法事先測試您列出的值實際上是交付給您的系統的值。通過記錄所有經過測試的值,您可以定期檢查日誌以瞭解應考慮的新值和可能的錯誤。

這第二個過程依賴於@RiggsFolly對您的原始帖子的評論。您的日誌文件只能通過實際的機器人訪問進行填充,因此您必須耐心等待日誌填寫。定期檢查日誌,並確保您看到您期望看到的值。

請記住,在你的日誌中包含的功能輸出的結果,這樣就可以TRIPPLE檢查你函數的性能。

我希望所有這一切都有幫助。快樂的編碼!