QA Analyst Interview Questions/VITAL SHIIT PART 3 (types of software testing & more)
Stress Testing
1. It is a type of non-functional testing. 2. It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results. 3. It is a form of software testing that is used to determine the stability of a given system. 4. It put greater emphasis on robustness, availability, and error handling under a heavy load, rather than on what would be considered correct behavior under normal circumstances. 5. The goals of such tests may be to ensure the software does not crash in conditions of insufficient computational resources (such as memory or disk space). (TOO MANY USERS, TOO MUCH DATA, TOO LITTLE TIME AND TOO LITTLE ROOM)
Volume Testing
1. It is a type of non-functional testing. 2. Volume testing refers to testing a software application or the product with a certain amount of data. E.g., if we want to volume test our application with a specific database size, we need to expand our database to that size and then test the application's performance on it. 3. "Volume testing" is a term given and described in Glenford Myers' The Art of Software Testing, 1979. Here's his definition: "Subjecting the program to heavy volumes of data. The purpose of volume testing is to show that the program cannot handle the volume of data specified in its objectives" - p. 113. 4. The purpose of volume testing is to determine system performance with increasing volumes of data in the database. (LARGE AMOUNTS OF DATA)
Load Testing
1. Load testing is a type of non-functional testing. 2. A load test is type of software testing which is conducted to understand the behavior of the application under a specific expected load. 3. Load testing is performed to determine a system's behavior under both normal and at peak conditions. 4. It helps to identify the maximum operating capacity of an application as well as any bottlenecks and determine which element is causing degradation. E.g. If the number of users are increased then how much CPU, memory will be consumed, what is the network and bandwidth response time. 5. Load testing can be done under controlled lab conditions to compare the capabilities of different systems or to accurately measure the capabilities of a single system. 6. Load testing involves simulating real-life user load for the target application. It helps you determine how your application behaves when multiple users hits it simultaneously. 7. Load testing differs from stress testing, which evaluates the extent to which a system keeps working when subjected to extreme work loads or when some of its hardware or software has been compromised. 8. The primary goal of load testing is to define the maximum amount of work a system can handle without significant performance degradation. Examples of load testing include: Downloading a series of large files from the internet. Running multiple applications on a computer or server simultaneously. Assigning many jobs to a printer in a queue. Subjecting a server to a large amount of traffic. Writing and reading data to and from a hard disk continuously.
Alpha Testing
Alpha testing is one of the most common software testing strategy used in software development. Its specially used by product development organizations. 1. This test takes place at the developer's site. Developers observe the users and note problems. 2. Alpha testing is testing of an application when development is about to complete. Minor design changes can still be made as a result of alpha testing. 3. Alpha testing is typically performed by a group that is independent of the design team, but still within the company, e.g. in-house software test engineers, or software QA engineers. 4. Alpha testing is final testing before the software is released to the general public. It has two phases: 5. In the first phase of alpha testing, the software is tested by in-house developers. They use either debugger software, or hardware-assisted debuggers. The goal is to catch bugs quickly. 6. In the second phase of alpha testing, the software is handed over to the software QA staff, for additional testing in an environment that is similar to the intended use. 7. 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.
What is the difference between Load Testing and Performance Testing?
Basically Load, Stress and Performance Testing are the same. However, Load testing is the test to check the users' response time of number of users of any one scenario of the application whereas Performance Testing is the test to check the user response time for multiple scenario of the same application.
Black Box Testing
Black Box Testing, also known as Behavioral Testing, is a software testing method in which the internal structure/ design/ implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, though usually functional. This method is named so because the software program, in the eyes of the tester, is like a black box; inside which one cannot see. This method attempts to find errors in the following categories: Incorrect or missing functions Interface errors Errors in data structures or external database access Behavior or performance errors Initialization and termination errors Definition by ISTQB black box testing: Testing, either functional or non-functional, without reference to the internal structure of the component or system. black box test design technique: Procedure to derive and/or select test cases based on an analysis of the specification, either functional or non-functional, of a component or system without reference to its internal structure. EXAMPLE A tester, without knowledge of the internal structures of a website, tests the web pages by using a browser; providing inputs (clicks, keystrokes) and verifying the outputs against the expected outcome. LEVELS APPLICABLE TO Black Box Testing method is applicable to the following levels of software testing: Integration Testing System Testing Acceptance Testing The higher the level, and hence the bigger and more complex the box, the more black box testing method comes into use. BLACK BOX TESTING TECHNIQUES Following are some techniques that can be used for designing black box tests. Equivalence partitioning: It is a software test design technique that involves dividing input values into valid and invalid partitions and selecting representative values from each partition as test data. Boundary Value Analysis: It is a software test design technique that involves determination of boundaries for input values and selecting values that are at the boundaries and just inside/ outside of the boundaries as test data. Cause Effect Graphing: It is a software test design technique that involves identifying the cases (input conditions) and effects (output conditions), producing a Cause-Effect Graph, and generating test cases accordingly. BLACK BOX TESTING ADVANTAGES Tests are done from a user's point of view and will help in exposing discrepancies in the specifications. Tester need not know programming languages or how the software has been implemented. Tests can be conducted by a body independent from the developers, allowing for an objective perspective and the avoidance of developer-bias. Test cases can be designed as soon as the specifications are complete. BLACK BOX TESTING DISADVANTAGES Only a small number of possible inputs can be tested and many program paths will be left untested. Without clear specifications, which is the situation in many projects, test cases will be difficult to design. Tests can be redundant if the software designer/ developer has already run a test case. Ever wondered why a soothsayer closes the eyes when foretelling events? So is almost the case in Black Box Testing. Black Box Testing is contrasted with White Box Testing. Read Differences between Black Box Testing and White Box Testing.
What are different types of software testing?
Different types of testing carried out are: 1) Unit testing 2) Shakeout testing 3) Smoke testing (Ad-hoc testing) 4) Functional testing 5) Integration testing 6) Regression testing 7) System testing 8) Load testing 9) Stress testing 10) Performance testing 11) User acceptance testing 12) Black box testing 13) White box testing 14) Gray box testing 15) Alpha testing 16) Beta testing Note: Except the Shakeout testing and Unit testing which are respectively done by the CMT and Coder/Developer, all other testing are done by the QA Engineer (Tester).
Functional Testing
Functional testing means testing the application against business requirements. Functional testing is executed using the functional specifications given by the client or by the design specifications according to use cases given by the design team. Role of functional testing is to validating the behavior of an application. Functional testing is more important because it always verifies that your system is fixed for release. The functional tests define your working system in a useful manner. In functional testing tester has to validate the application to see that all specified requirements of the client whatever we have said in SRS or BRS have been incorporated or not. Functional testing is always concentrating on customer requirements and whereas the Non-Functional testing is always concentrating on customer expectations.
Gray Box Testing
Gray Box Testing is a software testing method which is a combination of Black Box Testing method and White Box Testing method. In Black Box Testing, the internal structure of the item being tested is unknown to the tester and in White Box Testing the internal structure in known. In Gray Box Testing, the internal structure is partially known. This involves having access to internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level. Gray Box Testing is named so because the software program, in the eyes of the tester is like a gray/ semi-transparent box; inside which one can partially see. EXAMPLE An example of Gray Box Testing would be when the codes for two units/ modules are studied (White Box Testing method) for designing test cases and actual tests are conducted using the exposed interfaces (Black Box Testing method). LEVELS APPLICABLE TO Though Gray Box Testing method may be used in other levels of testing, it is primarily useful in Integration Testing.
Performance Testing
It is a test to check the user's response time of number of users using multiple scenarios (multiple business process) of the same application at the same time. 1. It is a type of non-functional testing. 2. Performance testing is testing that is performed, to determine how fast some aspect of a system performs under a particular workload. 3. It can serve different purposes like it can demonstrate that the system meets performance criteria. 4. It can compare two systems to find which performs better. Or it can measure what part of the system or workload causes the system to perform badly. 5. This process can involve quantitative tests done in a lab, such as measuring the response time or the number of MIPS (millions of instructions per second) at which a system functions. Why to do performance testing: 1. Improve user experience on sites and web apps 2. Increase revenue generated from websites 3. Gather metrics useful for tuning the system 4. Identify bottlenecks such as database configuration 5. Determine if a new release is ready for production 6. Provide reporting to business stakeholders regarding performance against expectations
Beta Testing
It is also known as field testing. It takes place at customer's site. It sends the system to users who install it and use it under real-world working conditions. A beta test is the second phase of software testing in which a sampling of the intended audience tries the product out. (Beta is the second letter of the Greek alphabet.) Originally, the term alpha test meant the first phase of testing in a software development process. The first phase includes unit testing, component testing, and system testing. Beta testing can be considered "pre-release testing. The goal of beta testing is to place your application in the hands of real users outside of your own engineering team to discover any flaws or issues from the user's perspective that you would not want to have in your final, released version of the application. Advantages of beta testing: 1. You have the opportunity to get your application into the hands of users prior to releasing it to the general public. 2. Users can install, test your application, and send feedback to you during this beta testing period. 3. Your beta testers can discover issues with your application that you may have not noticed, such as confusing application flow, and even crashes. 4. Using the feedback you get from these users, you can fix problems before it is released to the general public. 5. The more issues you fix that solve real user problems, the higher the quality of your application when you release it to the general public. 6. Having a higher-quality application when you release to the general public will increase customer satisfaction. 7. These users, who are early adopters of your application, will generate excitement about your application. IT IS LIKE A FUC KI N G DEMO that is released to the public environment
System Testing
Its the testing of a complete and fully integrated Software product Example: You are testing on a web application of a school and in this web application there are many modules like Teacher Module, Staff Module, Parent Module, Student Module, and Admin Module and so on. Now you have to do System Testing on a web application of a school, so your criteria for doing System Testing will be like that which is given below: 1. First you test the GUI related issues on all these above mentioned modules by checking that font size, alignment, display images should work properly on all the modules. 2. Now after checking the GUI issues you move towards functionality related issues by checking that the requirements of client have been met or not. 3. After checking functionality you can check whether the application is user friendly or not by checking that proper error message should be displayed on screen or not. In this Usability Testing you test the system means application by keeping users in mind because if the application is not user friendly than client will not accept the application because in application apart from functionality, user friendliness is also very important. (Functional Example is what is described above)
Smoke Testing
Testing major functionalities of the application to ensure the application is stable enough to go for further testing. Smoke testing is performed by developers before releasing the build to the testing team and after releasing the build to the testing team it is performed by testers whether to accept the build for further testing or not. Example: In a project there are five modules like login, view user, user detail page, new user creation, and task creation etc. So in this five modules first of all developer perform the smoke testing by executing all the major functionality of modules like user is able to login or not with valid login credentials and after login new user can created or not, and user that is created viewed or not. Conclusion: If the build clears the Smoke test, then it is accepted by QA for further testing, however if the build fails the Smoke test, then it's rejected and QA reverts back to previously accepted build. Easy to perform testing Defects will be identified in early stages. Improves the quality of the system Reduces the risk Progress is easier to access. Saves test effort and time Easy to detect critical errors and correction of errors. It runs quickly Minimises integration risks
What is Negative Testing?
Testing the system or application using negative data is called negative testing, for example, testing password entering 6 characters where it should be 8 characters should display a message. When we test an application by putting negative values (instead of actual values), then the system should not allow the other values rather than the actual value. The system should give an message that the value is not correct. This is called negative testing. Another example is, if a user tries to type a letter in a numeric field, the correct behavior in this case would be to display the "Incorrect data type, please enter a number" message. The purpose of negative testing is to detect such situations and prevent applications from crashing. Also, negative testing helps you improve the quality of your application and find its weak points.
Unit testing
The main idea of unit testing is testing software with a small piece of source code (unit, component, and/or function) of the same software. Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually and independently scrutinized for proper operation. Unit testing is often automated but it can also be done manually. It is done by the developers (Not testers). EXAMPLE: For example you are testing a function; whether loop or statement in a program is working properly or not than this is called as unit testing.
Shakeout testing
This test is basically carried out to check the networking facility, database connectivity and the integration of modules. (It is done by the Configuration Team)
User Acceptance Testing
User acceptance testing (UAT) is the last phase of the software testing process. During UAT, actual software users test the software to make sure it can handle required tasks in real-world scenarios, according to specifications. UAT is one of the final and critical software project procedures that must occur before newly developed software is rolled out to the market. UAT is also known as beta testing, application testing or end user testing UAT directly involves the intended users of the software. UAT can be implemented by making software available for a free beta trial on the Internet or through an in-house testing team comprised of actual software users. Following are the steps involved in in-house UAT: Planning: The UAT strategy is outlined during the planning step. Designing test cases: Test cases are designed to cover all the functional scenarios of the software in real-world usage. They are designed in a simple language and manner to make the test process easier for the testers. Selection of testing team: The testing team is comprised of real world end-users. Executing test cases and documenting: The testing team executes the designed test cases. Sometimes it also executes some relevant random tests. All bugs are logged in a testing document with relevant comments. Bug fixing: Responding to the bugs found by the testing team, the software development team makes final adjustments to the code to make the software bug-free. Sign-off: When all bugs have been fixed, the testing team indicates acceptance of the software application. This shows that the application meets user requirements and is ready to be rolled out in the market. UAT is important because it helps demonstrate that required business functions are operating in a manner suited to real-world circumstances and usage.
Regression Testing
When a functionality is added to an application, we need to make sure that the newly added functionality does not break the application. In order to make it sure, we perform a repeated testing which is called Regression Testing. We also do regression testing after the developers fix the bugs. 1. First approach is doing the regression testing when bug is fixed. 2. Second approach is doing regression testing when change in requirements of the client. Example: There are three Modules in the Project named Admin Module, Personal Information, and Employment Module and suppose bug occurs in the Admin Module like on Admin Module existing User is not able to login with valid login credentials so this is the bug. Now Testing team sends the above - mentioned Bug to the Development team to fix it and when development team fixes the Bug and hand over to Testing team than testing team checks that fixed bug does not affect the remaining functionality of the other modules (Admin, PI, Employment) and also the functionality of the same module (Admin) so this is known as the process of regression testing done by Software Testers There are mostly two strategies to regression testing, 1) to run all tests and 2) always run a subset of tests based on a test case prioritization technique. When will we do Regression Testing? Regression testing is the re-testing of features to make safe that features working earlier are still working fine as desired. ****Regression testing involves testing done to make sure none of the changes made over the course of the development process have caused new bugs. It also makes sure no old bugs appear from the addition of new software modules over time.****
Integration Testing
When individual software modules are merged and tested as a group then it is known as integration testing. Integration testing is sets between Unit Testing and System Testing. It is a test to check whether all the modules are combined together or not and working successfully as specified in the requirement document. Integration testing in large refers to joining all the components resulting in the complete system. It is further performed by the developer or the software Tester or by both. Example: Checking that a Payroll system interacts as required with the Human Resource system.
White Box Testing
White Box Testing (also known as Clear Box Testing, Open Box Testing, Glass Box Testing, Transparent Box Testing, Code-Based Testing or Structural Testing) is a software testing method in which the internal structure/ design/ implementation of the item being tested is known to the tester. The tester chooses inputs to exercise paths through the code and determines the appropriate outputs. Programming know-how and the implementation knowledge is essential. White box testing is testing beyond the user interface and into the nitty-gritty of a system. This method is named so because the software program, in the eyes of the tester, is like a white/ transparent box; inside which one clearly sees. Definition by ISTQB white-box testing: Testing based on an analysis of the internal structure of the component or system. white-box test design technique: Procedure to derive and/or select test cases based on an analysis of the internal structure of a component or system. EXAMPLE A tester, usually a developer as well, studies the implementation code of a certain field on a webpage, determines all legal (valid and invalid) AND illegal inputs and verifies the outputs against the expected outcomes, which is also determined by studying the implementation code. White Box Testing is like the work of a mechanic who examines the engine to see why the car is not moving. LEVELS APPLICABLE TO White Box Testing method is applicable to the following levels of software testing: Unit Testing: For testing paths within a unit. Integration Testing: For testing paths between units. System Testing: For testing paths between subsystems. However, it is mainly applied to Unit Testing. WHITE BOX TESTING ADVANTAGES Testing can be commenced at an earlier stage. One need not wait for the GUI to be available. Testing is more thorough, with the possibility of covering most paths. WHITE BOX TESTING DISADVANTAGES Since tests can be very complex, highly skilled resources are required, with thorough knowledge of programming and implementation. Test script maintenance can be a burden if the implementation changes too frequently. Since this method of testing it closely tied with the application being testing, tools to cater to every kind of implementation/platform may not be readily available.