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.

Failure

A failure is the inability of a software system or component to perform its required functions within specified performance requirements. When a defect reaches the end customer it is called a Failure. During development, Failures are usually observed by testers.

Defect

It can be simply defined as a variance/difference between the expected result and the actual result. The defect is an error found AFTER the application goes into production. It commonly refers to several troubles with the software products, with their external behavior or with their internal features. In other words, a Defect is a difference between expected and actual results in the context of testing. It is the deviation from the customer's requirement.

Bug

A bug is the result of a coding error. An Error is found in the development environment before the product is shipped to the customer. A programming error that causes a program to work poorly, produce incorrect results or crash. An error in software or hardware that causes a program to malfunction. A bug is the terminology of Tester.

Alpha Testing

This is a form of internal acceptance testing performed mainly by the in-house software QA and testing teams. Alpha testing is the last testing done by the test teams at the development site after the acceptance testing and before releasing the software for the beta test.

Beta Testing

Beta testing performed by clients or end-users in a real-time environment, who is not an employee of the organization. Beta testing uses only black-box testing. Beta testing is a final test before shipping a product to the customers.

Performance Testing

Testing the stability and response time of the application by applying desired loads. Performance is a part of non-functional testing. 

What is a load?
The active number of users that a particular application can handle. 

Response Time: 
Time is taken for a particular application to respond. Stability: How far the application is able to handle the desired load. 

For eg: 
If the software is designed to handle 5000 users when applying 1000 users and if the application collapses then it is an unstable application. 

Types of Performance Testing: 
Load Testing 
Stress Testing 
Soak Testing 

Load Testing: 
Applying a load greater than the desired number and checking the stability and the response time of an application is called Stress Testing. 

Soak Testing:
Applying a load over a period of time and checking the stability and the response time of an application is called Soak Testing.

Compatibility Testing

Compatibility Testing:

Compatibility Testing is a type of Software testing to check whether your software is capable of running on different hardware, operating systems, applications, network environments, or Mobile devices.


Eg: Instagram, facebook, naukri app.

Instagram -> Mobile App. Android and Mac OS. 

Hardware: Android ->MI, Samsung / iPhone 

Network environments ->2g,3g, 4g, 5gs


Operating Systems:  

It checks your software to be compatible with different Operating Systems like Windows, Unix, Mac OS, etc.


Browser:

 It checks the compatibility of your website with different browsers like Firefox, Google Chrome, Internet Explorer, etc.


Mobile:

Checking if your software is compatible with mobile platforms like Android, iOS, etc.


Compatibility Testing is divided into two types Forward Compatibility and Backward Compatibility.


Backward Compatibility:

Backward Compatibility Testing is a technique to verify the behavior and compatibility of the developed hardware or software with older versions of the hardware or software. Backward compatibility testing is much more predictable as all the changes from the previous versions are known.


Instagram:  Android 5,6,7,8, 9,10, 10.9

Windows Vista, XP: 8.1,10,,11

Chrome: 9,10,11,12


Forward Compatibility Testing:

Forward Compatibility Testing is a process to verify the behavior and compatibility of the developed hardware or software with the newer versions of the hardware or software. Forward compatibility testing is a bit hard to predict as the changes that will be made in the newer versions are not known.


Instagram:   10.9,11,12

OS, Network, etc

Windows: 11, 12

Chrome: 12, 13


Adhoc Testing

Adhoc Testing:

Ad hoc Testing is an informal or unstructured software testing type that aims to break the testing process in order to find possible defects or errors at the early possible stage. Ad hoc testing is done randomly and it is usually an unplanned activity that does not follow any documentation and test design techniques to create test cases.


It is also called Monkey Testing, it is random testing without proper test cases. The main aim of Adhoc testing is to break the system. 


Who can do Adhoc Testing:

Testers should have good knowledge of the business and a clear understanding of the requirements- Detailed knowledge of the end-to-end business process will help find defects easily. Experienced testers find more defects as they are better at error guessing.


The advantage of Ad-hoc testing is to check for the completeness of testing and find more defects than planned testing. The defect-catching test cases are added as additional test cases to the planned test cases.


Advantages of Adhoc Testing:

In a project, Ad-hoc Testing saves a lot of time as it doesn’t require elaborate test planning, documentation, and Test Case design.


Smoke Testing

Testing the key feature and basic functionality of the application and verifying whether the feature is working or not is called Smoke Testing. Smoke Tests can be manual or automated. Eg: Testing the video calling feature in Skype, Testing the photo upload and chat feature in Facebook.

Test Scenario

Test Scenario:

  • Test scenarios become more important when the tester does not have enough time to write test cases, and team members agree with a detailed scenario.

  • One Test scenario can have multiple test cases.


Example of Test scenarios:

Here we are discussing the Gmail application and writing test scenarios for different modules which are most commonly used such as Login, Compose Inbox, and Trash.


Test scenarios on the Login module:


  • Enter the valid login details (Username, password), and check that the home page is displayed.

  • Enter the invalid Username and password and check for the home page.

  • Leave Username and password blank, and check for the error message displayed.

  • Enter the valid Login, click on the cancel, and check for the fields reset.

  • Enter the invalid Login, more than three times, and check that account is blocked.

  • Enter a valid Login, and check that the Username is displayed on the home screen.

ReTesting

Re-testing is carried out to confirm the test cases that failed in the final execution are passing after the defects are fixed. Re-testing is done on the basis of the defect fixes. Retesting is done only for failed test cases.

Saturday, January 7, 2023

Regression Testing

Regression Testing is carried out to confirm whether a recent program or code change has not adversely affected existing features. Because of adding a new feature, an old feature might have been impacted. To test the old feature whether is working properly or not regression testing. Regression testing is done for passed test cases.

Software testing Methods

Software testing Methods:

  • White Box Testing
  • Grey Box Testing
  • Black box Testing

White Box Testing:

  • It is testing done by the development team, by looking into the internal behavior of the code. 


Black box Testing:

  • It is the testing done by professional testing engineers by looking into the application, they are not exposed to the logic of the code or flow of the code.


Grey Box Testing:

  • It is a combination of both white box testing and black box testing, with limited internal knowledge of the App. 

  • Testing associates will be testing the app by referring to the design doc, data flow diagram, and high-level database diagram. 



White Box Testing 

Black Box Testing

Grey Box Testing

Done by developers

Done by testers or Developers' Customers

Done by developers or testers or customers

Testing is done on the internal behavior of the code

Testing Is done by looking into the application

It is done by looking into a design document

It is also called unit testing

It is also called functional testing, Data driven testing

It is also called Translucent testing.









Sunday, January 1, 2023

What is software testing ?

 The objective of software testing is to test the software to check whether the expected result matches the actual result. Software testing is a way to assess (evaluate or estimate the nature, ability, or quality of) the quality of the software and to reduce the risk of software failure in operation.

It is a part of the software development process. This method is used to release a stable and quality product to the customers or clients.

What is software ?

Software is a set of instructions, data, or programs used to operate computers and execute specific tasks.

Different types of Software:

  • Web-based.
  • Stand-alone /desktop software.