Starting the shift-left initative by developers writing unit tests (and aiming for 80% code coverage). But no bug reduction! And developers wasting time!
Yes, writing Acceptance Tests is possible on any kind of system architecture - it's ok if it's a Big Ball of Mud, lots of coupling/dependencies, bad code... The reason is because Acceptance Tests are black-box. The *only* prerequisite for Acceptance Tests is that the connection to External Systems needs to be configurable (to switch between real & stub).
Great article! I think one big issue is properly defining what a unit is for a given software solution, in legacy code the first goal is to tame the beast and acceptance test can help setting things in place. But proper unit testing should be the way to write new code in my opinion.
Correct, Acceptance Tests are the only safe way to start writing retroactive tests for Legacy Code. Later when we do decoupling of the code, we could retroactively write Unit Tests.
In the case of new code, we could write Acceptance Tests at the outer level, and Unit Tests at the inner level.
Starting with Acceptance Tests seems like the most practical approach, especially in legacy systems. 🙌
Yes, writing Acceptance Tests is possible on any kind of system architecture - it's ok if it's a Big Ball of Mud, lots of coupling/dependencies, bad code... The reason is because Acceptance Tests are black-box. The *only* prerequisite for Acceptance Tests is that the connection to External Systems needs to be configurable (to switch between real & stub).
Great article! I think one big issue is properly defining what a unit is for a given software solution, in legacy code the first goal is to tame the beast and acceptance test can help setting things in place. But proper unit testing should be the way to write new code in my opinion.
Correct, Acceptance Tests are the only safe way to start writing retroactive tests for Legacy Code. Later when we do decoupling of the code, we could retroactively write Unit Tests.
In the case of new code, we could write Acceptance Tests at the outer level, and Unit Tests at the inner level.