Test Early Test Often
There is an oft-quoted axiom of program engineering that states - "found an error in design timecosts ten times less to fix in the coding of a hundred times less than those found afterlaunch. "Barry Boehm, the creator of this idea, actually cites 1:6:10:1000 proportions of costserror in setting requirements, design, coding & implementation phases.If you find errors, start as soon as possible.This means that the unit tests (qqv) for developers, integration testing during assembly & techniquetrials - in that order of priority! Tenant is a well understood program development thatbasically ignored by most program development efforts.Nor is it one step from the evidence.His last first check basically identifies where the defects are. At least, a second step of(post-fix) requires the check to verify that defects have been resolved. With the passage of the tests
you make more confident & should see their convergence projecton the date of delivery. As usually passed no fewer than one tests at any stage isinsufficient.
Regression vs. Retesting
You should repeat the check arrangements to ensure that issues are resolved before development can progress.Therefore, further testing is the act of repeating a check to verify that a defect found has been correctly identified.Regression testing on the other hand is the act of repetition of tests in "parallel" to ensure the areasthat the solution applied or a code change has made no other errors or unexpected behavior.For example, if an error is detected in a particular file handling system can then be correctedby a simple change of code. If that code, however, is used in some of different placesall program, the effects of such change could be difficult to anticipate. What seemsto be a minor detail could affect a separate module of code in the rest of the program. A corrigendum In fact two could introduce errors elsewhere.You may be surprised to know how common this is. In empirical studies haveestimated that up to 50% correction of factual errors introduce additional errors in the code. Given this,it is a
wonder that any program project makes its timely delivery.Better quality control processes will reduce this ratio but not eliminate it. Developers of riskmake occasional errors every time they place their hands on the keyboard. An accidental slia code that replaces a point with a comma, can not be detected for weeks, but could have serious repercussions.Regression testing attempts to mitigate this problem by assessing the "impact zone" affected by achange or correct a mistake to see if it's unintended consequences. Check known lovely behaviorafter a change.It is common for regression testing to cover the entire product or program under check.Why? Because programmers are very bad for being able to track & control change in theirprogram. When a problem that will cause other problems. Usually have no ideathe impact of a change will, nor can they reliably support making these changes.If developers can, with certainty, specify the exact scope & impact of a change they made thentests could be confined to the
affeced area. Oh tester that makes such an assumption however!
White-Box vs Black-Box testing
Evidence of done units of functional code that is known as black box testing because testers treatobject as a black box. They are concerned with the verification of specified input against expectedproduction & not worry about the logic of what happens in between.User Acceptance Testing (UAT) & testing systems are the classic example of black-box testing.White box or glass box testing is based on analysis of the code itself & the internal logic
application. White box testing is often but not always, the competition from programmers. Usetechniques ranging from highly technical or specific testing technology through such things ascode inspections.Although white-box techniques can be used at any stage of the life cycle of a application product that tend to be found in the activities of unit testing.
Verification and Validation
Testers often make the mistake of not keeping an eye on the objective. Narrow its focusto the next phase of application development and lose sight of the bigger picture.The verification tasks are designed to ensure the product is internally consistent. They ensure that the product meets the specification, the specification meets the requirements.and so on.Most of the testing tasks are the investigation - with the final product being tested against somereference rate to ensure the output is as expected.For example, the check designs are usually written requirements documents and specification. This verifies that the application provides the technical requirements of requirements and specifications.However, not against the "correctness" of the requirement!In a large scale project that I worked as a check director, complained to the development teamour documentation was out of date and they were having difficulty constructing valid tests. They grumbled, but finally they said it would update the specifications and provide us with a new version plan our tests.When I arrived the next day, I met two programmers sitting at a computer terminal pair. While two of them ran the latest version of the application, another glance over his shoulder and then write the display behavior of the product as the latest version of the specification!When they complain to the development manager, said "What?" The specification is up As of today, no? "The customer, however, was not amused, they now had no way of determining what the program is supposed to deal with what actually did.The validation tasks are as important as testing, but less common.Validation is the use of external sources of reference to ensure that the internal design is valid, I. e.meets the expectations of users. Using external references (such as the direct involvement of finish users)the check team can validate the design decisions and ensure that the project goes in to the correctaddress. Usability testing is an excellent example of a useful validation method.A note on the V-model "There is a check model application program called V-model, but I won't reproduce here because Iis a dreadful model. It illustrates the different phases of the SDLC testing, matching in a check phaseto a phase of requirements / design.I do not like because it emphasizes the verification work on the validation tasks.Like the waterfall model which is based on each stage from perfect and ultimately, only error detectionthe finish of the cycle. And like the waterfall model is an updated version attempts to correct this, but only serves to muddy the waters.But the V-model illustrates the importance of different levels of testing at different stages of theproject. I leave as an exercise for the reader to uncover it.