Skip to content

Log2Test is a PHP tool that allows you to transform your Production Log into tests (phpCurl, phpunitSelenium...).

License

Notifications You must be signed in to change notification settings

ousamabenyounes/Log2test

Repository files navigation

log2test

Monthly Downloads Build Status SensioLabsInsight

Log2Test is a PHP application that allows you to transform your Production Log into test.
You can export your log to the following stack:

  • Curl: Php Multi Curl Test => A good solution if you have huge apache2 log file or if you don't need to run JavaScript or Ajax calls
  • PhpunitCurl: Phpunit Curl test
  • PhpunitSelenium: Allows you to open all your log file urls' on defined browsers you need to test

Why exporting your production log files to tests?

  • Be able to find broken links
  • Detect Blank/Empty web pages (When a 500 error occurs and no error redirection page is enabled)
  • Before deploying new features to production, you can easily launch real tests on your pre-production environment
  • Launching all your access log on different browsers with Selenium allows you to validate Cross Browser Compatibility

Install

git clone https://github.com/ousamabenyounes/log2test 
composer install

How to use

Let's now see how Log2Test works step by step as seen on the screencast gif file bellow

  • At the beginning, there are no existing tests in the "generated/Curl" directory
  • Given this context:
    • A configuration file (Yaml File) -> config/parameters-log2test.yml
    • An Apache2 Access Log file -> log/test.log
  • Running ./bin/log2test command will generate and run all your tests

Configuration

Open configuration file:

config/parameters-log2test.yml 

Here are all the configuration file's properties:

Property Type Description Default
hostConfig String Array List of hosts to parse see samples here
logFile String Path to your access log file log/test.log
testStack String Available test stack: "PhpunitSelenium" or "Curl" or "PhpunitCurl Curl
beginLine Int Begin parsing at line X 0
numberOfLine Int Number of lines to parse 300
logParserClass String Your log parsing class \Log2Test\Parser\Log\Apache2LogParser
logFormat String Detail the log format of your acces log file '%h %l %u %t "%r" %>s %b'
extensions_allowed Array Only parse files matching these extentions [php, html]
browsers Array List of browsers -> only for phpunit_selenium stack chrome
removeDuplicateUrl Boolean If you want to remove duplicate urls true
pauseBetweenTests Int Add a pause between all generated tests 0
encodedUrls Boolean Allows you to encode all parsed urls true
enabledScreenshot Boolean Take a screenshot on each test false
testResultFormat string Test result format "xml" or "json" xml

Requirements

Phpunit
Selenium Server (only needed if you choose phpunit_selenium as your test stack)

Test

Log2test is tested with PHPUNIT & Behat

./bin/phpunit 

./bin/behat

On each commit, a complete build is launched on http://travis-ci.org/ousamabenyounes/log2test/

Host Sample

You can provide a simple strings like this:

"www.shop2tout.com"

You can also provide an array with source / destination value

    ["www.shop2tout.com", "www.shop2tout.local"],

The first case is the source host you will be searching on your apache logs
The second case is the destination host which will be used on generated tests
We recommend using the second format, so your production website is not affected by the heavy tests you'll launch'

Todo

Add Global Reporting
Add YellowLabTools option on parsing

Contributors