- Software testing process
Process of validating that a piece of software meets its business and technical requirements. Testing is the primary avenue to check that the built product meets requirements adequately.
- Types and levels of testing
- Manual testing: allows tester to locate bugs or defects, use the software as an end user would to identify issues. Execution is undertaken by preparing a test plan document.
- Automation testing: An application does the complete implementation of the software testing cycle. It is a way of simplifying manual efforts into a set of scripts that can be accessed and worked upon by the system. Reduces time considerably.
- Structured software testing: tests and tests cases are derived from an in deep knowledge of the structural code of the software. Taken by a team of devs.
- Unstructured software testing: performed without plan or documentation. It is only intended to run once unless an error is detected, in that case the test is run repeatedly until the error is mitigated.
- Activities and roles in testing
- Requirement Analysis: Identify which are the features of the software that can be tested and how. Requirements can be related to the basic functions of the software or system performance and security.
- Test Planning: Once we know what to test, the next step is to devise activities and resources. A senior Quality Assurance Manager will be involved at this stage to determine the cost estimates for the project.
- Test Analysis: The test conditions are understood and accessed not just through the requirements that have been identified at the first stage, but also another related test basis like the product’s risks.
- Test Design: This part is were it is decided which approach or method would we use to test the software that can be, working with predefined test conditions, setting up a test environment and developing metrics to track the requirements.
- Test Implementation: Plan how the test structure that has been devised in the design will be implemented.
- Test Execution: final part were we set in action every part of the test planning, a record of the defects or error is done and also tracking of the metrics identified in earlier stages.
- Testing environments
A test environment is a combination of hardware, software, data, and configuration that’s required to execute test cases. You must be sure to configure the testing environments to mimic production scenarios.
Types:
- Integration Testing Environment: In this type of environment, you integrate the individual software modules and then verify the behavior of the integrated system.
- Performance Testing Environment: You use this environment to determine how well a system performs against performance goals. The performance goals in question can be concurrency, throughput, response time, and stability.
- Security Testing Environment: security teams try to ensure that the software doesn’t have security flaws and vulnerabilities in the areas of confidentiality, integrity, authentication, authorization, and non-repudiation.
- Chaos Testing environment: Understanding how the failures of individual parts of the system can potentially cascade and ruin the whole system is the ultimate goal of chaos testing.
- Test Case Design techniques (open and closed views)
- Black box techniques: These techniques leverage the external description of the software such as technical specifications, design, and client’s requirements to design test cases. The technique enables testers to develop test cases that provide full test coverage. It divides in the following categories: Boundary Value Analysis, Equivalence Partitioning, Decision Table Testing, State Transition Diagrams and Use Case Testing
- White box techniques: based on the internal structure of the software. This technique exhaustively tests the developed code. Developers who have complete information of the software code, its internal structure, and design help to design the test cases. This technique is further divided into five categories: Statement Testing and Coverage, Decision Testing Coverage, Condition Testing, Multiple Condition Testing, All Path Testing.
- Process for control and management of defects in artifacts
- Defect Prevention is the best method to eliminate the defects in the early stage of testing instead of finding the defects in the later stage and then fixing it. This method is also cost effective as the cost required for fixing the defects found in the early stages of testing is very low.
- Defect Discovery means the defect is formally brought to the attention of the development team and after analysis of that the defect development team also accepted it as a defect.
- Defect Removal, based on the priority, the development team fixes the defect, higher priority defects are resolved first and lower priority defects are fixed at the end.
- Lastly Process Improvement focus on the defects or errors that were not prioritized by the team, but that in order to achieve true process improvement, every error as minor as it is should be fixed to achieve said improvement.