Testing
Testing is a critical part of the development process and should be designed in at the start. You need to answer seven questions about testing during the design stage, the 7 Ws, Who, What, When, Where, Why, Way, and Worth.
Who
Who should perform the testing and who should check the testing? During the design stage, you will list people with an interest in the successful completion of the development project. Everyone of them should be listed in testing. If they are part of a group wanting the same tests, they can appoint a representative to perform the tests.
You should appoint someone to sit with the customers to get a good idea of the testing they will perform during the beta testing. You then appoint someone to perform the same tests during your alpha development stage. You might be able to automate most of the tests.
What
What should you test? Everything listed in the design should be tested. The first tests will prove that specific inputs product specific results. Later tests will run various mixtures of actions and transactions at high volumes to prove they work together.
When
When do you test? Any time something changes. Automation helps you repeat previous tests to ensure a new change does not wreck something you think is unrelated. The first test would apply to a specific change. The next test would be to run all the automated tests for any changed code. You would then run an application level test to prove the data is flowing through the system without damage.
Where
Where do you perform tests? A developer would test on the developer's test system. The change would then move up to a test server for system wide quality tests. Your customers would then run there tests on the test server. The tests would then join together in a test server where you could run high volume tests of all features.
Why
Why is there so much testing? Why do you have to design the testing back at the start of the development? If the tests are not designed in from the start, the project will run out of money before the testing starts, the users will not be available to run their tests when you need them, and the tests will leave out all sorts of details buried in the design meetings.
Way (How)
You need to look at the way you will run the tests. Outsourced development frequently fails due to the user testing falling out of synchronisation with development. The developers dismiss failed tests because "that was old code". You need to use test data covering all the real data but without breaching the user's privacy.
Worth (Cost)
Cost is something you have to cover up front. If the application is worth developing, it is worth testing. You need to list up front the cost of tests and the value they provide.
When everything is covered in the design, you have statements from the customer covering the time required for testing, who will pay for each bit of testing, and a base for solving the old argument about who should cover the cost when code fails and you have to rewrite.