Testing for us is not a tick mark, it's a way to build quality product. This means our tester's are people who love to break code. Instead spending their time writing detailed step by step 'test cases' our test engineers are busy finding new ways to break the code in real life situation. We focus a lot on automated testing for all the platforms to make sure our time is spent more effectively.
Following is the kind of testing we do for each of our projects :
Developers are mandated to write their own unit tests for each of the classes they build. Passing unit tests is mandatory for each weekly drop.
Smoke / Sanity tests
Each weekly drop is delivered only after automated sanity tests are passed. We do both UI and functionality unit tests.
System / Functionality tests
For each Milestone, we run a complete round of functionality tests using a mix of manual and automated tests
Stress tests and Boundary tests
For each milestone we run tests cases to test stress and boundary conditions for each of our applications
Some of the applications we develop are integrated applications with 2 or 3 systems involved. We run automated integration tests for each milestone for such projects to make sure that our modules work properly even after integration.
Along with our customers we develop and run acceptance tests for each of the product milestone.
Automation tools / technologies
We use following frameworks or technologies often for unit testing