𝐂𝐨𝐧𝐭𝐢𝐧𝐮𝐨𝐮𝐬 𝐭𝐞𝐬𝐭𝐢𝐧𝐠 is a software development process in which apps are tested continuously throughout 𝚝𝚑𝚎 𝚎𝚗𝚝𝚒𝚛𝚎 software development life cycle. Its goal is 𝘁𝗼 𝗲𝘃𝗮𝗹𝘂𝗮𝘁𝗲 software quality across this cycle, providing critical early feedback.
Continuous testing provides 𝚛𝚊𝚙𝚒𝚍 𝚏𝚎𝚎𝚍𝚋𝚊𝚌𝚔 on the level of business risk in the latest release of the project. This information can then be used to determine if the software is ready to move into the delivery pipeline at any given time. ⚙️
Tests are run early and continuously, exposing application risks soon after they occur. Development teams can then 𝗽𝗿𝗲𝘃𝗲𝗻𝘁 𝘁𝗵𝗲𝘀𝗲 𝗽𝗿𝗼𝗯𝗹𝗲𝗺𝘀 𝗳𝗿𝗼𝗺 𝗺𝗼𝘃𝗶𝗻𝗴 𝘁𝗼 𝘁𝗵𝗲 𝗻𝗲𝘅𝘁 𝘀𝘁𝗮𝗴𝗲. 👌
This method 𝗿𝗲𝗱𝘂𝗰𝗲𝘀 the time invested in finding and fixing bugs. This increases 𝘁𝗵𝗲 𝘀𝗽𝗲𝗲𝗱 𝗮𝗻𝗱 𝗳𝗿𝗲𝗾𝘂𝗲𝗻𝗰𝘆 of delivery of quality software and 𝗿𝗲𝗱𝘂𝗰𝗲𝘀 technical debt.
When software quality efforts and testing are aligned with business expectations, test execution produces 𝗮 𝗽𝗿𝗶𝗼𝗿𝗶𝘁𝗶𝘇𝗲𝗱 𝗹𝗶𝘀𝘁 𝗼𝗳 𝗮𝗰𝘁𝗶𝗼𝗻𝗮𝗯𝗹𝗲 𝘁𝗮𝘀𝗸𝘀.
1️⃣ Testing should be a collaboration of Development, QA, and Operations—aligned with the priorities of the line of business—within a coordinated, end-to-end quality process.
2️⃣ Tests should be logically-componentized, incremental, and repeatable; results must be deterministic and meaningful.
3️⃣ All tests need to be run at some point in the build pipeline, but not all tests need to be run all the time, since some tests are more resource expensive (integration tests) than other (unit tests).
4️⃣ Eliminate test data and environment constraints so that tests can run constantly and consistently in production-like environments.
5️⃣ To minimize false positives, minimize test maintenance, and more effectively validate use cases across modern systems with multitier architectures, teams should emphasize API testing over GUI testing.
Thread on Twitter.