2.1.4 Design and Conduct Testing The first important issue in testing phase is to select trained testers. Although the testing can be conduct by normal programmer; and the cost of hiring a trained tester is higher than hiring a normal programmer, still using trained testers is more efficient and economical. First of all, a group of trained testers might find bugs at the rate of two to three per hour, while the same number of untrained testers found three bugs per day in the same applications. Secondly, most of the bugs reported by the trained testers turn out to be fixed, while many of the bugs reported by the untrained testers are returned by developers as irreproducible. Last but not least, even with a much higher wage, it cost less for the trained testers to find a bug than for the untrained testers to find the same bug. Consequently, the project will use trained testers instead of normal programmers. When it comes to the testing plan, we first find out everything there is to test by enumerating. Then we use ranking criteria to prioritize the tests, estimate the test efforts. Finally, we generate the most test set. As for estimate the test efforts, an important issue is to apply adequate factors of safety. A factor of safety is a metric. It is applied to a plan to make it more accurate. Factors of safety should be determined based on the error in the previous estimation and then adjusted as needed. For example, a test effort was estimated to require 14 weeks. In reality, 21 weeks were required to complete the test effort. The estimate was low by a factor of 21/14=1.5 When the next test estimation effort takes place, if the same or similar methods are used to make the estimate, multiply the new estimate by a factor of 1.5, and we will get an estimate that has been adjusted to be in keeping with reality. Before conducting the real tests, it is necessary for the testers to specify the goals of testing. The goal as a tester should not be break the product. Instead, it should be perform verification and validation on the product, in other words, to verify that if the product does what is supposed to do. The test effort will mainly conduct system, integration and function testing, using methods of white box testing, black box testing and others. White box testing is a method that tests internal structures and its functionality, while black box testing tests the functionality of an application as opposed to its internal structures. The first step of testing strategies is to conduct unit tests. A unit is the smallest possible testable component. Unit testing is a vital testing level. In the testing phase, the purpose of unit tests is to make sure that each unit is working properly, which is essential for further testing. As the codes have been unit-tested, we conduct top-down approach in our integration testing. The goal of integration testing is to assemble the small units into working subsystems and get a complete system ready for system test. The reason that we use Topdown approach for integration testing is that the system is not static. It is hard to know all the interactions going on in a group of components especially if we separately test them. Throughout the whole testing phase, we will use Google’s well-established bug tracking tools and metrics, which allows us to perform analysis based on several types of measurements taken together.