- Absence of Error
- Acceptance testing
- Alpha testing
- Appium
- Automation Testing
- Behaviour Driven Development
- Beta testing
- Black box testing
- Bottom up
- Boundary Value Analysis
- Capybara
- Configuration Management
- Cucumber
- Data Parsing
- Debugging
- Defect
- Defect Clustering
- Dynamic Testing
- Early Testing
- Equivalence Partitioning
- Error
- Error Guessing
- Evaluating Test Criteria
- Exhaustive testing
- Exploratory testing
- Failure
- Functional tests
- Gherkin Syntax
- Hybrid
- IEEE-829
- ISTQB
- Incident management
- Integration testing
- JMeter
- Metric based testing
- Mike Cohn's test Pyramid
- Mobile testing
- Non-functional tests
- Pesticide Paradox
- RSpec
- Regression Testing
- Restesting
- Reusability
- Reviews
- Risk based testing
- Selenium
- State Transition Testing
- Statement Testing
- Static testing
- Structural testing
- System Integration
- System testing
- Test Analysis and Design
- Test Case
- Test Closure
- Test Coverage
- Test Design
- Test Driven Development
- Test Implementation and Execution
- Test Planning and Control
- Test tools
- Testing Roles
- Testing is context dependent
- Testing shows presence of defects
- Top down
- Traceability
- Unit testing
- Use Case testing
- User journey/story
- Validation
- Verification
- White box testing
- YAML
If the system built is unusable and does not fulfil the user’s needs and expectations then finding and fixing defects does not help.
Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers’ site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing, before the software goes to beta testing.
It's a open source cross-platform test automation tool for native, mobile web applications.
Automated testing is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes.
Beta Testing is also known as field testing. It takes place at customer’s site. It sends the system/software to users who install it and use it under real-world working conditions.
The testers have no knowledge of how the system or component is structured inside the box. In black-box testing the tester is concentrating on what the software does, not how it does it.
Bottom-up testing is an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components.
A black-box test design technique in which test cases are designed based on boundary values.
Capybara is a web-based test automation software that simulates scenarios for user stories and automates web application testing for behavior-driven software development. It is a part of the Cucumber testing framework written in the Ruby programming language that simulates various aspects of a web browser from the perspective of a real user.
A discipline applying technical and administrative direction and surveillance to identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements.
Parsing is the process of analyzing text made of a sequence of tokens to determine its grammatical structure with respect to a given (more or less) formal grammar. The parser then builds a data structure based on the tokens.
The process of finding, analyzing and removing the causes of failures in software. Debugging tools are used to reproduce failures, investigate the state of programs and find the corresponding defect. Debuggers enable programmers to execute programs step by step, to halt a program at any program statement and to set and examine program variables.
A small number of modules contains most of the defects discovered during pre-release testing or shows the most operational failures.
Dynamic Testing is a kind of software testing technique using which the dynamic behaviour of the code is analysed. For Performing dynamic, testing the software should be compiled and executed and parameters such as memory usage, CPU usage, response time and overall performance of the software are analyzed.
In the software development life cycle testing activities should start as early as possible and should be focused on defined objectives.
A black-box test design technique in which test cases are designed to execute representatives from equivalence partitions. In principle, test cases are designed to cover each partition at least once.
A test design technique where the experience of the tester is used to anticipate what defects might be present in the component or system under test as a result of errors made, and to design tests specifically to expose them.
Testing everything including all combinations of inputs and preconditions is not possible. So, instead of doing the exhaustive testing we can use risks and priorities to focus testing efforts. For example: In an application in one screen there are 15 input fields, each having 5 possible values, then to test all the valid combinations you would need 30 517 578 125 (515) tests. This is very unlikely that the project timescales would allow for this number of tests. So, accessing and managing risk is one of the most important activities and reason for testing in any project.
A relatively informal testing method especially used in situations where there is limited time or poor specifications for testing. Testing is more hands on and decisions about what to test and how things will be tested are made on the fly by the tester. It does not preclude the use or inclusion of other more formal test techniques and often helps to establish greater confidence in software under test.
### Functional tests
It is a Business Readable, Domain Specific Language that lets you describe software's behaviour without detailing how that behaviour is implemented. It bridges the gap between business and developers. Gherkin serves two purposes — documentation and automated tests.
It is an approach to Integration Testing which is a combination of Top Down and Bottom Up approaches.
Standard for Software Test Documentation Eight defined stages of software testing:
- Test Plan
- Test Design Specification
- Test Case Specification
- Test Procedure Specification
- Test Item Transmittal Report
- Test Incident Report
- Test Log
- Test Summary Report
It stands for the "International Software Testing Qualifications Board". It's a software testing qualification certification organisation that operates internationally.
The "Test Pyramid" is a metaphor that tells us to group software tests into buckets of different granularity. It also gives an idea of how many tests we should have in each of these groups.
The process of recognizing, investigating, taking action and disposing of incidents. It involves logging incidents, classifying them and identifying the impact. Integration testing JMeter
In software testing, Metric is a quantitative measure of the degree to which a system, system component, or process possesses a given attribute. In other words, metrics helps estimating the progress, quality and health of a software testing effort. Mike Cohn's test Pyramid
Mobile application testing is a process by which application software developed for handheld mobile devices is tested for its functionality, usability and consistency. Mobile application testing can be an automated or manual type of testing.
Tool for testing an IOS app: Appium
Tool for testing an Android app: Android Studio
If the same kinds of tests are repeated again and again, eventually the same set of test cases will no longer be able to find any new bugs. To overcome this “Pesticide Paradox”, it is really very important to review the test cases regularly and new and different tests need to be written to exercise different parts of the software or system to potentially find more defects.
RSpec is a 'Domain Specific Language' testing tool written in Ruby to test Ruby code. It is a behavior-driven development framework which is extensively used in the production applications.
It's a type of software testing that ensures that previously developed and tested software still performs the same way after it is changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc.
Retesting is testing of a particular bug after it has been fixed. Usually tester raises the bug when they find it while testing the product or its component.
An approach to testing to reduce the level of product risks and inform stakeholders of their status, starting in the initial stages of a project. It involves the identification of product risks and the use of risk levels to guide the test process.
Selenium WebDriver tool is used to automate web application testing to verify that it works as expected. It supports many browsers such as Firefox, Chrome, IE, and Safari. However, using the Selenium WebDriver, we can automate testing for web applications only. It does not qualify for window-based applications.
A black-box test design technique in which test cases are designed to execute valid and invalid state transitions.
A white-box test design technique in which test cases are designed to execute statements.
Static testing is the testing of the software work products manually, or with a set of tools. Code is not executed.
It is a testing process that exercises a software system's coexistence with others. With multiple integrated systems, assuming that each have already passed system testing, System Integration proceeds to test their required interactions.
A test case is a document which consists of a set of conditions or actions which are performed on the software application in order to verify the expected functionality of the feature. Here we describe the end to end logical flow of a specific requirement with test data, prerequisites and expected results.
Test coverage measures the amount of testing performed by a set of test. Wherever we can count things and can tell whether or not each of those things has been tested by some test, then we can measure coverage and is known as test coverage.
The basic coverage measure is where the ‘coverage item’ is whatever we have been able to count and see whether a test has exercised or used this item.
There is danger in using a coverage measure. But, 100% coverage does not mean 100% tested. Coverage techniques measure only one dimension of a multi-dimensional concept. Two different test cases may achieve exactly the same coverage but the input data of one may find an error that the input data of the other doesn’t.
There are many different types of coverages which we will look at in detail, in subsequent topic, some of them are:
- Statement coverage
- Decision coverage
- Condition coverage
Creating a set of inputs for given software that will provide a set of expected outputs. The idea is to ensure that the system is working good enough and it can be released with as few problems as possible for the average user.
There are two main categories of Test Design Techniques:
- Static Techniques
- Dynamic Techniques
- Defining the testing activities for subordinates – testers or test engineers.
- All responsibilities of test planning.
- To check if the team has all the necessary resources to execute the testing activities.
- To check if testing is going hand in hand with the software development in all phases.
- Prepare the status report of testing activities.
- Required Interactions with customers.
- Updating project manager regularly about the progress of testing activities.
- To read all the documents and understand what needs to be tested.
- Based on the information procured in the above step decide how it is to be tested.
- Inform the test lead about what all resources will be required for software testing.
- Develop test cases and prioritize testing activities.
- Execute all the test case and report defects, define severity and priority for each defect.
- Carry out regression testing every time when changes are made to the code to fix defects.
Testing is context dependent: Testing is basically context dependent. Different kinds of sites are tested differently. For example, safety – critical software is tested differently from an e-commerce site.
Testing can show the defects are present, but cannot prove that there are no defects. Even after testing the application or product thoroughly we cannot say that the product is 100% defect free. Testing always reduces the number of undiscovered defects remaining in the software but even if no defects are found, it is not a proof of correctness.
Top-down integration testing is an integration testing technique used in order to simulate the behaviour of the lower-level modules that are not yet integrated.
The ability to identify related items in documentation and software, such as requirements with associated tests.
A unit test is the smallest testable part of an application like functions, classes, procedures, interfaces. Unit testing is a method by which individual units of source code are tested to determine if they are fit for use.Unit tests are basically written and executed by software developers to make sure that code meets its design and requirements and behaves as expected. The goal of unit testing is to segregate each part of the program and test that the individual parts are working correctly.
A black-box test design technique in which test cases are designed to execute scenarios of use cases.
Confirmation by examination and through provision of objective evidence that the requirements for a specific intended use or application have been fulfilled.
Confirmation by examination and through provision of objective evidence that specified requirements have been fulfilled.
This article is devoted to understanding how to derive test cases from a program and also derive coverage metrics for tests undertake. Deriving test case after analysis or understanding programs is white box testing.
YAML (YAML Ain't Markup Language) is a data serialization language. It is commonly used for configuration files, but could be used in many applications where data is being stored or transmitted.