Drivers/goals
- Browser/environment independent modus
- Resource efficient
- Ajax support
- Http session (e.g. login) support
- Possible to automate statistics and report generation
- Possible to deduct changes in performance over time
- Possible to debug when something goes wrong
- Support for different load "profiles"
- e.g. linear increase in load, peak load testing, exponential increase, endurance testing, stress test, etc.
Typical use cases
- Flow: Navigate throw a web based wizard which requires login and steps rely on data entered by the user in previous steps.
- Concurrency/Throughput
- Server response time
- DDoS specific pages
- Crawl: Find dead links
- Try to trigger an error by varying possible input values (bypassing any client-side validation) to verify server-side validation
Important design choices
- Open source
- Use The grinder 3 as the execution framework?
- Hopefully they utilize (or plan to adopt) the features found in java.util.concurrrent from JDK7
- Results from a test run can be persisted to different datasources.
- Statistics and report generation is separated from the actual test run.
- Test configuration outside binary file
- Separate environments config from test config
- XML for test configuration
- Possible to combine functional system testing with non-functional testing?
- Run without a browser (use commons-httpclient to execute http requests)
- Utilize webdriver/Selenium2 to be able to choose with or without browser?
- use jodatime and perf4j where applicable
- jfreechart may be used for reports