Specialized testing for enterprise applications fills the gap that automated, standard testing cannot fill. The automated, standard testing does not have the necessary tools to conduct testing other than functional testing, load testing and distributed testing. Standard, automated testing does not require the skills of testers; it can be done by developers with minimal training in testing.
Specialized testing is a type of testing that you customize for an application -- from the perspectives of enterprise users. You can change criteria in the test in different scenarios for the same application. The source of criteria is a team of developers, users and business analysts. Examples include:
- Cloud testing to test scalability of enterprise applications
- User acceptance testing to test if user will accept the results
- Modular testing for certain modules of an application
- Agile testing to test against newly developed code with quality
- Incremental testing to test and add a module of the application
Example 1: Cloud testing
Cloud testing has been used in testing how well a cloud computing environment would be able to handle a spike in demand for an enterprise application service. This is made possible with Infrastructure as a Service (IaaS) that allows you to extend the enterprise's data center on-demand. To get this type of cloud testing to work, the data center and the cloud computing environment must use the same virtualization platform. Since latency for WAN links are high, the transfer of the application to the cloud computing provider must be very quick.
Specialized cloud testing involves the use of test tools that are not provided by any vendors. The testers will need to develop tools that best meet the expectations of the developers, business analysts and users. For instance, you may want to use cloud testing to scale up to a specific audience, not all types of audience of users.
Example 2: User acceptance testing
User acceptance testing tests if user will accept the results. This type of testing starts with a plan and then a design and execution of test cases. Planning is the most important of all the steps. During the planning phase, you need to develop the user acceptance testing strategy to describe what criteria to use. Users should provide feedback to this strategy.
Test cases may be created from inputs from the use cases during requirements definition and a team of business analysts and the users. If defects in the application modules are found, you need to document the defects, how you resolve them and the results of fixing the problems. Make sure the users and the business analysts, as well as the specialized testers, are satisfied with the resulting outputs.
Example 3: Modular testing
Specialized modular testing focuses on the whether a module, the smallest testable portion, of an application works properly. You do not necessarily test each module individually or in sequence. You test the module in isolation for the desired outputs. You verify that each module's implemented structure matches the intended design structure. Once you find the module works, you can repeat the process of testing other modules.
Example 4: Agile testing
Agile testing emphasizes testing from the perspectives of users as early as possible. Testing is done as code becomes available and sufficiently stable and often as code becomes available and stable enough from module testing.
For instance, you can conduct test-driven development techniques when you use the extreme programming development method. This type of testing allows developers to write units tests before coding and ensures refactoring (design changes) does not break existing code. From the tests, the developers can write simplest design that will work and add complexity when needed. User acceptance tests are written before coding. You use reusable checklists to suggest tests and listen to user stories of features that need to be added. Tests should be in a format that is easy to understand by customers or users.
Example 5: Incremental testing
Incremental testing is more than modular testing. With incremental testing, you test each module of the software individually and then add another module to continue testing. This is useful when you are trying to find an error in a haystack that you would not be able to find if you test the entire application. You could change test data or criteria for a particular module to find out what the results would be.
Let's suppose you have 1000 modules of an application. You want to test how module no. 20 works with different test data and show the results to users. When you first start, you test the first module and then add the second module to continue the test. When you get to module no. 20 and users are not satisfied with the results, you can back track to a module of issue, make changes to the module, and repeat the process of incremental testing.
Choosing a type of specialized testing for enterprise applications requires planning ahead to resolve the issues of application testing. A team of developers, users and business analysts need to work together in customizing test criteria in different scenarios for the same application. The team will find resolving the issues will make their job of customizing tests for an application much easier.