Testing types Flashcards
Unit Testing
Unit Testing is one of the many stages of software testing and looks at single units, otherwise known as components, individually. This validates that each software component being tested works as designed. Each unit is the smallest functional part of the software that can be tested and normally only has one input and one output.
Unit testing is done during the coding phase while the software or other product is being developed to ensure it is clear of bugs and ready before its release.
Integration Testing
Integration testing is a type of software testing where components of the software are gradually integrated and then tested as a unified group. Usually, these components are already working well individually, but they may break when integrated with other components. With integration testing, testers want to find defects that surface due to code conflicts between software modules when they are integrated with each other.
End-to-end Testing
End-to-end testing (E2E testing) is a testing method that evaluates the entire application flow, from start to finish. It ensures that all components work as expected and the software application functions correctly in real-world scenarios.
In E2E testing, the software is tested from the end user’s perspective, simulating a real user scenario, including the user interface, backend services, databases, and network communication. The purpose of E2E testing is to validate the application’s overall behavior, including its functionality, reliability, performance, and security.
End-to-end testing aims to identify any defects or issues that may arise when different parts of the application interact with each other. By testing the entire system, end-to-end testing ensures that all components work together seamlessly to meet the user’s expectations. E2E testing is usually performed after integration testing, which tests individual modules, and before user acceptance testing, which ensures that the application meets the user’s requirements.
Manual Testing
Manual testing is a software testing approach where testers manually evaluate software or application quality without the help of automated testing tools or test scripts. Testers interact with the system like how an end user would to identify bugs, defects, and issues in the software that create friction in user experience.
When a developer manually runs their application and tries out the features they have coded, they are doing manual testing. Its simplicity makes manual testing great for small-scale testing of personal projects. Even for large-scale testing where there are thousands and millions of items and features to test, manual testing is still needed to some degree.
Automation Testing
Using automation frameworks and automation testing tools to automatically run a suite of test cases. The entire process from test creation to execution is done with little human intervention, helping to reduce manual effort while increasing testing accuracy and efficiency.
AI Testing
the evaluation of a system’s functionality, performance, and reliability using AI. It follows the same traditional Software Testing Life Cycle, but all of its stages have been significantly improved by AI techniques such as Machine Learning, NLP, or Computer Vision, assisting QA teams in advanced tasks that previously required human intelligence such as data analysis, planning, and decision making.
Functional Testing
A type of testing that seeks to establish whether each application feature works as per the software requirements. Each function is compared to the corresponding requirement to ascertain whether its output is consistent with the end user’s expectations.
Functional testing can include unit, regression, sanity, smoke, integration, and usability testing.
Visual Testing
Visual testing evaluates the visible output of an application and compares that output against the results expected by design. In other words, it helps catch “visual bugs” in the appearance of a page or screen, which are distinct from strictly functional bugs.
You can run visual tests at any time on any application with a visual user interface. Most developers run visual tests on individual components during development, and on a functioning application during end-to-end tests.
Performance Testing
Performance testing is a non-functional software testing technique that determines how the stability, speed, scalability, and responsiveness of an application holds up under a given workload. It’s a key step in ensuring software quality, but unfortunately, is often seen as an afterthought, in isolation, and to begin once functional testing is completed, and in most cases, after the code is ready to release.
The goals of performance testing include evaluating application output, processing speed, data transfer velocity, network bandwidth usage, maximum concurrent users, memory utilization, workload efficiency, and command response times.
Regression Testing
Regression testing is a systematic approach to software testing performed after modifications in the codebase. It ensures that new updates do not disrupt the existing functionality, maintaining software stability and performance.
Compatibility Testing
Compatibility testing is a type of testing that examines and compares functionality over multiple browsers, devices, platforms, and OS to recognize potential discrepancies. Performing compatibility testing verifies that your product/software works efficiently in its intended environments.
Accessibility Testing
In software QA, accessibility testing confirms that an application is usable for as many people as possible, including people with disabilities such as vision, hearing, and cognitive conditions.
By incorporating various types of accessibility testing into your QA practices, your team can ensure that all content within your web application is reachable to anyone without barriers. Testing teams often incorporate accessibility testing tools when performing these tests to ensure their applications are compatible with assistive technology, including speech recognition software, screen reader software, screen magnification software, and special keyboards.
Smoke Testing
Smoke Testing is a software testing technique that basically determines whether a new build delivered by the Development team is bug-free or not. It gives the go-ahead to the QA team to move further with their testing rounds.
It is also known as Confidence Testing or Build Verification / Build Promotion Testing and is made up of a collection of tests that are performed on each build received during the software development life cycle to determine its health.
In simple words, Smoke tests verify whether the most important features work as expected and that there are no showstopper issues in the build that can potentially lead to blocking the entire testing team. It helps in deciding if the build is flawed or not and hence, prevents the entire team from wasting time or resources.
Sanity Testing
A type of software testing that is used to verify that a small change or a bug fix in the software is working as intended and has not caused any unexpected side effects or broken any existing functionality.
The main goal of sanity testing is to validate the changes made to one or few specific parts of the application and not detailed testing. It is a quick and superficial check to ensure that the system is still functioning as expected after a change has been made.
White Box Testing
White box testing is an approach that allows testers to inspect and verify the inner workings of a software system—its code, infrastructure, and integrations with external systems. White box testing is an essential part of automated build processes in a modern Continuous Integration/Continuous Delivery (CI/CD) development pipeline.
White box testing is often referenced in the context of Static Application Security Testing (SAST), an approach that checks source code or binaries automatically and provides feedback on bugs and possible vulnerabilities.