Journal
Building resilient Java services with chaos engineeringModern backend systems rarely fail because of a single broken component. They collapse under compounding stress — a slow database, a misbehaving thread pool,…Testing Java HTTP Clients with MockWebServerWhen you build a Java service that talks to other services over HTTP, you eventually have to prove that your client behaves correctly. Does it retry on a 503?…Harnessing Explained Variance for Robust ML Pipeline Test DataWhen a machine learning pipeline moves from prototype to production, the test data feeding it becomes as critical as the code itself. Engineers in Melbourne…Automated Testing Strategies for Long-Running Spring Batch JobsSpring Batch jobs underpin critical workflows across Australian enterprises, from end-of-financial-year reconciliation in Melbourne's banking sector to…Securing Java Apps With Spring Security TestModern microservices exchange credentials every millisecond, and a single misconfigured filter can expose customer data to the wrong tenant. Hardening an API…Practical ways to mock Amazon S3 in Java tests using S3MockStorage services like Amazon S3 are easy to use in production and painful to test. A code path that uploads reports, downloads configuration objects, or…Testing Java Collections and Streams with JMHJava collection and stream performance can look deceptively simple. A loop over an ArrayList, a lookup in a HashMap, or a filtered stream may appear easy to…Parameterized Tests in JUnit 5 with CSV and Method SourcesParameterized tests let one test method run repeatedly with different inputs. In JUnit 5, this is useful when the behaviour stays the same while values,…Using Arquillian For Reliable Java EE Integration TestsUnit tests are excellent at checking business rules in isolation, but they cannot prove that a Java EE application is correctly wired inside its runtime.…Testing REST APIs with Rest Assured and JSON Schema ValidationA REST API can return HTTP 200 and still deliver the wrong contract. A field may have changed from a number to a string, a required property may disappear, or…