- Software testing process
- Types and levels of testing
- Activities and roles in testing
- Testing environments
- Test Case Design techniques (open and closed views)
- Process for control and management of defects in artifacts
Software testing process
Is a process conducted for acquiring information about the quality of the software in hand. It should yield a perspective from the user side that can work as a path to understand how the product would behave in a real environment, and what undesired effects could occur. To put this in practice a component of the system must be executed to evaluate some properties of interest. And it could yield a result composed of one of the following:
- meets the requirements that guided its design and development,
- responds correctly to all kinds of inputs,
- performs its functions within an acceptable time,
- is sufficiently usable,
- can be installed and run in its intended environments
- achieves the general result its stakeholders desire.
Levels of testing
There are three main levels of testing:
Unit testing
Unit testing refers to tests that verify the functionality of a specific section of code, usually at the function level. In an object-oriented environment, this is usually at the class level, and the minimal unit tests include the constructors and destructors.
These types of tests are usually written by developers as they work on code, to ensure that the specific function is working as expected. One function might have multiple tests, to catch corner cases or other branches in the code. Unit testing alone cannot verify the functionality of a piece of software, but rather is used to ensure that the building blocks of the software work independently from each other.
Integration testing
Integration testing is any type of software testing that seeks to verify the interfaces between components against a software design. Software components may be integrated in an iterative way or all together . Normally the former is considered a better practice since it allows interface issues to be located more quickly and fixed.
System testing
System testing tests a completely integrated system to verify that the system meets its requirements. For example, a system test might involve testing a login interface, then creating and editing an entry, plus sending or printing results, followed by summary processing or deletion of entries, then logoff.
There is a fourth level that may be included by developers. This may be in the form of operational acceptance testing or be simple end-user (beta) testing, testing to ensure the software meets functional expectations. Based on the ISTQB Certified Test Foundation Level syllabus, test levels includes those four levels, and the fourth level is named acceptance testing. Tests are frequently grouped into one of these levels by where they are added in the software development process, or by the level of specificity of the test.
Acceptance testing
Commonly this level of Acceptance testing include the following four types:
- User acceptance testing
- Operational acceptance testing
- Contractual and regulatory acceptance testing
- Alpha and beta testing
Roles in testing
Manager
Responsible for:
- Defining the testing activities
- Test planning
- Check the team has the necessary resources to perform the testing activities
- Verify testing is going hand in hand with the development at all phases
- Prepare the status report of testing activities
- Interactions with customers
- Updating the project manager about the status of testing activities
Test Engineer
Responsible for:
- Understanding what needs to be tested
- Decide how it is going to be tested
- Inform the test lead about what resources will be required for the testing activities
- Develop test cases and prioritize testing activities
- Execute test cases and report defects, defining severity and priority for each defect
- Carry out regression testing
Testing environments
- Setup of test server with support of needed applications
- Network setup
- Test PC setup for running the software product
- Provide bug reporting tools
- Create test data for testing environment
Test case design techniques
- Boundary Value Analysis (BVA): based on testing at the boundaries between partitions.
- Decision Table Based Testing: for every function, a table is created to list down all types of combinations of inputs and its respective outputs.
- State Transition: the testing team provides both positive and negative input test values to evaluate the system behavior.
- Error guessing: the test analysts use their experience to guess potential problematic parts of the application and write test cases to expose those errors.
Defect Management Process
A defect management cycle contains 6 stages:
- Discovery of defect
- Defect categorization
- Fixing of defect by developers
- Verification by testers
- Defect closure
- Defect reports
Pan, Jiantao (Spring 1999). “Software Testing”(coursework). Carnegie Mellon University. RetrievedNovember 21, 2017.