Challenge Overview
Competition Task Overview
SRT is a web application used to manage service requests. It's built with a java backend and HTML5 / Angular.js frontend with offline / sync capability. Even though it works pretty well now, we are facing some challenges with performance when the app is being used by many concurrent users because each user's browser needs to sync data from the server which causes server load to increase.
The purpose of this challenge is to create a stress test suite to test and analyze the performance of the server.
Requirements
In a previous challenge we tried to improve the performance of sync, the winner of the previous challenge also provided guidelines on how stress tests should be built.
For this challege, you will be required to do the following:
- Follow the guidelines from the SRT HTML5 Sync Performance Improvement.docx document (you will be granted access to our code, register to see details from the forum)
- Create test classes / suite based on the guidelines
- The list of user identifiers to be used should be configurable (each thread will be using a different user identifer)
- 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 similulate concurrent user usage of the app
Other Notes
- We feel JMeter can be a good fit for this, but if you have other recommendation 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
- Oracle
- 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.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.