—Scope of testing
—Misunderstanding life cycle testing
—Poorly developed test plans
—Testing constraints
—Training in testing
—Relationship building with developers
—Using tools
—Getting managers to understand testing
—Communicating with users about testing
—Making the necessary time for testing
—Testing “over the wall” software
—Trying to hit a moving target
—Fighting a lose-lose situation
—Having to say “no”
*According to the book “Surviving the Top Ten Challenges of Software Testing, A People-Oriented Approach” by William Perry and Randall Rice.
—Software testing can compensate for the fact that the software development process does not identify the true needs of the user, and thus test to determine whether or not the user’s needs have been met regardless of the specifications.
—Finding defects early in the software development process when they can be corrected at significantly less cost than detected later in the software development process.
—Removing defects of all types prior to software going into a production state when it is significantly cheaper than during operation.
—Identifying weaknesses in the software development process so that those processes can be improved and thus mature the software development process.
—All too often, testing after coding is the only method used to determine the adequacy of the system. When testing is constrained to a single phase and confined to the later stages of development, severe consequences can develop.
—It is not unusual to hear of testing consuming 50 percent of the development budget. All errors are costly, but the later in the life cycle that the error discovered is made, the more costly the error.
—The recommended test process involves testing in every phase of the life cycle.
—Requirements phase: emphasis is on validation to determine that the defined requirements meet the needs of the organization.
—Design and program phases: emphasis is on verification to ensure that the design and programs accomplish the defined requirements.
—Test and installation phases: emphasis is on inspection to determine that the implemented system meets the system specification.
—Maintenance phases: the system is retested to determine that the changes work and that the unchanged portion continues to work.
—Requirements
—Design
—Program (Build/Construction)
—Test Process
—Installation
—Maintenance
—A plan should be developed that defines how testing should be performed.
—Four steps must be followed to develop a customized test plan:
1.Select and rank test objectives.
2.Identify the system development phases.
3.Identify the business risks associated with the system under development. Place risks in the matrix.
—Constraints include:
—Limited schedule and budget
—Lacking or poorly written requirements
—Changes in technology
—Limited tester skills
—A defect encountered during requirement and design is the cheapest to fix.
—Assume that it costs x to fix a defect in the requirement and design phase. Fixing that same defect during the system test phase costs 10x. A defect corrected after the system goes into production costs 100x.
—Each test objective should contain a statement of the objective, and a high-level description of the expected results stated in measurable terms. The users and project team must prioritize the test objectives.
—Usually the highest priority is assigned to objectives that validate high priority or high-risk requirements defined for the project.
—In cases where test time is cut short, test cases supporting the highest priority objectives would be executed first.
—Test objectives can be easily derived from using the system requirements documentation, the test strategy, the outcome of the risk assessment, and the test team assignments.
—Integration
—System Chains
—The Domino Effect
—Reliance on Electronic Evidence
—Multiple Users
—Lack of the skills needed for a specific test assignment constrains the ability of the testers to effectively complete that assignment.
—Life cycle testing cannot occur until you formally develop your processLife cycle testing is best accomplished by forming a test team. The team is composed of project members responsible for testing the system. They must use structured methodologies when testing; they should not use the same methodology for testing that they used for developing the system.
—Measurable
—Attainable
—Realistic
—Timely
August 30, 2008