QA - Quality Assurance and Software Testing

Software Testing:

Here is the list of some common types of Software Testing:

What is Black box testing?

This test is mainly focused on the output of the functionality. You don't have to know the internal design or coding in detail unless you try to find what broke the functionality. The blackbox test is executed by programmers and also the testers. This test is usually performed in large systems where several programmers commit changes simultaneously and frequently.

To prevent any code change to break the functionality, once the expected functionality is achieved, the predefined test cases are grouped in this test and after the first successful run the output (whatever it is, usually bunch of numbers, stats etc) is stored in an external file. Everytime a new code change is introduced the blackbox test is executed (mostly with the help of an automated system) and the expected output is compared. When there is no match then the last code change is analyzed in detail. If the new code changes are expected to change the main functionality then with the new code change the blackbox test cases and the expected output are also updated to move forward.

What is White box testing?

Opposite of blackbox testing, the white box testing is focused on the internal structure of the code, the architecture and the flow. In this test, you have to know the code in detail and write test cases to cover every single scenario based on the flow of the code itself or the user input. It tries to cover all real life scenarios and execution defects before it actually happens. Mostly performed by the programmers but also the testers.

What is Unit testing?

The unit testing is performed on the small piece of code to test a specific functionality to see if it works as expected independent of the other functionalities of the system. It can be even testing some kind of a loop. It requires detailed knowledge of the code and mostly performed by programmers.

What is Functional testing?

The functional testing is performed to test the functional requirements of an application. You don't have to know the internal coding for this type of test if executed by the testers. The tester writes a test plan and detailed test cases based on the functionality requirements and also additional test cases to check the interaction of the new functionality with the other parts and functionalities of the system. Programmers also perform this type of test and write test cases before delivering the functionality to the testers to see if everything works as expected.

What is Integration testing?

The integration testing is performed to test the interactions of different and independent modules of the system to see if they function together correctly. One example case would be a system where different parts or functionalities are designed and coded by different programmers or design groups to see the functionality interfaces and the overall functionality works as expected.

What is Incremental integration testing?

The incremental integration testing is performed regularly with the help of an automated system to test the overall functionality of the system to see any recent code changes broke anything.

What is System testing?

The system testing is performed to test the combined parts of a system to check if it functions based on the overall requirements.

What is End to End testing?

The end to end testng is similar to system testing but involves testing of a complete application environment similar to real world use. May involve interaction with a different network, databases etc.

What is Sanity testing or smoke testing?

The sanity testing is done to make sure the system works as expected and without any major defects before a new software testing is started. It is considered as a subset of regression testing.

What is Regression testing?

The regression testing is done to retest the system after some code changes are comitted to see if some of the old problems come back or introduce new ones.

What is Acceptance testing?

This is the final testing done based on the requiremenets and the agrements with the customer before the delivery.

What is Load, Stress, Performance testing?

This test is performed by simulators or automated tests to put the system to its limits to see how it functions under these conditions. Examples might be sending thousands of visitors to a website at the same time, sending millions voice or data traffic to a network at the same time etc.

What is Usability testing?

It is done to determine to see how easy to use, how friendly the application is.

What is Install / Uninstall testing?

Testing the installation, uninstallation of an application, upgrade to a new version or rollback to an old version of an application processes.

What is Recovery / Failover testing?

The test to determine how well the system recover itself or switch to the redundant system when a major problem or a software crash happens.

What is Mutation testing?

In this test, you deliberately introduce defects by changing the code to test if the existing test cases would catch that defect.

What is Security testing?

The test to determine how well the system protects itself from external accidental or intentional damage.

What is Compatability testing?

The test to determine how well the software performs in different hardware, operating systems, software platforms and versions. The simplest example would be testing a website for mobile vs desktop and for all browsers.

What is Ad-hoc testing?

The ad-hoc (also called random or monkey testing) testing is an informal testing method where the tester randomly tests the system without following any test plan or a test case to produce some defects.

What is Context driven testing?

Testing type that takes account the intended use of the software. For example, the testing of a mission critical real time software is completely different than testing a computer game software.

What is Comparison testing?

Test type to compare the system against a competing product to determine the weaker or strongers points.

What is Alpha testing?

Testing of an application when development is close to the completion to make sure the system works as expected. Usually done by programmers, testers, employees, friends etc to simulate the real users. After the defects are fixed it is time to move to the beta test.

What is Beta testing?

The beta testing is giving a finished or nearly finished product to a sample of current or potential users to evaluate its performance in the real world.

Quality Assurance:

What is Quality Assurance?

Quality assurance makes sure the project to be completed based on the previously agreed specifications, standards and functionality required without defects and possible problems. It monitors and tries to improve the development process from the beginning of the project to ensure this. It is oriented to "prevention".

What is Software Testing?

Software testing is oriented to "detection". It's examining a system or an application under controlled conditions. It's intentionally making things go wrong when they should not and things happen when they should not.

What is Software Quality?

Quality software is reasonably bug free, delivered on time and within budget, meets requirements and/or expectations and is maintainable.

What is Software Verification and Validation?

Verification is preventing mechanism to detect possible failures before the testing begin. It involves reviews, meetings, evaluating documents, plans, code, inspections, specifications etc. Validation occurs after verification and it's the actual testing to find defects against the functionality or the specifications.

What is a Test Plan?

Test Plan is a document that describes the objectives, scope, approach and focus of a software testing effort.

What is a Test Case?

A test case is a document that describes an input, action or event and an expected response, to determine if a feature of an application is working correctly. A test case should contain particulars such as test case identifier, test case name, objective, test conditions/setup, input data requirements, steps and expected results.

What is Good Software Coding?

Good code is bug free, readable, expandable in the future, easily maintainable and works according to the requirements.

What is a Good Design?

In a good design, the overall structure is clear, understandable, easily modifiable and maintainable. Works correctly when implemented and functionality can be traced back to customer and end user requirements.

Who is a Good Test Engineer?

Good test engineer has the ability to think the unthinkable, has the test to break attitute, strong desire to quality and attention to detail.

What is Walkthrough?

Walkthrough is a quick and informal meeting for evaluation purposes.

What is Software Life Cycle?

The software life cycle begins when an application is first conceived and ends when it is no longer in use. It includes aspects such as initial concept, requirements analysis, functional design, internal design, documentation planning, test planning, coding, document preparation, integration, testing, maintenance, updates, retesting, phase-out and other aspects.

What is Software Inspection?

The purpose of inspection is trying to find defects and problems mostly in documents such as test plans, specifications, test cases, coding etc. It helps to find the problems and report it but not to fix it. It is one of the most cost effective methods of software quality. Many people can join the inspections but normally one moderator, one reader and one note taker are mandatory.

What are the benefits of Automated Testing?

It's very valuable for long term and on going projects. You can automize some or all of the tests which needs to be run from time to time repeatedly or diffucult to test manually. It saves time and effort, makes testing possible out of working hours and nights. They can be used by different people and many times in the future. By this way, you also standardize the testing process and you can depend on the results.