WOPR7 In the rear view mirror
Submitted by ddowning on Tue, 17/10/2006 - 22:55.
[textile]
It was a privilege to hang out for 4 days with some of the brightest minds in testing, discussing experience reports on agile performance testing, and sharing personal stories and beers at the local pubs in the evenings.
A brief synopsis of the experience reports, in the order delivered (from my understanding; guys, you may want to elaborate):
- James Bach: Developing a performance testing strategy. Developed a use-case simulation in perl as basis for automation consultant to record scripts.
- James Dobson: Performance testing in an Agile environment. An example of using continuous integration using JUnitPerf.
- Julian Harty: Creating synergy between testers and developers. Scrum-based project for improving map point-of-interest searches on mobile phones.
- Gordon McKeown: Enhancing a load testing tool on-the-fly to test a very chatty java app (built w/ Chordiant java code generator) under agile conditions.
- Antony Gorman: Designing and developing a fast-performing historical event analysis system for the a UK transportation agency.
- James Bull: Determine the performance capacity of completely converting a large UK newspaper to a web version. Process for performing agile testing that mimicked Development. Used JMeter, initially recording scripts, later shifting to table of urls when a requirement change removed need to time anything but html; defined min-max thresholds; used Zabbix to monitor system and graph results. Did not test using fully-converted data, and at that point performance ground to a halt. Conclusion: Scrum-like requirements gathering applicable to all performance projects.
- Richard Florence: Performance testing as member of a MS Solutions Agile team on an audio-streaming app. Web services; difficult to record because of signed packets, expiry times, encryption. Tested using Visual Studio Team System, which calls unit-tests tightly integrated with app via APIs. Unit tests are self-maintaining, checked in with code. His performance tests call these functions; load tests data-driven from data in SQL Server, which also stored results (avoids file-contention issues with csv files).
- Ainers Galvans: Performance testing an app using LoadRunner java RMI protocol and the application API.
- Dan Downing: Applying lightweight process for load testing a dynamic and image-intensive ecommerce website using openSTA, quickly resolving the csv file-locking issues that arose from accessing large number of csv files.
- Andrew Coggins: Managing agile testing project for large wireless provider.
- Raymond Rivest: Load testing two vendor solutions for a medical application under pressure of time and distance in two days, using SilkPerformer for one and UI-based load testing for the second.
- Rapid testing is a mindset to test quickly and less expensively, with excellent results (thanks James Bach).
- Expanded universe of performance testing: can (should) begin upstream in development (capital A Agile development); other strategies besides load test phase before deployment i.e., continuous integration testing, unit testing; many open-source tools available (see list below).
- An experience report is a story about what you did, not what you woulda coulda shoulda done.
- Agile testing (capital A) is a subset of agile testing (small a); the latter is widely applicable.
- Fit and FitNesse acceptance testing framework, where tests are expressed as tables of input data and results; the test is run by a small amount of code, and the pass/fail results are portrayed in the same table as colored cells.
- Eclipse and Eclipse TPTP (Test & Performance Tools Platform) - a java UI for load testing.
- Facilita Forecast - a tool to fill gap between open-source and LR for java and .NET apps.
- Python for illustrating use cases.
- Zabbix.org open source monitoring tools
- Leaky Abstractions - exceptions to a model (see article by Joel Spolsky)
- Continuous integration - an extreme form of daily build + smoke test
- Mock Object - Stub code w/ defined return value (e.g., return valid user if send correct user/pswd)
