Before You Start
Before you start with the actual analysis and definition of tests review the following information:
AEM Architecture - See Basic Concepts to introduce yourself to the architecture and basic principles of AEM.
Documentation - See any of the documentation sections, or How To articles, for further information.
Basic Principles of Testing - You should be aware of the basic principles of Software Testing and Quality Assurance. Preferably you should have experience of testing projects.
There are many websites, books and courses which deal with such principles and so they will not be dealt with in detail in this document.
Assumptions to Avoid - The biggest assumption (made regularly) is that your website will need to service millions of requests every day. In certain circumstances this may be true, but it cannot be assumed.
Although future numbers cannot be predicted with 100% accuracy, observing your existing site and the traffic experienced will give a good indication. You can then make estimates dependent on the factor by which you expect / hope the traffic will increase.
Commitment to Quality - It is of paramount importance that anyone who tests remains neutral and simply reports the results of tests made.
It is the responsibility of the Project Manager to decide on and initiate action(s) dependent upon the results.
Become Involved - Although it is the responsibility of the Project Manager to ensure that all parties are fully involved at any meetings (status, workshops, etc) you should also try to become involved as early as possible in the project cycle, including the information collection and requirement analysis processes.
Involve the Customer - On a similar theme, try to involve the customer (where possible) when defining your test cases and plan.
Types of Tests
There are various standard classifications of tests which are appropriate for use when testing a AEM project. You should be familiar with these to decide which you will use:
These are listed in their chronological order of application.
Units Tests - Tests (usually) made by the development team to ensure that the individual elements behave correctly - albeit in isolation.
Integration Tests - Tests modules when combined. These tests are made after Unit Testing, but before System Testing.
Smoke Tests - These are quick-and-dirty tests used to prove that the software is running and high-level functionality is available. The details are not tested.
Functional Tests - These are used to test the functionality of the software. A series of tests will be designed to cover all functional details, with both expected and unexpected and/or erroneous input.
Black-box tests are functional tests of a complete unit / component / module, performed without knowledge of the internal workings of the element in question.
System Tests - These test the entire system once it has been fully integrated and installed on a suitable platform.
They test the functionality on a black-box basis.
Performance Tests - Performance tests are crucial when testing AEM.