![]() ![]() ![]() Today automated testing plays a vital role in many software development projects. Automated testing has long been thought critical for large software development organisations, but is often considered to be too expensive and difficult to implement for smaller companies. After the initial cost of setup test automation saves money by supplementing portions of the manual testing effort. Test automation should be seen as an addition, not a replacement, to manual testing. Any software development project, irrespective of its complexity will see cost savings and code quality improvements by automating a percentage of the overall testing effort. There are many testing frameworks available to you. Some are easier than others to implement and work with. Broadly speaking one can categorise the different types of test framework into four groups: Code logic unit testing - Using Unit testing your code is tested from the inside-out. In essence you are designing tests to verify the validity of your code branches (conditional statements), methods and Classes. Functional unit testing - Using Functional tests (Use Cases) your application, possibly web-based, is tested from the outside-in. Instead of focusing on the low-level code constructs, Functional tests utilise the user-interface of your application and validate the intended user behaviour. Integration testing and User Acceptance testing should not be neglected. Integration testing verifies that components within your application interact, as expected, with one another. User Acceptance testing is based upon the testing of specific Use Cases (maybe existing Functional tests) at specific milestones in the development project, say when a build is deemed to be a release candidate. User Acceptance testing can be automated or performed manually. Performance testing - Of all the testing requirements it is performance that has been frequently neglected. Neither Unit nor Functional tests are specifically designed to verify the response time of the features. The application may perform as expected when running the daily tests, however the application may not scale well - ten concurrent users may experience no adverse response times when interacting with the application but 20 users may. The objective of Performance testing is to identify poorly designed code constructs that do not scale. Performance tests should be part of your daily testing regime. In a world where money and time are in abundance one would apply multiple frameworks, or a generic one, that implements Unit, Functional and Performance testing. Thereafter you have to think about Integration and User Acceptance testing. In reality you should strike a balance that takes into account the purpose of the application, the benefits that the application will bring to the community that will be using it, it's criticality to the business or community and the cost of development and subsequent maintenance. Only then can you determine in how far you need to go with implementing and maintaining one or more testing frameworks. ![]() |