Performance Analyser (PA) is a tool that allows automated and scheduled testing of websites across a number of real browsers as a way to check if content is being delivered to users in the optimal way and delivering consistent, reliable insight into a client’s website’s performance.
Using 3rd party tools to analyse the website’s requests and payloads, PA can perform tests and provide comparisons like single tests amongst different browsers, multi tests for a given browser or even scripted tests for a complete user journey experience.
It can also crawl websites, giving a global picture of overall performance, identify the worst performing pages and even offer performance optimisation advice.
Finally and after tests are complete, PA will offer insights into perceived performance, with metrics such as Speed Index and visualisations such as the Performance Heatmap.
WebPageTest (WPT) is the 3rd party tool used to analyse the website’s content. Currently being maintained by Pat Meenan from Google, WPT is an open source project developed initially by AOL and made publicly available in 2008.
The project is composed of several components, which include:
- WPT agents – These are VM’s which include the WPT tool and will resend the results back to a central server.
- Offline Processing – This is where all the information collection is handled, analysed and stored.
- Admin area – Where the configuration of the tool is available.
- Reporting area – This is the area exposed to the customers and is the place where all the reporting is done and the results are available.
I have worked in this project from May 2014 to October 2015.
Different technologies were used in the different components of the project.
The offline processing was composed of PHP Daemon instances, running on top of a modular Symfony 2 application. Work assignment was retrieved by consuming RabbitMQ queues and data persistence was done using Doctrine 2.
For the admin area, an Silex application was chosen, which is a lightweight symfony based framework, mainly because of its simplicity.
For the reporting area, a Zend 1 MVC application was implemented. Using Bootstrap, Grunt as a task runner and a local repository of Bower for resource management, the frontend also had a certain degree of jQuery and jQueryUI, mainly for visualisation purposes.
Due to the complexity of the several components and their interaction, the development environment was build on top of a vagrant solution (a virtualization tool) for an easy deployment and allowing any new resource to be up to speed in the least amount of time possible.