Ryan Latta
How To Test A Ball of Mud
#1about 2 minutes
Defining the 'ball of mud' software problem
A 'ball of mud' codebase is too complex to understand and its changes have unpredictable results, requiring a different approach like testing to solve.
#2about 7 minutes
Using system tests to verify infrastructure stability
Simple system tests running frequently in CI can confirm infrastructure is operational, which is a critical first step before tackling code correctness.
#3about 4 minutes
Rebuilding testing skills with incremental unit tests
Start by adding two unit tests per work item to gradually build the team's testing skills and integrate testing into the development process.
#4about 3 minutes
Redefining the 'unit' in a complex codebase
The 'unit' in a unit test for a ball of mud is the smallest testable group of code, which reveals the actual system design, not an idealized one.
#5about 3 minutes
Weighing the risks and benefits of mocking
Mocking can ease the pain of dependencies but risks creating a shadow implementation; isolating dependencies by design is a more robust alternative.
#6about 3 minutes
Dealing with legacy tests and test dependencies
Old, failing tests should be deleted, and new tests must be independent to avoid creating a debugging nightmare where test order affects outcomes.
#7about 4 minutes
Strategies for ensuring test independence and speed
Enforce test independence by running tests in a random order and optimize speed by decoupling code from frameworks, not just through parallelization.
#8about 3 minutes
Adding smoke tests for critical application use cases
Once infrastructure and unit tests are in place, add smoke tests for critical use cases to verify high-level application correctness.
#9about 11 minutes
Conclusion and Q&A on advanced testing topics
The talk concludes by summarizing the need for a different approach to legacy code, followed by a Q&A on singletons, snapshot testing, and parameterized tests.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
02:02 MIN
Practical strategies for testing legacy applications
Testing .NET applications a Tool box for every developer
Unlock full access
Log in or set up an account to access this feature and more.
02:52 MIN
The vicious cycle of untestable legacy code
How Unit Testing Saved My Career
Unlock full access
Log in or set up an account to access this feature and more.
01:50 MIN
Shifting focus from fixing the test to fixing the app
Fighting test flakiness with time machines
Unlock full access
Log in or set up an account to access this feature and more.
06:29 MIN
Why standard TDD fails in complex legacy code
How to TDD in legacy code
Unlock full access
Log in or set up an account to access this feature and more.
06:32 MIN
Enforcing architectural patterns with automated tests
One-click-to-production: Test and automate your application
Unlock full access
Log in or set up an account to access this feature and more.
09:16 MIN
Identifying the common pains of software testing
Write tests you love, not hate
Unlock full access
Log in or set up an account to access this feature and more.
04:45 MIN
Why traditional testing methods fail for microservice architectures
Lessons from Our API Past: Evolving to a Resilient API Future
Unlock full access
Log in or set up an account to access this feature and more.
03:37 MIN
Preventing architectural decay and code structure issues
Antipatterns - nemesis of software development
Unlock full access
Log in or set up an account to access this feature and more.
Featured Partners
Related Videos
How not to test
Golo Roden
Continuous testing - run automated tests for every change!
Christian Kühn
How Unit Testing Saved My Career
Annelore Egger
Your Testing Strategy is broken - lets fix it!
Luise Freese
How to TDD in legacy code
Gil Zilberfeld
Shipping Quality Software In Hostile Environments
Luka Kladaric
Fighting test flakiness with time machines
Filip Hric
Contract Testing - How do you tame an external API that constantly breaks your tests
Vincent Hennig & Anupam Krishnamurthy
Related Articles
View all articles



From learning to earning
Jobs that call for the skills explored in this talk.

CELUM
Linz, Austria
Intermediate
Java
Linux
MySQL
Maven
Oracle
+8




Senior Software QA Engineer C# | Testpläne, UnitTests, Testautomation, TFS, Git, BDD | Inhouse (mwd)
Vesterling Consulting GmbH
€55-85K
Senior
GIT
ASP.NET
Unit testing

Starface GmbH
TypeScript
Continuous Integration

TechBiz Global GmbH
Liège, Belgium
Remote
Docker
Node.js
Continuous Integration

TechBiz Global GmbH
Ulm, Germany
Remote
Docker
Node.js
Continuous Integration