Tips to Speed up Your PHPunit Tests

I came across this collection of “Tips to Speed up Your PHPunit Tests“. Apart from the few usual ones, like disabling XDebug and using groups, I found a couple that linked to handy tools:

  • ParaTest – a PHPUnit extension that runs PHPUnit tests in parallel, significantly minimizing the test run time, and
  • PHPUnit Report – a tool that visualizes test run times, clearly showing which unit tests take the longest to run.

Very cool! Needs trying …

Reading postmortems

Once in a while a seemingly straightforward article turns into a goldmine of links and resources. This happened to me today with this one – “Reading postmortems“.

Not only this article itself is a very nice roundup of common sources for system failures, but it also links to a couple of awesome references:

  • Simple Testing Can Prevent Most Critical Failures: An Analysis of Production Failures in Distributed Data-Intensive Systems. This is both a talk and a paper.
  • danluu/post-mortems – a GitHub repository with a collection of publicly available postmortems from a variety of organizations, like Google, Amazon, Facebook, NASA, GitHub, and more.

If you still have no idea what postmortem is, Wikipedia explains.

GrumPHP – PHP quality control tool

GrumPHP is yet another quality control tool for PHP. But unlike a million other – PHPUnit, PHP CodeSniffer, and the like – this one is more of a tying knot. GrumPHP integrates via git hooks. It runs one more of the other tools, making sure that the changes you are committing are up to the par.

The support for other tools is excellent. You’ll find anything from the basic unit tests and coding style checks to commit message formatting and content, Robo tasks, and even custom shell scripts.

PhpMetrics – static analysis tool for PHP

PhpMetrics is yet another tool in the ever growing list of the static code analyzers for PHP.  Compared to the rest, I think this one is the easiest to install and run.  And it produces the most eye candy reports ever.  The generated report is in the HTML format, with fancy charts and graphs, and makes it really easy to spot and fix the issues.

composer-plugin-qa – Composer Plugin for PHP Quality Assurance Tools

composer-plugin-qa is a Composer plugin which adds all the most popular PHP quality assurance tools as composer scripts, so that you don’t have to install and set them up one by one.  The list of tools includes the following:

  • PHPUnit: Testing Framework
  • PHPCOV: CLI frontend for the PHP_CodeCoverage
  • Paratest: Parallel testing for PHPUnit
  • DbUnit: Puts your database into a known state between test runs
  • PHPLOC: A tool for quickly measuring the size of a PHP project
  • PHPCPD: Copy/Paste Detector
  • PHP_Depend: Quality of your design in the terms of extensibility, reusability and maintainability
  • PHPMD: User friendly frontend application for the raw metrics stream measured by PHP Depend
  • PhpMetrics: Static analysis tool, gives metrics about PHP project and classes
  • PHP_CodeSniffer: Detects violations of a defined set of coding standards
  • PHP-CS-Fixer: A tool to automatically fix coding standards issues
  • Security-Checker: Checks if your application uses dependencies with known security vulnerabilities

This list is very similar to the one in my other recent post.

Mailtrap – safe email testing for development teams

Mailtrap is a handy service for any developer or team that needs to test outgoing emails from test and staging environments, without spamming real users.  It’s basically a fake SMTP server with some controls of where and how to forward messages, and ways of analyzing, sharing, and testing of HTML rendering.

Unit Testing – The Big Picture

Unit Testing – The Big Picture” is a super useful for those of us who need a refresher or an overview of what software testing is in general, and how unit testing relates to other types of testing in particular.  It covers a bit of history of testing, different approaches, terminology, and more.

Code quality tools in PHP to check and improve your code

Code quality tools in PHP to check and improve your code” is a list of both some very well known tools and some new kids on the block.  The article covers the following:

PHP Static Analysis

Here are a couple of new tools in addition to previously mentioned PHPStan:

  • Psalm by Vimeo.  The cool thing about this static analyzer is that it supports both PHP 5.6 and PHP 7, unlike PHPStan which requires PHP 7.  (Yeah, I know PHP 5.6 has reached the end of its active support a while back, but there are still quite a few projects around using it.) Additionally, Psalm is easy to control via the XML configuration file,  much like PHPUnit and PHP CodeSniffer.
  • Phan.  This one is a bit trickier to install, as it requires some PHP extensions that I’ve never heard about (like PHP AST).

Free and Open Source Test Management Software

Quality Assurance is an important part of the software development.  There are many tools available that help with a variety of problems in this domain.  At work, we have already been using quite a few of them – mostly those that deal with automated testing – PHPUnit, PHP CodeSniffer, Nightwatch.js, TravisCI, BitBucket Pipelines, and more.

But the above tools are mostly for software developers.  With the expansion of our quality assurance efforts, I am looking at some more tools and this time around, those that are aimed more towards QA engineers and testers.  One particular area that I am currently very interested in is the tool for test (and requirements) management.

My experience in this area is very limited.  I just know that such tools do exist.  Most of them are propitiatory and expensive, and are used by large organizations.  We are not a large company.  Our needs are simpler.  And our budget for this is not great yet.

So, here is what I’m looking for:

  • A web-based tool to manage test cases, test plans, test runs, and test results.
  • This tool should support git version control.
  • This tool should integrate well with GitHub and BitBucket.
  • This tool should integrate well with TravisCI and BitBucket Pipelines.
  • This tool should integrate well with Redmine.
  • This tool should integrate well with HipChat.
  • This tool must support multiple projects.
  • This tool must support both manual and automated tests.
  • Preferably, the tool should be Open Source software.
  • Preferably, the tool should be free (as in money).
  • Preferably, the tool should be written in PHP, as that’s what where we have a lot of in-house expertise.

If you know of a tool that matches all or most of the above, please let me know.

Continue reading “Free and Open Source Test Management Software”