What is testing?

Testing involves operation of a system or application under controlled conditions and evaluating the results (eg, 'if the user is in interface A of the application while using hardware B, and does C, then D should happen'). The controlled conditions should include both normal and abnormal conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn't or things don't happen when they should. It is oriented to 'detection.'

Organizations vary considerably in how they assign responsibility for system design and testing. Sometimes they're the combined responsibility of one group or individual. Also common are project teams that include a mix of testers and developers who work closely together, with overall system processes monitored by project managers. It will depend on what best fits an organization's size and business structure.

What is verification? validation?

Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. This can be done with checklists, issues lists, walkthroughs, and inspection meetings. Validation typically involves actual testing and takes place after verifications are completed.

What is a walkthrough?

A walkthrough is an informal meeting for evaluation or informational purposes. Little or no preparation is usually required.

What is an inspection?

An inspection usually has 3 to 8 people including a moderator, reader, and a recorder to take notes. The subject of the inspection is typically a document such as a requirements spec or a test plan, and the purpose is to find problems and see what's missing, not to fix anything. Attendees should prepare for this type of meeting by reading thru the document; most problems will be found during this preparation. The result of the inspection meeting should be a written report. Thorough preparation for inspections is difficult, painstaking work, but is one of the most cost effective methods of ensuring quality.

What are 5 common problems in the system development process?

  1. Poor Requirements => If requirements are unclear, incomplete, too general, or not testable, there will be problems.
  2. Unrealistic Schedule => If too much work is crammed in too little time, problems are inevitable.
  3. Inadequate Testing => No one will know whether or not the program is any good until the customer complains or systems crashes.
  4. New Features => Requests to pile on new features after development is underway; extremely common.
  5. Miscommunication => If design specialists do not know what is required, problems are guaranteed.

What are 5 common solutions to the system development problems?

  1. Solid Requirements => Clear, complete, detailed, cohesive, attainable, testable requirements that are agreed to by all players.
  2. Realistic Schedules => Allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation; personnel should be able to complete the project without burning out.
  3. Adequate Testing => Start testing early on, re-test after fixes or changes, allocate adequate time for regression testing and bug-fixing.
  4. Stick to Initial Requirements => Be prepared to defend against changes and additions once development has begun, and be prepared to explain consequences. If changes are necessary, they should be adequately reflected in related schedule changes. If possible, use rapid prototyping during the design phase so that customers can see what to expect. This will provide them a higher comfort level with their requirements decisions and minimize changes later on.
  5. Communication => Require walkthroughs and inspections when appropriate; make extensive use of group communication tools - e-mail, groupware, networked bug-tracking tools and change management tools, intranet capabilities, etc.; insure that documentation is available and up-to-date - preferably electronic, not paper; promote teamwork and cooperation; use prototypes early on so that customers' expectations are clarified.

What is the system life cycle?

The system life cycle begins when a product is first conceived and ends when it is no longer in use. It includes aspects such as initial concept, requirements analysis, functional design, internal design, documentation planning, test planning, coding, document preparation, integration, testing, maintenance, updates, retesting, phase-out, and other aspects.