What is software testing
Software testing is a step by step process to examine whether the given product/project/application/software is working as per their desired requirement and specification or not.
It is the process of executing a program/application under positive and negative conditions by manual or automation means.
Testing Methodology
Black box testing
White box testing
Black box testing
No knowledge of internal program design or code required.
Tests are based on requirements and functionality.
Black box testing treats the system as a “black-box”, so it doesn’t explicitly use Knowledge of the internal structure or code.
White box testing-
Knowledge of internal program design or code required.
Tests are based on coverage of code statements, branches , paths and conditions.
White box testing (WBT) is also called Structural or Glass box testing.
Unit Testing:-
Test each module individually.
Follows white box testing(Logic of program)
Done by Developers.
Integration Testing
Upon completion of unit testing, the units or modules are to be integrated which gives raise to integration testing. The purpose of integration testing is to verify the functional, performance, and reliability between the modules that are integrated.
System Testing
System Testing (ST) is a black box testing technique performed to evaluate the complete system the system's compliance against specified requirements. In System testing, the functionalities of the system are tested from an end-to-end perspective.
System Testing is usually carried out by a team that is independent of the development team in order to measure the quality of the system unbiased. It includes both functional and Non-Functional testing.
Categorisation of Testing
Functional
Positive
Negative
Non Functional
User Interface
Security
Performance
Compatibility
Usability
Maintenance
Functional Testing
Positive Testing-
There is a text box in an application which can accept only numbers. Entering values up to 99999 will be acceptable by the system and any other values apart from this should not be acceptable. To do positive testing, set the valid input values from 0 to 99999 and check whether the system is accepting the values.
Negative testing
Negative Testing can be performed on the system by providing invalid data as input. It checks whether an application behaves as expected with the negative input. This is to test the application that does not do anything that it is not supposed to do so. For example –
Nonfunctional Testing
User Interface-
Graphical User Interface (GUI) testing is the process of testing the system's GUI of the System Under Test. GUI testing involves checking the screens with the controls like menus, buttons, icons, and all types of bars - toolbar, menu bar, dialog boxes and windows, etc. Especially the focus is on the design structure, images that they are working properly or not.
Security testing
Security testing is a testing technique to determine if an information system protects data and maintains functionality as intended. By Performing security testing, it is no guarantee that systems are secure but it is important to include the security testing as part of the testing process.
Performance Testing-
Load Testing
A load test is type of software testing which is conducted to understand the behaviour of the application under a specific expected load.
Load testing is performed to determine a system’s behaviour under both normal and at peak conditions.
Stress testing
It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results.
It put greater emphasis on robustness, availability, and error handling under a heavy load, rather than on what would be considered correct behaviour under normal circumstances.
Compatibility testing
Compatibility testing is a type of software testing used to ensure compatibility of the system/application/website built with various other objects such as other web browsers, hardware platforms, operating systems etc. This type of testing helps find out how well a system performs in a particular environment that includes hardware, network, operating system and other software etc.
Usability Testing
Usability testing, a non-functional testing technique that is a measure of how easily the system can be used by end users.
Usability Testing is a type of testing done from an end-user’s perspective to determine if the system is easily usable.
Maintenance Testing
Once a system is deployed it is in service for years and decades. During this time the system and its operational environment is often corrected, changed or extended. Testing that is provided during this phase is called maintenance testing.
Usually maintenance testing is consisting of two parts:
First one is, testing the changes that has been made because of the correction in the system or if the system is extended or because of some additional features added to it.
Second one is regression tests to prove that the rest of the system has not been affected by the maintenance work.
Some other types of testing-
Adhoc Testing
Monkey Testing
Smoke Testing
Sanity Testing
Regression Testing etc.
Verification and Validation
Verification
Done by Developer
At the time of development
SRS/FRS
Developer thinks Positive end
Are we building product right
Walk through, Inspection
Validation
Done by Tester
At the end
Testing
Tester thinks negative end
Are we building right product
Testing
Software Testing Life Cycle refers to a testing process which has specific steps to be executed in a definite sequence to ensure that the quality goals have been met. In STLC process, each activity is carried out in a planned and systematic way. Each phase has different goals and deliverable. Different organisations have different phases in STLC; however the basis remains the same.
Test Requirement
During this phase,test team studies the requirements from a testing point of view to identify the testable requirements. The QA team may interact with various stakeholders (Client, Business Analyst, Technical Leads, System Architects etc) to understand the requirements in detail. Requirements could be either Functional (defining what the software must do) or Non Functional (defining system performance /security availability)
Test Planning
This phase is also called Test Strategy phase. Typically , in this stage, a Senior QA manager will determine effort and cost estimates for the project and would prepare and finalise the Test Plan. In Test Planning QA team decides which functionalities are to be tested and which are not to be tested.
This is the phase of STLC where testing team write down the detailed test cases. Along with test cases testing team also prepare the test data if any required for testing.
Test Closure
Tasks for the closure activities include the following:
Check for the completion of the test. Whether all the test cases are executed.
Discuss what all went good, which area needs to be improve & taking the lessons from current STLC as input to upcoming test cycles, which will help to improve bottleneck in the STLC process.
Bug Life Cycle
Bug Life cycle, also known as Defect Life cycle is the journey of a defect cycle, which a defect goes through during its lifetime. It varies from organisation to organisation and also from project to project as it is governed by the software testing process and also depends upon the tools used.