Sunday, January 8, 2023

Defect/Bug life cycle



New:

When a tester finds a new defect. He should provide proper Defect reproduction steps to the development team to reproduce and fix the defect. In this state, the status of the defect posted by the tester is “New”.


Assigned:

Defects that are in the status of New will be approved (if valid) and assigned to the development team or to the developer by Test Lead/Project Lead/Project Manager. Once the defect is assigned then the status of the bug changes to “Assigned”.


Open:

The development team starts analyzing and works on the defect fix.


Fixed:

When a developer makes the necessary code change and verifies the change, then the status of the bug will be changed to “Fixed” and the bug is passed to the testing team.


Test:

If the status is “Test”, it means the defect is fixed and ready to do a test whether it is fixed or not.


Verified:

The tester re-tests the bug after it got fixed by the developer. If there is no bug detected in the software, then the bug is fixed and the status assigned is “verified.”


Closed:

After verifying the fix, if the bug no longer exits then the status of the bug will be assigned as “Closed.”

Priority of Bugs

  • Low
  • Medium
  • High
  • Show Stopper

Internationalization Testing

Internationalization focuses on product features and capabilities that appeal to the global audience. Therefore, internationalization testing is also termed Globalization Testing. It is also called I18 Testing. 

     

Here are some of the best practices for Internationalization:


  • Support for multiple languages.

  • Support for different number formats.

  • Text in different formats (i.e., Left → Right, Right → Left).

Software Testing Life Cycle


 STLC stands for Software Testing Life Cycle. STLC is a sequence of different activities performed by the testing team to ensure the quality of the software or the product.

Requirement Study/System Study: 

When the requirement is ready and shared by the stakeholders (Product Owner/Client), the testing team starts the high-level analysis.


Write Test Plan: 

The testing team plans the strategy and approach to testing the project.


Write Test Cases:

In this phase test cases are created using the given requirement & the test case phases are classified into 6 steps.


First step will be identifying the possible test scenario. Based on the created test scenario, test cases are created. After creating test cases, created test cases are forwarded to the test lead to review the created test cases. Test cases will be reviewed by the test lead and if there is any correction test lead will forward the test case to the tester to correct the test cases using the review comments. After the correction using the review comments, the test case should be again forwarded to the test lead and after again reviewing the test cases it will be approved. The reviewed test cases should be stored in the repository


For eg: Jira or test link.


Traceability Matrix:

Traceability Matrix or Requirement Traceability Matrix should be created based on the created test cases. The tester should match each requirement with each test case. The tester should ensure that each requirement has at least one test case.


Test Execution:

 This phase created/reviewed test case must be executed on the app. 


Defect Tracking:

After the test case execution, if there is any defect it should be raised in the given bug tracking tool.


Test Execution Report:

This is a communication sent out to establish transparency to the QA team’s activities of the day during the Test cycle – including both Defect information and Test case run information. 


Retrospective Meeting:
Retrospective meetings occur at the end of each sprint to help teams pause and think about improving future performance. It's a safe space for reviewing the project's successes, identifying opportunities for process improvement, and solving issues that may have come up.

Levels of Software Testing

Software Testing has four levels. Unit Testing, Integration Testing, System Testing & Acceptance Testing.



Unit Testing:

The first stage should be Unit Testing and developers will execute Unit Testing. This type of testing is performed by developers before the setup is handed over to the testing team to formally execute the test cases. Unit testing is performed by the respective developers on the individual units of source code assigned areas.


Integration Testing:

Feature 1: Login -> Functional Testing

Feature 2: Dashboard -> Functional Testing

Feature 1+ Feature 2

We will check the data flow.


Integration testing is defined as the testing of combined parts of an application to determine if they function correctly. Integration testing can be done in two ways: 


  • Bottom-up Approach integration testing. 

  • Top-down Approach integration testing.


System Testing:

  • System testing is the first step in the Software Development Life Cycle, where the application is tested as a whole.

  • The application is tested in an environment that is very close to the production environment where the application will be deployed.


Acceptance Testing:

The QA team will have a set of pre-written scenarios and test cases that will be used to test the application. The major aim of this test is to evaluate the compliance of the system with the business requirements and assess whether it is acceptable for delivery or not.

Software Development Life Cycle


The software development life cycle is a systematic procedure followed in order to create software. It is a process followed for a software project, within a software organization. The SDLC consists of the below stages.

Requirement Analysis:
During this phase, all the relevant information or requirements is collected from the customer or client to develop a product as per their expectation. The Business analyst and the Project Manager set up a meeting with the customer to gather all the information or requirements like what the customer wants to build, who will be the end-user, and what is the purpose of the product. It is a process used to determine the needs and expectations of a new product.
 
Feasibility Study:
After the requirement analysis stage, Project Architect is responsible to do the feasibility study. Feasibility study, which determines whether the solution considered accomplishing the requirements is practical and workable to create software. If the Project Architect approves, the next stage will be planning.
 
Planning: 
Planning is developed that identifies, prioritize, and assigns the tasks and resources required to build the structure for a project. 

Development:
The Software requirement is translated into source code. All the components of the software are implemented in this phase. 

Testing: 
Testing starts once the coding is complete and the modules are released for testing. In this phase, the developed software is tested thoroughly, and any defects found are assigned to developers to get them fixed.
 
Deployment:
Once the product is tested, it is installed in the production environment, or the first UAT (User Acceptance testing) is done depending on the customer's expectation. In the case of UAT, a replica of the production environment is created and the customer along with the developers does the testing, or the associates who install/deploy the application at the client's place and show a demo of the application to ensure the given requirement is converted as a software and as expected. If the customer finds the application as expected, then sign-off is provided by the customer to go live.
 
Maintenance: 
After the deployment of a product in the production environment, maintenance of the product i.e. if any issue comes up and needs to be fixed, or any enhancement is to be done is taken care of by the developers.

Verification vs Validation

Verification:
It is a static analysis technique. Here, testing is done without executing the code. Examples include – Reviews, Inspections, and walkthroughs. 

Validation: 
It is a dynamic analysis technique where testing is done by executing the code. Examples include functional and non-functional testing techniques.