Testing

Faker - “Faker is a PHP library that generates fake data for you. Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you.” #php

faker.js - "generate massive amounts of fake data in the browser and node.js" #js

Husky - "🐶 Git hooks made easy"

Metasyntactic variable - “A metasyntactic variable is a specific word or set of words identified as a placeholder in computer science and specifically computer programming. … Metasyntactic variables used commonly across all programming languages include foobar, foo, bar, baz, qux, quux, quuz, corge, grault, garply, waldo, fred, plugh, xyzzy, and thud.[1][3] Wibble, wobble, wubble, and flob are also used in the UK.”

Ministry of Testing - "The biggest and most supportive global software testing community! Join the Ministry of Testing community - a great place to learn all things testing, connect with others interested in software quality, and contribute to the advancement of the software testing craft!"

mre/awesome-static-analysis - "Static analysis tools for all programming languages, build tools, config files and more."

The Science of Unit Testing #video

unicornity/katas - "Read short guide: Learning Test Driven Development with TDD Katas"

Unit testing with timeouts #article - “I am unit testing a class with a property whose value changes often, depending on communication it receives from another component. If the class does not receive any communication for 5 seconds, the property reverts to a default value. … How would you test to be sure that this property has the proper value when simulating various communication conditions?” #q&a

What is Cucumber? #article - "Cucumber reads executable specifications written in plain text and validates that the software does what those specifications say."

Approval Tests

Approval Testing: Agile Testing that Scales #article - "Tests are a form of the specification of the software. That is why, in an agile world where software never "stabilizes", tests can quickly move from being a pillar of quality to a burden and hindrance to change. Approval Testing mitigates this risk by removing the need for explicit assertions and instead managing changes to the system behaviour. Read this article to find out how it can help you 1) create automated tests more quickly ;2) have them test more thoroughly and 3) have them adapt much more easily than you ever thought was possible, also when a large amount of functionality is under test."

Approval Tests - "Unit testing asserts can be difficult to use. Approval tests simplify this by taking a snapshot of the results, and confirming that they have not changed." GitHub

ApprovalTests.Python - "ApprovalTests for python"

Integration Testing

cypress - JavaScript. "The web has evolved. Finally, testing has too. Fast, easy and reliable testing for anything that runs in a browser."

Mutation Testing

Infection - #php

Mutation Testing #article - “Mutation testing is a method of software testing in which program or source code is deliberately manipulated, followed by suite of testing against the mutated code. The mutations introduced to source code are designed to imitate common programming errors. A good unit test suite typically detects the program mutations and fails automatically.”

Pitest - Java mutation testing

Production Testing

TrueWill/tzientist - "Scientist-like library for Node.js in TypeScript"

https://github.com/ziyasal/scientist.js - JavaScript

https://github.com/trello/scientist - Node.js

https://github.com/daylerees/scientist - PHP

https://github.com/joealcorn/laboratory - Python

https://github.com/github/scientist - Ruby

Property-based Testing

Eris - #php

Hypothesis - "Hypothesis is a Python library for creating unit tests which are simpler to write and more powerful when run, finding edge cases in your code you wouldn’t have thought to look for. It is stable, powerful and easy to add to any existing test suite." #python

JSVerify - #javascript

PhpQuickCheck - #php

QuickCheck - “The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases.” #haskell

ScalaCheck - “ScalaCheck is a library written in Scala and used for automated property-based testing of Scala or Java programs. ScalaCheck was originally inspired by the Haskell library QuickCheck, but has also ventured into its own.” #scala

ScalaTest - #scala

Testable Architecture

Auto-mocking Container by Mark Seemann #article - "A major problem with unit tests is to make sure that they are robust in the face of a changing system. One of the most common problems programmers have with unit tests is the so-called Fragile Test smell. Every time you attempt to refactor your code, tests break."

Dependency Injection basics- Fun Fun Function #video

Inversion of Control - Fun Fun Function #video

SUT Factory by Mark Seemann #article - "Maintainability, not only of your production code, but also of your test code, is important, and the DRY principle is just as applicable here."

Test-Driven Development

Effective Unit Testing by Eliotte Rusty Harold #video - "You've been bitten by the testing bug, are thoroughly test infected. Excellent! You're undoubtedly producing more robust, less buggy software faster and at lower cost. Now it’s time to think about what makes unit tests even better. We’ll discuss flakiness, debuggability, reproducibility, speed, specificity, independence, timing, and other characteristics of effective unit tests. Examples will be in Java and JUnit, but the principles apply generally to all languages and test frameworks."

gregmalcolm / python_koans - "As well as being a great way to learn some Python, it is also a good way to get a taste of Test Driven Development (TDD)."

Test-driven development with Haskell - "This project contains my custom workflow for test-driven development in Haskell and serves as documentation for me."

Understanding TDD with Modern JavaScript #video - "Javascript has evolved into an ecosystem with many choices and multiple paradigms of programming. In this session Roy will show how test driven development can still work and be applied to backend and frontend situations using ES2015 as well as the core concepts of TDD and why it can be helpful in your day to day job."

Testing Legacy Code

Testing Legacy Code Elliotte by Rusty Harold #video - "You've been bitten by the testing bug, are thoroughly test infected. Excellent! You're undoubtedly producing more robust, less buggy software faster and at lower cost. Sadly, it wasn't always this way. You're saddled with a large legacy of untested code. Test first development is not an option. Nonetheless unit testing, JUnit, and test driven development can still dramatically improve your maintenance tasks. Learn strategies for retrofitting test frameworks onto existing code, and developing a test suite for code that never had one before."

Last updated