Challenge Overview
Competition Task Overview
LightSpeed is an Excel based VBA application and in this project we are converting this application to a web based app to make it much easier to use. The web app will be an HTML5 app with offline capabilities.
The purpose of this challenge is to create a stress test suite to test and analyze the performance of the server.
Requirements
For this challenge, you will be required to do the following:
- Create a java based command line utility that can be used to generate a configurable number of random users (including profile / division / theatre / permissions) in the application database and automatically save the list of users to a text file. The utility must also support cleaning the test users (including all related data) from the database. You can use the RESTful api provided by the lightspeed app to create users / profiles.
- Create test class(es) that simulates user downloading data from the server
- The list of user identifiers to be used should be configurable (each thread will be using a different user identifier) through a text file (example: you can use the one generated by the utility mentioned above)
- Create a stress test plan using JMeter so that we can simulate the scenario with many concurrent users
- Create a server monitor test plan using JMeter (we use tomcat so you can probably create a test plan to utilize the manager status page to see how tomcat performs)
- Create a small program that monitors CPU usage / Memory Usage of the server (server is linux) and writes the metrics to a log file
- The test suite should provide detailed report of server metrics so that we can evaluate how well the app performs
- Your test suite should NOT depend on our app code, it should assume app is deployed to a server and the test suite only works with the deployed app.
- It must be possible to kick off the stress test for all users simultaneously, it would be unacceptable if we have to kick off the process manually for each user.
- Provide detailed guidelines on how to use your test suite to simulate concurrent user usage of the app
Other Notes
- We feel JMeter can be a good fit for this, but if you have other recommendations please let us know in the forum and we can check
- Please do not hardcode things like database connection string in the code, these need to be configurable
Timeline
This challenge has an aggressive timeline, make sure you pay attention to the deadlines!
Technology Overview
- Java
- JMeter
- Postgres
- Tomcat
- HTML5
- AngularJS
Documentation Provided
Register to download documents from challenge forum.
Final Submission Guidelines
Submission Deliverables
A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Below is an overview of the deliverables:
- Test suite that covers the requirements
- A complete and detailed document explaining how to use your test suite to simulate concurrent user usage.
- Detailed test reports when tested with 5 users, 10 users, 50 users and 100 users and 1000 users, respectively.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.