To begin, we should look at understanding the areas of testing and how we determine success criteria. Let's break down the testing sections:
- Unit test
- Specify and test one point of the system, process, service, etc. This should have a very narrow and well defined scope.
- You can use automated unit test to help build your other tests.
- Integration Test
- Test the correct inter-operation of multiple subsystems.
- This can be done via the unit tests in some cases.
- Performance Test
- To ascertain how the components of a system are performing, given a particular situation
- Since the goal is to establish a baseline benchmark for the system, the initial tests are not going to be compared to anything.
- For this we look at response times to various components of the system.
- Load Test
- The goals of load testing are to expose the defects in application related to buffer overflow, memory leaks and mismanagement of memory.
- Stress Test
- The goal of the stress testing is to analyze post-crash reports to define the behavior of application after failure.
- Regression Test
- A test that was written when a bug was fixed or new code pushed.
- Regression tests are usually written for a specific code, and in your case a specific process or service.
These tests will be specific and crafted to your environment, but the above gives you a general guideline for splitting out the testing of the various parts of your solution.
The tools for testing can be your choice. Pre-canned tests are difficult since BPM tests are crafted to your specific processes. That said, let's talk about a few each:
- Performance - I'd start by thinking about benchmarking the common things like login, logout, opening a process/service, going to a settings page, and perhaps other common pages. Then take the page load times down for comparison later.
- Load - I would recommend (at least initially) not worrying about Load testing system components unless there is a specific concern. Having reviewed the system and JVM, you should be at a high enough capacity to not worry about this for some time.
- Stress - Much like load test, it's unlike this is going to be a concern initially. Java is very good at GC and memory management, and while this is important long term, building up unit tests first will make this and Load testing easier later.
- Regression - Once you have a set of tests, you can regression test anytime you push new code or releases.
So in general, we should look at building up unit tests to get a suite of tests to build upon. The tools will vary depending on what you want to do. Here's a few links to get you started: