Skip to main content

      “Software Testing

 

   Software testing is an activity to check whether the actual results and the expected results are matched and it should work as per the client requirements to ensure that the software is defect free software.

  Software testing is the process of finding errors in the developed product. It also checks whether the actual results can match expected results, as well as aids in the identification of defects, missing requirements, or gaps.

  Software testing is the process of checking the quality of software before launching to ensure that all requirements are fulfilled.



             Importance of Software Testing

 

  Identifies defects early: Developing complex applications can leave room for errors. Software testing is imperative, as it identifies any issues and defects with the written code so they can be fixed before the software product is delivered.

 

  Improves product quality: When it comes to customer appeal, delivering a quality product is an important metric to consider. An exceptional product can only be delivered if it's tested effectively before launch. Software testing helps the product pass quality assurance (QA) and meet the criteria and specifications defined by the users.

 

  Increases customer trust and satisfaction: Testing a product throughout its development lifecycle builds customer trust and satisfaction, as it provides visibility into the product's strong and weak points. By the time customers receive the product, it has been tried and tested multiple times and delivers on quality.

 

  Detects security vulnerabilities: Insecure application code can leave vulnerabilities that attackers can exploit. Since most applications are online today, they can be a leading vector for cyber attacks and should be tested thoroughly during various stages of application development. For example, a web application published without proper software testing can easily fall victim to a cross-site scripting attack where the attackers try to inject malicious code into the user's web browser by gaining access through the vulnerable web application. The nontested application thus becomes the vehicle for delivering the malicious code, which could have been prevented with proper software testing.

 

  Saves money: Software development issues that go unnoticed due to a lack of software testing can haunt organizations later with a bigger price tag. After the application launches, it can be more difficult to trace and resolve the issues, as software patching is generally more expensive than testing during the development stages.

                               

  Career as a Software Tester

 

  Software Testing is a critical field that ensures the quality and functionality of software before it reaches end-users. With a variety of job titles reflecting different specializations and levels of expertise, the career path for software testers is rich with opportunities for growth and development. From executing test cases to strategizing and leading quality assurance processes, these roles are essential in delivering reliable and efficient software products.

 

·       Junior Software Tester: An entry-level position, perfect for individuals starting their career in software testing. Junior Software Testers are typically responsible for executing basic test cases, reporting bugs, and learning the fundamentals of software quality assurance under the guidance of more experienced testers.

 

·       Software Tester: A foundational role in the software testing team, tasked with the hands-on work of identifying issues in software through manual testing or automated test scripts. Software Testers write detailed test cases, report defects, and work closely with developers to ensure software quality.

 

·       Senior Software Tester / Sr Test Engineer: With more experience, Senior Software Testers handle complex testing scenarios and often take on additional responsibilities such as test planning, mentoring junior testers, and contributing to the development of test strategies.

 

·       QA Lead / Test Lead: A leadership position within the testing team, QA Leads or Test Leads coordinate testing activities, manage a team of testers, and ensure that testing processes align with the project requirements and deadlines.

 

·       QA Manager / Test Manager: Responsible for overseeing the entire testing process, QA Managers or Test Managers strategize test plans, manage resources, and maintain the quality standards of software products. They also play a key role in interfacing with other departments and stakeholders.

 

·       Automation Test Engineer: Specializing in writing and maintaining automated test scripts, Automation Test Engineers focus on improving testing efficiency through automation tools and frameworks. They are instrumental in continuous integration and continuous delivery (CI/CD) pipelines.

 

·       Performance Test EngineerExperts in assessing software performance, Performance Test Engineers design and execute performance tests to ensure software can handle expected load and stress conditions, providing insights into scalability and reliability.

 

·       Software Test Architect: A high-level role, Software Test Architects design and implement testing strategies and frameworks that guide the testing processes. They are responsible for the overall test infrastructure and ensuring that testing is effective and integrates well with development practices.

Each role within the software testing field brings its own set of challenges and requires a unique skill set. As technology evolves, so do these roles, offering a dynamic career path for professionals in the industry.

             

Types of software testing:-

 

Funtional Testing: Functional testing is a type of software testing that verifies the functionality of a software system or application. It focuses on ensuring that the system behaves according to the specified functional requirements and meets the intended business needs.

- The goal of functional testing is to validate the system’s features, capabilities, and interactions with different components. It involves testing the software’s input and output, data manipulation, user interactions, and the system’s response to various scenarios and conditions. Functional testing is only concerned with validating if a system works as intended.

 

Types: - Unit Testing, Integration testing, Smoke testing, UAT (User acceptance testing)

 

Non Functional testing: Non-Functional Testing is a type of testing used to evaluate a software application’s performance, usability, dependability, and other non-functional characteristics. It is intended to test a system’s readiness according to non-functional criteria that functional testing never considers

 

Types: - Performance, Load, Volume, usability, reliability etc.

 

Manual Testing: Manual Testing is a type of software testing where software tester executes the test cases manually without using any automation tools. Manual Testing is the most primitive of all testing types and helps find bugs in the software system. Any new application must be manually tested before its testing can be automated. Manual Testing does not require knowledge of any testing tool.

 

Manual testing process

The process of manual testing typically follows these stages:

1. Understanding requirements

It begins with a thorough analysis of what the software is intended to do. For example, grasping functional requirements and user expectations sets the stage for targeted testing.

2. Developing a test plan

Crafting a test plan is next, where QA developers outline their testing strategy, objectives, and necessary resources. This plan acts as a roadmap for the entire testing process.

3. Writing test cases

Test cases are scenarios created to test different aspects of the software. These should be comprehensive, covering a wide range of possible user interactions, and are designed to ensure that all functionalities are thoroughly tested.

4. Setting up the test environment

This step involves creating a realistic testing environment to ensure relevant and valuable results.

5. Executing test cases

This is a hands-on part of the process. QA developers manually interact with the software, executing test cases and observing responses and behaviors.

6. Logging defects

Any issues you encounter should be methodically documented, including steps to recreate the problem, its impact, and any other relevant observations.

7. Analyzing results and reporting

After the tests, QA developers analyze the findings, synthesizing them into reports that offer insights into the software's performance and potential areas for improvement.

8. Retesting and Regression testing

After fixing bugs, retesting is crucial to ensure the issues are resolved. Additionally, regression testing is conducted to confirm that new changes have not adversely affected existing functionalities.

Advantages of manual testing

Manual testing, an essential component of the software quality assurance process, offers several key advantages:

1. Human insight and intuition

Manual testing has a significant advantage over automated testing regarding the human element it brings to the table. Testers can use their experience and intuition to explore and evaluate the software in ways automated tests cannot. This human touch is beneficial in comprehending the user experience, pinpointing UI/UX issues, and providing feedback on the subjective aspects of the software, such as its appearance and feel.

2. Flexibility and adaptability

Manual testing allows testers to make quick changes in their testing approach as and when the software evolves. This flexibility is advantageous in the early stages of development, where features and requirements frequently change. Testers can adapt their test cases and approaches on the fly without the need for reprogramming or restructuring that automated tests would require.

3. Cost-effectiveness for small-scale projects

Manual testing can be more cost-effective for smaller projects or those with limited budgets. It doesn't require investment in automated testing tools and infrastructure, making it a viable option for startups or smaller teams with constrained resources.

4. Real-world application

Manual testing proves advantageous in scenarios where the user experience is paramount, such as in mobile application testing, where the feel of the application, gesture controls, and device-specific features are best evaluated manually.

      Limitations of manual testing

However, manual testing has limitations:

1. Time consumption and resource intensity

Manual testing can be significantly more time-consuming than automated testing, especially for large and complex applications. It requires more human resources, and the time taken to execute test cases manually can lead to longer development cycles.

2. Limitations in handling complex or large-scale testing scenarios

When dealing with complex or large-scale applications, manual testing may not be effective as testing every possible scenario or combination is infeasible, leading to gaps in test coverage.

3. Potential for human error

Given the repetitive and sometimes monotonous nature of manual testing, there is a higher risk of human error. Testers might overlook bugs or inconsistencies, especially when dealing with extensive testing scenarios.

4. Less effective in regression or performance testing

There are better approaches than manual testing for situations requiring repetitive testing (like regression testing) or high precision (like performance testing). In these cases, automated testing is often more efficient and reliable.

Goal of Manual Testing:-

 

- The key concept of manual testing is to ensure that the application is error free and it is working as per the client requirement.

- Test Suites or cases, are designed during the testing phase and should have 100% test coverage.

- It also makes sure that reported defects are fixed by developers and re-testing has been performed by testers on the fixed defects.

- Basically, this testing checks the quality of the system and delivers bug-free product to the customer.

 

Types of Manual Testing:-

 

1.     Black-Box Testing: Evaluate the performance and behavior of software from an end user's point of view. The tester only has visibility into the inputs and outputs, not the internal code structure. Black box testing is a software testing method in which testers evaluate the functionality of the software under test without looking at the internal code structure.

A black box testing will not consider the specifications of the code, and it will test the valid username and password to login to the right account. This form of testing technique will check the input and output.

 

The techniques of Black Box testing:

 

Equivalence Class Partitioning: Equivalence partitioning or equivalence class partitioning is a software  testing technique that divides the input data of a software unit into partitions of equivalent data from which test cases can be derived. In principle, test cases are designed to cover each partition at least once. The idea behind the technique is to divide or partition a set of test conditions into groups or sets that can be considered the same or equivalent, hence ‘equivalence partitioning’.

 

Message Box: The message box will accept only from “1 – 500” inputs. 

It can be numbers 1, 2, 3,4,5,6 etc 

It can be alphabets: ABCDFRGTTGGHTHTTHYYYHJJ etc

 

  Invalid        |                Valid                           |   Invalid

0, -1, -5,-20   |    1, 20, 50, 40, 100, 150, 500    | 501, 502, 505 1000

 

2) Boundary Value Analysis: It is based on testing on and around the boundaries between partitions. If you have done “range checking”, you were probably using the boundary value analysis technique.

“Mobile No: “8237867723”

Testers can identify that a system has a special response around a specific boundary value.

 

3) Decision table: Decision table testing is a software testing technique used to test system behaviour for different input combinations. This is a systematic approach where the different input combinations and their corresponding system behaviour (Output) are captured in a tabular form.

 

Example 1: How to make decision base table for login screen

 

Let's create a decision table for a login screen.

 

                          

 

The condition is simple if the user provides correct username and password the user will be redirected to the homepage. If any of the input is wrong, an error message will be displayed.

 

           

 

T – Correct username/password

F – Wrong username/password

E – Error message is displayed

H – Home screen is displayed

 

Interpretation:

Case 1 – Username and password both were wrong. The user is shown an error message.

Case 2 – Username was correct, but the password was wrong. The user is shown an error message.

Case 3 – Username was wrong, but the password was correct. The user is shown an error message.

Case 4 – Username and password both were correct, and the user navigated to homepage

 

While converting this to test case, we can create 2 scenarios,

- Enter correct username and correct password and click on login, and the expected result will be the user should be navigated to homepage

And one from the below scenario

- Enter wrong username and wrong password and click on login, and the expected result will be the user should get an error message

- Enter correct username and wrong password and click on login, and the expected result will be the user should get an error message

- Enter wrong username and correct password and click on login, and the expected result will be the user should get an error message

 

Advantages of Decision Table Testing

 

- When the system behaviour is different for different input and not same for a range of inputs, both equivalent partitioning, and boundary value analysis won't help, but decision table can be used.

- The representation is simple so that it can be easily interpreted and is used for development and business as well.

- This table will help to make effective combinations and can ensure a better coverage for testing

- Any complex business conditions can be easily turned into decision tables

- In a case we are going for 100% coverage typically when the input combinations are low, this technique can ensure the coverage.

 

Disadvantages of Decision Table Testing

 

The main disadvantage is that when the number of input increases the table will become more complex.

 

4 - State transition: State Transition testing is defined as the software testing technique in which changes in input conditions cause's state changes in the Application under Test (AUT). It is a black box testing technique in which the tester analyzes the behaviour of an application under test for different input conditions in a sequence.

 

When to Use State Transition?

- This can be used when a tester is testing the application for a finite set of input values.

- When the tester is trying to test sequence of events that occur in the application under test. I.e., this will allow the tester to test the application behavior for a sequence of input values.

- When the system under test has a dependency on the events/values in the past.

- When to Not Rely On State Transition?

- When the testing is not done for sequential input combinations.

 

If the testing is to be done for different functionalities like exploratory testing

Four Parts of State Transition Diagram

 

There are 4 main components of the State Transition Model as below

 

1) States that the software might get

2) Transition from one state to another

3) Events that origin a transition like closing a file or withdrawing money

4) Actions that result from a transition (an error message or being given the cash.)

 

 

State Transition Diagram and State Transition Table

 

There are two main ways to represent or design state transition, State transition diagram, and state transition table.

In state transition diagram the states are shown in boxed texts, and the transition is represented by arrows. It is also called State Chart or Graph. It is useful in identifying valid transitions.

In state transition table all the states are listed on the left side, and the events are described on the top. Each cell in the table represents the state of the system after the event has occurred. It is also called State Table. It is useful in identifying invalid transitions.

 

How to Make a State Transition (Examples of a State Transition)

 

Example 1:

Let's consider an ATM system function where if the user enters the invalid password three times the account will be locked.

In this system, if the user enters a valid password in any of the first three attempts the user will be logged in successfully. If the user enters the invalid password in the first or second try, the user will be asked to re-enter the password. And finally, if the user enters incorrect password 3rd time, the account will be blocked.

State transition diagram

In the diagram whenever the user enters the correct PIN he is moved to Access granted state, and if he enters the wrong password he is moved to next try and if he does the same for the 3rd time the account blocked state is reached.

 

State Transition Table:

State Transition

Correct PIN

Incorrect PIN

S1) Start

S2) 1st attempt

S5

S3

S3) 2nd attempt

S5

S4

S4) 3rd attempt

S5

S6

S5) Access Granted

-

-

S6) Account blocked

-

-

 

In the table when the user enters the correct PIN, state is transitioned to S5 which is Access granted. And if the user enters a wrong password he is moved to next state. If he does the same 3rd time, he will reach the account blocked state.

 

Myths of Manual Testing

 

Myth: Anyone can do manual testing

Fact: Testing requires many skill sets

 

Myth: Testing ensures 100% Defect free product

Fact: Testing attempts to find as many defects as possible. Identifying all possible defects is impossible.

 

Myth: Automated testing is more powerful than manual testing

Fact: 100% test automation cannot be done. Manual Testing is also essential.

 

Myth: Testing is easy

Fact: Testing can be extremely challenging. Testing an application for possible use cases with minimum test cases requires high analytical skills.

 

2.     White-Box Testing: Evaluate the security and functionality of the product in more detail. This testing is performed by a developer or QA professional with an understanding of the internal code behind the software.

 

White box Testing techniques:

-        Statement Coverage: This is like making sure you read every sentence in a book. In code, it means ensuring every line or statement of the code is executed at least once during testing.

-        Branch Coverage: This is like choosing every possible outcome in a “Choose Your Own Adventure” book. In code, it means testing every possible outcome of the code’s decision points (like if-else conditions).

-        Path Coverage: This is like reading a book’s possible combination of chapters. In code, it means testing every possible path through the code from start to finish.

-        Condition Coverage: This is like checking every possible answer to a question in a book. In code, it means testing every possible outcome of logical conditions in the code.

-        Decision/Condition Coverage: This is like checking every possible combination of answers to multiple questions in a book. In code, it means testing every possible combination of outcomes in logical decisions (like a condition with and logic) in the code.

 

Automation Testing: Automation Testing means with using any automation tool to test the application and execute your test cases. Using a test automation tool, it's possible to record this test suite and re-play it as required. Once the test suite is automated, no human intervention is required.

- The goal of Automation is to reduce the number of test cases to be run manually and not to eliminate

 

Automated software testing is important due to the following reasons:

 

- Manual Testing of all workflows, all fields, and all negative scenarios is time and money consuming

- Automation does not require Human intervention.

- Automation increases the speed of test execution

- Automation helps increase Test Coverage

- Manual Testing can become boring and hence error-prone.

 

Which Test Cases to Automate?

 

- High Risk - Business Critical test cases

- Test cases that are repeatedly executed.

- Test Cases that are very tedious or difficult to perform manually.

 

Note: One of the Software Testing Fundamental is "100% Automation is not possible".

 

The following category of test cases are not suitable for automation

 

- Test Cases for which the requirements are frequently changing

- Test cases which are executed on an ad-hoc basis.

 

Manual Testing vs Automation Testing

 

                       Manual Testing

                    Automated Testing

Manual testing requires human intervention for test execution.

Automation Testing is use of tools to execute test cases

Manual testing will require skilled labour, long time & will imply high costs.

Automation Testing saves time, cost and manpower. Once recorded, it's easier to run an automated test suite

Any type of application can be tested manually, certain testing types like ad-hoc and monkey testing are more suited for manual execution.

Automated testing is recommended only for stable systems and is mostly used for Regression Testing

Manual testing can become repetitive and boring.

The boring part of executing same test cases time and again is handled by automation software in Automation Testing.

 

Automation Testing Tools:

 

1- SELENIUM is a free (open-source) automated testing framework used to validate web applications across different browsers and platforms. You can use multiple programming languages like Java, etc. Testing done using the Selenium tool is usually referred to as Selenium Testing.

 

-        Selenium Integrated Development Environment (IDE)

-        Selenium Remote Control (RC)

-        Web Driver

-        Selenium Grid

 

2- QTP :  QTP (Quick test Professional) is an automated functional Testing tool that helps testers to execute automated tests in order to identify any errors, defects or gaps in contrary to the expected results of the application under test. It was designed by Mercury Interactive and later on acquired by HP and now Micro Focus.

 

3- Cypress: Cypress is a purely JavaScript-based front-end testing tool built for the modern web. It aims to address the pain point’s developers or QA engineers face while testing an application. Cypress is a more developer-friendly tool that uses a unique DOM manipulation technique and operates directly in the browser.

 

4- J-meter: The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behaviour and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

 

5- Loadrunner:  Loadrunner from Micro Focus is the most widely used Load Testing tool. Performance Test Results produced by Loadrunner are used as a benchmark against other tools.

 

 

3.     Gray Box TestingGray Box Testing is a software testing technique which is a combination of Black Box Testing technique and White Box Testing technique.

In Black Box Testing technique, tester is unknown to the internal structure of the item being tested and in White Box Testing the internal structure is known to tester.

The internal structure is partially known in Gray Box Testing. This includes access to internal data structures and algorithms for purpose of designing the test cases.

Gray Box Testing is named so because the software program is like a semi-transparent or grey box inside which tester can partially see. It commonly focuses on context-specific errors related to web systems.

 

Gray Box Testing is performed for the following reason,

 

- It provides combined benefits of both black box testing and white box testing both

- It combines the input of developers as well as testers and improves overall product quality

- It reduces the overhead of long process of testing functional and non-functional types

- It gives enough free time for a developer to fix defects

- Testing is done from the user point of view rather than a designer point of view

Objective of Gray Box Testing:


        The objective of Gray Box Testing is:

To provide combined advantages of both black box testing and white box testing.

To combine the input of developers as well as testers.

To improve overall product quality.

To reduce the overhead of long process of functional and non-functional testings.

To provide enough free time to developers to fix defects.

To test from the user point of view rather than a designer point of view.

 

Advantages of Gray Box Testing:-

 

- Users and developers have clear goals while doing testing.

- Gray box testing is mostly done by the user perspective.

- Testers are not required to have high programming skills for this testing.

- Gray box testing is non - Intrusive.

- Overall quality of the product is improved.

- In gray box testing, developers have more time for defect fixing.

- By doing gray box testing, benefits of both black box and white box testing is obtained.

- Gray box testing is unbiased. It avoids conflicts between a tester and a developer.

- Gray box testing is much more effective in integration testing.

 

Disadvantages of gray box testing:

 

- Defect association is difficult when gray testing is performed for distributed systems.

- Limited access to internal structure leads to limited access for code path traversal.

- Because source code cannot be accessed, doing complete white box testing is not possible.

- Gray box testing is not suitable for algorithm testing.

- Most of the test cases are difficult to design.

 

Black Box Testing

White Box Testing

 

 

It can be referred as outer or external software testing

It is the inner or the internal software testing.

It is functional test of the software.

It is structural test of the software.

 

Qualities to be a software tester:

 

1-     Tester should be open Minded.

2-     Tester should understand the Priorities.

3-     Asking Questions

4-     As a tester you should be a Quick Learner.

5-     Questions can be asked

6-     To understand requirement.

7-     To understand changes done

8-     To understand how requirement has been implemented

9-     To understand how the bug fixed.

10-  To understand bug fix effects.

11-  To understand the product from other perspectives like development, business, etc.

12-  You are good at Reporting.

13-  You are Flexible to Support whenever it’s required.

14-  You Are a Constant Learner.

15-  You Can Wear End User’s Shoes.

16-  You are a good tester only when you can understand your customers Positive Attitude.

17-  Good Communication.

18-  Multi-Tasking Abilities.

19-  Generate and execute test ideas.

20-  Design test cases.

21-  Quick Learner, Passion For Testing, Think and act as an End-user.

 

What is ErrorDefectBug and failure?

 

Interview question:

A mistake in coding is called Error,

Error found by tester is called Defect,

Defect accepted by development team then it is called Bug,

Build does not meet the requirements then it Is Failure.”

 

 

Comments

Popular posts from this blog

  Software testing is an activity to check whether the actual results and the expected results are matched and it should work as per the client requirements to ensure that the software is defect free software.    Software testing is the process of finding errors in the developed product. It also checks whether the actual results can match expected results, as well as aids in the identification of defects, missing requirements, or gaps.    Software testing is the process of checking the quality of software before launching to ensure that all requirements are fulfilled.
    Software testing is an activity to check whether the actual results and the expected results are matched and it should work as per the client requirements to ensure that the software is defect free software.    Software testing is the process of finding errors in the developed product. It also checks whether the actual results can match expected results, as well as aids in the identification of defects, missing requirements, or gaps.    Software testing is the process of checking the quality of software before launching to ensure that all requirements are fulfilled.