Gustav Boström

Gustav Boström

Thoughts on Software Engineering and Application Security

Test Strategy

In september I had the great pleasure of speaking at the http://agileprague.com/ conference. It was the second time I attended and I was equally pleased with the event this year. Last time I just attended while my wife gave a talk, but this year I decided to share my thoughts on Test Driven Development. The talk was mainly aimed as a broad technical introduction to the topic, but I also brushed on the concept of Test Strategy. Many developers nowadays are familiar with the concepts of Unit testing, Integration testing and Acceptance testing, but it is not always clear how these techniques should be applied in combination for the best effect. The answer to this question is of course different for each environment and therefore I find it time well spent to develop a Test Strategy. Here is an example of how such a strategy might look like in a typical layered web-application:

  1. Strive for 100% test coverage of backend-code helped by unit tests and a mocking framework
  2. Test each layer on it’s own through Unit and Integration testing
  3. Database layer tested with Integration tests
  4. Critical User Stories tested using Acceptance tests expressed in text and tables using Concordion
  5. User interface mainly tested by manual exploratory testing

Here you can find the slides: Test-Driven Development – Why, How and Strategies for Success

Size matters, why and how to measure your heap

I have had to deal with memory problems in Java applications a few times. A lot has been written about this already, but this time I ran into a slightly different issue that surprised some of my colleagues so I decided to write about it here. Contrary to popular belief, a big JVM heap size is not always better when it comes to performance.

The problem

I came to the customer site to help them with their performance problems of a fairly large J2EE-system Web Service/Hibernate/MySQL system. They had several customers running the system, but only the largest was experiencing problems. The application suddenly froze and stopped processing transactions. All sorts of hypotheses were discussed, but no one could really for sure say what the problem was. And there was little data to work on.

read more »