Software Testing is a process used to verify the correctness, identifying errors, completeness, and missing requirements versus the actual requirements and quality of developed software. For that, it contains a series of activities that are conducted to find errors in software and correct them before the product is released to the market. It checks all the requirements are working fine and available in it.
Different types of manual testing are-
This is an acronym for Software Development Life Cycle and encompasses all of the stages of software development, including requirement gathering and analysis, designing, coding, testing, deployment, and maintenance.
When testers do not know the internal architecture or code structure. The techniques are:
Once testing within the organization is complete, the product is released to the client to test for acceptability. This part of testing occurs in a production-like environment where the client, or a limited number of end-users, uses the system and reports any discrepancies found.
Acceptance testing has the following types.
There are many ways to test the login feature of a web application:
To test any web application such as Yahoo, Gmail, and so on, we will perform the following testing:
We might have developed the software in one platform, and the chances are that users might use it on different platforms. Hence, it could be possible that they may encounter some bugs and stop using the application, and the business might be affected. Therefore, we will perform one round of Compatibility testing.
We can tell anywhere between 2-5 test cases.
Primarily, we used to write 2-5 test cases, but in future stages, we write around 6-7 because, at that time, we have better product knowledge, and we start re-using the test cases, and the experience on the product.
It would be around 7 test cases we write so that we can review 7*3=21 test cases. We can say that there are 25-30 test cases per day.
We can run around 30-55 test cases per day.
Always remember the ratio: x test cases we can write, 3x test cases we can review, and 5x test cases we can execute per day.
We can stop testing whenever we have the following:
Test Suite is a collection of test cases. The test cases are intended to test an application.
An environment configured for testing. The test bed consists of hardware, software, network configuration, an application under test, and other related software.
The test Environment is the combination of hardware and software on which the Test Team performs testing.
Example:
Application Type: Web Application
OS: Windows
Web Server: IIS (Internet Information Services)
Database: MS SQL Server
Browser: IE/Firefox/Chrome
Smoke Testing is done to make sure that the build we received from the development team is testable or not. It is also called the “Day 0” check. It is done at the “build level”. It helps not to waste the testing time by simply testing the whole application when the key features don’t work or the key bugs have not been fixed yet.
Sanity Testing is done during the release phase to check for the main functionalities of the application without going deeper. It is also called a subset of Regression testing. It is done at the “release level”. At times due to release time constraints rigorous regression testing can’t be done to the build, sanity testing does that part by checking main functionalities.
To ensure that the defects that were found and posted in the earlier build were fixed or not in the current build. Say, Build 1.0 was released. The test team found some defects (Defect Id 1.0.1, 1.0.2) and posted them. Build 1.1 was released, and now testing the defects 1.0.1 and 1.0.2 in this build is retesting.
Repeated testing of an already tested program, after modification, to discover any defects introduced or uncovered as a result of the changes in the software being tested or in other related or unrelated software components.
Usually, we do regression testing in the following cases:
To know the quality of test execution, we can use two parameters-
Defect Rejection Ratio = No. of defect rejected / Total defects raised*100
Defect Leakage Ratio = No. of defects missed / Total defects of software*100
To get an expected test outcome, a standard procedure is followed which is referred to as Testing Type.
Commonly used testing types are
Agile testing evaluates software from the perspective of the customer. Its importance is that it does not require the development team to complete coding to start QA. Instead, testing and coding go hand in hand. However, it may require continuous customer interaction.
A latent defect is also called a hidden defect. It is an existing defect in the system that might cause failure or malfunction but is not discoverable through general inspection.
A masked defect is a defect that exists but has not caused a failure yet as another defect prevents that part of the code from being executed.
Functional testing is defined as testing the ‘functionality’ of software or an application. The software is examined as per client requirements. A document called the requirement specification or software specification is used as a guide to testing the application.
When an application works as per the user’s expectation, efficiently and smoothly under any condition, then it is a reliable application. It is critical to test the parameters based on the quality; this process is called non-functional testing.
Test deliverables are a set of tools, documents, and components that are maintained and developed in support of testing. There are different test deliverables at every phase of the software development lifecycle: Before Testing, During Testing, and After the Testing
These are some risks that commonly lead to project failure:
A test plan is a formal document that specifies the scope of testing, the method to be used, the resources needed, and the estimated time to complete the testing process. It is derived from the specifications (Software Requirement Specifications).
Graphical User Interface Testing is to test the interface between the application and the end user.
High Priority & High Severity: Submit button is not working on the login page and customers are unable to login to the application
Low Priority & High Severity: Crash in some functionality which is going to deliver after a couple of releases
High Priority & Low Severity: Spelling mistake of a company name on the homepage
Low Priority & Low Severity: The FAQ page takes a long time to load
Usually, this process will be carried out by domain experts. They perform testing just by exploring the functionalities of the application without knowing the requirements.
To verify whether the application is user-friendly or not and was comfortably used by an end-user or not. The main focus of this testing is to check whether the end-user can understand and operate the application easily or not. An application should be self-exploratory and must not require training to operate it.
Ad-hoc testing is quite the opposite of formal testing. It is an informal testing type. In ad hoc testing, testers randomly test the application without following any documents and test design techniques. This testing is primarily performed if the knowledge of testers in the application under test is very high. Testers randomly test the application without any test cases or any business requirement document.
Cross-browser testing is a type of non-functional test that helps us ensure that our website or web application works well in various browsers.
Web applications rely on browsers like Google Chrome, Mozilla Firefox, Internet Explorer, and Safari to function. Even though they all support web standards to some extent, there are still slight differences between them.
Boundary value analysis (BVA) is based on testing the boundary values of valid and invalid partitions. Every partition has its maximum and minimum values and these maximum and minimum values are the boundary values of a partition.
Assume we have to test a text field (Name) that accepts a length between 6-12 characters.
Equivalence Partitioning is also known as Equivalence Class Partitioning. In equivalence partitioning, inputs to the software or system are divided into groups that are expected to exhibit similar behavior, so they are likely to be proposed in the same way. Hence selecting one input from each group to design the test cases.
Assume, we have to test a field that accepts a Mobile Number of ten digits.
The Decision Table is aka Cause-Effect Table. This test technique is appropriate for functionalities that have logical relationships between inputs (if-else logic). In the Decision table technique, we deal with combinations of inputs.
Take the example of transferring money online to an account that is already added and approved.
Here the conditions to transfer money are ACCOUNT ALREADY APPROVED, OTP (One Time Password) MATCHED, and SUFFICIENT MONEY IN THE ACCOUNT.
The actions performed are TRANSFER MONEY, SHOW A MESSAGE AS INSUFFICIENT AMOUNT, BLOCK THE TRANSACTION IN CASE OF SUSPICIOUS TRANSACTION.
Using state transition testing, we pick test cases from an application where we need to test different system transitions. We can apply this when an application gives a different output for the same input, depending on what has happened in the earlier state.
Take an example of the login page of an application that locks the user name after three wrong attempts of password.
We can do System Testing only when all the units are in place and working properly. It can only be done before User Acceptance Testing (UAT).
Use case testing is a functional testing technique that helps testers identify test scenarios based on the functionality of the software from start to finish.
In use case testing, the tester works through each step in a scenario, or use case, to ensure that the software behaves as expected. A use case is a description of how a user interacts with the software to achieve a goal.
For example, consider a scenario where a user wants to buy a product from an online store. The steps in this scenario would be:
According to the pesticide paradox, if the same tests are carried out over and over again, then an outcome of this, the same test cases will no longer be able to find new bugs.
Methods to prevent pesticide paradox are the following:
Defect triage is a procedure in which defects are prioritised depending on a variety of characteristics such as severity, risk, and the amount of time it will take to fix the fault. The defect triage meeting brings together several stakeholders - the development team, testing team, project manager, BAs, and so on – to determine the order in which defects should be fixed.
A cause-effect graph testing technique is a black-box test design technique that uses a graphical representation of the input (cause) and output (effect) to construct the test. This method employs a variety of notations to describe AND, OR, NOT, and other relationships between the input and output conditions.
Integration Testing is defined as a type of testing where software modules are integrated logically and tested as a group.
Application has 3 modules called ‘Login Page’, ‘Mailbox’, and ‘Delete emails’ and each of them is integrated logically.
Here do not concentrate much on the Login Page testing as it’s already been done in Unit Testing. But check how it’s linked to the Mailbox Page.
Similarly Mail Box: Check its integration to the Delete Mails Module.
Test Case 1 -After Login, the user must be directed to the Mailbox.
Test Case 2- From Mailbox selects the email and clicks a delete button then selected email should appear in the Deleted/Trash folder.
Static testing is a type of testing performed without executing the code of a software application. Instead, it includes reviews, inspections, and walkthroughs.
Dynamic testing is a type of testing that involves executing the code of a software application to determine the results of certain functions and operations. It includes unit testing, integration testing, and acceptance testing.
Performance testing: Performance testing is a testing technique that determines the performance of the system such as speed, scalability, and stability under various load conditions. The product undergoes performance testing before it gets live in the market.
Load testing is a testing technique in which a system is tested with an increasing load until it reaches the threshold value.
Note: An increasing load means an increasing number of users.
The main purpose of load testing is to check the response time of the system with an increasing amount of load.
Load testing is non-functional testing means that only non-functional requirements are tested.
Load testing is performed to make sure that the system can withstand a heavy load
Stress testing is a testing technique to check the system when hardware resources are not enough such as CPU, memory, disk space, etc.
In the case of stress testing, software is tested when the system is loaded with the number of processes and the hardware resources are less.
The main purpose of stress testing is to check the failure of the system and to determine how to recover from this failure is known as recoverability.
Stress testing is non-functional testing means that only non-functional requirements are tested.
Spike testing is a subset of load testing. This type of testing checks the instability of the application when the load is varied.
There are different cases to be considered during testing:
Endurance testing is a subset of load testing. This type of testing checks the behavior of the system.
Endurance testing is non-functional testing means that only non-functional requirements are tested.
Endurance testing is also known as Soak testing.
Endurance testing checks the issues such as memory leaks. A memory leak occurs when the program does not release its allocated memory after its use. Sometimes the application does not release its memory even after its use and this unusable memory causes memory leak. This causes an issue when the application runs for a long duration.
Some of the main issues that are viewed during this testing are:
Volume testing is a testing technique in which the system is tested when the volume of data is increased.
Volume testing is also known as flood testing.
Volume testing is non-functional testing means that only non-functional requirements are tested.
For example: If we want to apply volume testing then we need to expand the database size, i.e., add more data into the database table and then perform the test.
Scalability testing is a testing technique that ensures that the system works well in proportion to the growing demands of the end users.
The following are the attributes checked during this testing:
Copyright © 2023 - Proleed Academy | All Rights Reserved.