Testing by using software tools which execute test without manual intervention is known as automated testing. Automated testing can be used in GUI, performance, API, etc.
We can tell anywhere between 2-5 test cases.
- First test case → 1st day, 2nd day.
- Second test case → 3rd day, 4th day.
- Forth test case → 5th day.
- 9-10 test cases → 19th day.
Primarily, we use to write 2-5 test cases, but in future stages we write around 6-7 because, at that time, we have the better product knowledge, we start re-using the test cases, and the experience on the product.
It helps you to prevent defects in the code.
Preventative tests are designed earlier, and reactive tests are designed after the software has been produced.
In boundary value analysis/testing, we only test the exact boundaries rather than hitting in the middle. For example: If there is a bank application where you can withdraw a maximum of 25000 and a minimum of 100. So in boundary value testing we only test above the max and below the max. This covers all scenarios.
The following figure shows the boundary value testing for the above-discussed bank application.TC1 and TC2 are sufficient to test all conditions for the bank. TC3 and TC4 are duplicate/redundant test cases which do not add any value to the testing. So by applying proper boundary value fundamentals, we can avoid duplicate test cases, which do not add value to the testing.
The Bottom-up testing is a testing approach which follows integration testing where the lowest level components are tested first, after that the higher level components are tested. The process is repeated until the testing of the top-level component.
It would be around 7 test cases we write so that we can review 7*3=21 test cases. And we can say that 25-30 test case per day.
The risk-based testing is a testing strategy that is based on prioritizing tests by risks. It is based on a detailed risk analysis approach which categorizes the risks by their priority. Highest priority risks are resolved first.
The exit criteria are used to define the completion of the test level.
There are many ways to test the login feature of a web application:
- Sign in with valid login, Close browser and reopen and see whether you are still logged in or not.
- Sign in, then log out and then go back to the login page to see if you are truly logged out.
- Log in, then go back to the same page, do you see the login screen again?
- Session management is important. You must focus on how do we keep track of logged in users, is it via cookies or web sessions?
- Sign in from one browser, open another browser to see if you need to sign in again?
- Log in, change the password, and then log out, then see if you can log in again with the old password.
In Baseline testing, a set of tests is run to capture performance information. Baseline testing improves the performance and capabilities of the application by using the information collected and make the changes in the application. Baseline compares the present performance of the application with its previous performance.
- The testing team is not good
- Developers are super
- Product is old
- All of the above
The correct answer is testing team is not good because sometimes the fundamentals of software testing define that no product has zero bugs.
Designing tests early in the life cycle prevent defects from being in the main code.
Accessibility testing is used to verify whether a software product is accessible to the people having disabilities (deaf, blind, mentally disabled etc.).
A decision table consists of inputs in a column with the outputs in the same column but below the inputs.
The decision table testing is used for testing systems for which the specification takes the form of rules or cause-effect combination. The reminders you get in the table explore combinations of inputs to define the output produced.
Benchmarking testing is the process of comparing application performance with respect to the industry standard given by some other organization.
It is a standard testing which specifies where our application stands with respect to others.
The software can have a bug for the following reasons:
- Software complexity
- Programming errors
- If no communications are happening between the customer and the company, i.e., an application should or should not perform according to the software’s needs.
- Modification in requirements
- Time pressure
There are three types of defects: Wrong, missing, and extra.
Wrong: These defects are occurred due to requirements have been implemented incorrectly.
Missing: It is used to specify the missing things, i.e., a specification was not implemented, or the requirement of the customer was not appropriately noted.
Extra: This is an extra facility incorporated into the product that was not given by the end customer. It is always a variance from the specification but may be an attribute that was desired by the customer. However, it is considered as a defect because of the variance from the user requirements.
Ad-hoc testing is a testing phase where the tester tries to ‘break’ the system by randomly trying the system’s functionality.
There are various models available in software testing, which are the following:
- Waterfall model
- Spiral Model
- Prototype model
- Verification and validation model
- Hybrid model
- Agile model
- Rational unified process model[RUP]
- Rapid Application development [RAD]
Random testing is also known as monkey testing. In this testing, data is generated randomly often using a tool. The data is generated either using a tool or some automated mechanism.
Random testing has some limitations:
Most of the random tests are redundant and unrealistic.
It needs more time to analyze results.
It is not possible to recreate the test if you do not record what data was used for testing.
There are two types of testing which are very important for web testing:
- Performance testing: Performance testing is a testing technique in which quality attributes of a system are measured such as responsiveness, speed under different load conditions and scalability. The performance testing describes which attributes need to be improved before the product is released in the market.
- Security testing: Security testing is a testing technique which determines that the data and resources be saved from the intruders.
We will perform testing whenever we need to check all requirements are executed correctly or not, and to make sure that we are delivering the right quality product.
Simultaneous test design and execution against an application is called exploratory testing. In this testing, the tester uses his domain knowledge and testing experience to predict where and under what conditions the system might behave unexpectedly.
Agile testing is a testing practice that uses agile methodologies i.e. follow test-first design paradigm.
To test any web application such as Yahoo, Gmail, and so on, we will perform the following testing:
- Functional testing
- Integration testing
- System testing
- Performance testing
- Compatibility testing ( test the application on the various operating systems, multiple browsers, and different version)
- Usability testing ( check whether it is user friendly)
- Ad-hoc testing
- Accessibility testing
- Smoke testing
- Regression testing
- Security testing
- Globalization testing ( only if it is developed in different languages)
Negative Testing: When you put an invalid input and receive errors is known as negative testing.
Positive Testing: When you put in the valid input and expect some actions that are completed according to the specification is known as positive testing.
We might have developed the software in one platform, and the chances are there that users might use it in the different platforms. Hence, it could be possible that they may encounter some bugs and stop using the application, and the business might get affected. Therefore, we will perform one round of Compatibility testing.
The difference between a web application and desktop application is that a web application is open to the world with potentially many users accessing the application simultaneously at various times, so load testing and stress testing are important. Web applications are also prone to all forms of attacks, mostly DDOS, so security testing is also very important in the case of web applications.
We can stop testing whenever we have the following:
- Once the functionality of the application is stable.
- When the time is less, then we test the necessary features, and we stop it.
- The client’s budget.
- When the essential feature itself is not working correctly.
Exploratory testing is performed as a final check before the software is released. It is a complementary activity to automated regression testing.
Application Programming Interface is a formalized set of software calls and routines that can be referenced by an application program to access supporting system or network services.
Test independence is very useful because it avoids author bias in defining effective tests.