Friday, 5 June 2020

Fundamentals of Software Testing


Fundamentals of Software Testing

Software testing is the practice of evaluating a system or its component(s) through the aim to locate whether it satisfies the specified software requirements or not. In other words, testing is executing a system in order to recognize any gaps, errors, or missing software requirements in contrary to the actual requirements. It depends on the process and the associated stakeholders of the project(s). In the Information Technology (IT) industry, large companies have a software team with responsibilities to assess the developed software in the context of the specified requirements. Furthermore, software developers also perform testing which is called unit testing.

An early commence to software testing reduces the cost and time to modify and develop an error-free software product that is delivered to the customer. However, in the software development life cycle (SDLC), software testing can be underway from the requirements gathering and specification phase and sustained until the deployment of the software product. It also depends on the software development model that is being used. For example: in the waterfall model, formal testing is conducted in the software testing phase but in the incremental model, testing is performed at the finish of every iteration or increment and the entire application is tested at the finish.
Software testing is done in diverse forms at every phase of SDLC:
  • During the requirement gathering and specification phase, the analysis and verification of requirements are also considered as testing.
  • - Reviewing the design in the design phase with the purpose to advance the design is also considered as testing.
  • -  Testing performed by a developer on the achievement of the software code is also considered as testing.

Software Testing Life Cycle (STLC) consists of a series of activities agreed out by testers methodologically to test software product. Though STLC uses the term testing it does not occupy just testers, at several instances, they have to engage developers as well. In STLC test cases are executed.
Fundamentally there are manual and automated software testing. Manual testing is performed by an individual sitting in the face of a computer carefully executing the test steps. Manual testing is a type of software testing where software testers manually execute test cases without using any automation tools. Manual testing is mainly primitive of all testing types and helps find bugs in the software system. Any new function must be manually tested before its testing can be automated. Manual testing requires additional effort but is compulsory to check automation feasibility. Manual testing does not necessitate knowledge of any testing tool. One of the software testing fundamental is 100% automation is not achievable. This makes manual testing very important. In fact, any type of software testing can be executed both manually as well using an automation tool.

Automation testing uses an automation tool to execute a test case suite. The automation software can also go through test data into the system under test, evaluate expected and actual results, and produce detailed test reports. Test automation loads significant investments in cost and resources. Successive development cycles will necessitate the execution of similar test suite continually. Using a test automation tool, its likely to record this test suite and replay it as mandatory. Once the test suite is automated, no individual involvement is required. This improved return of investment (ROI) of test automation. The goal of automation is to decrease the number of test cases to be run manually and not to reduce manual testing altogether.
There are two basics of software testing: black-box testing and white box testing. Black box testing is a testing technique that ignores the internal means of the system and focuses on the output generated by input and execution of the system. It is also called functional testing. White box testing is a testing technique that takes into account the internal means of a system. It is also called structural testing and glass box testing. Black box testing is frequently used for validation and white box testing is regularly used for verification.

System testing is the testing of an entire and completely integrated software product. Generally, the software is simply one element of a larger computer-based system. Eventually, the software is interfaced through other software or hardware systems. System testing is truly a series of diverse tests whose only purpose is to implement the complete computer-based system. System test falls in the black box testing category of software testing. Acceptance testing is a beta testing of the software product completed by the genuine end users. In integration testing, individual software modules are incorporated logically and tested as a set. A typical software project consists of numerous software modules, coded by diverse programmers. Integration testing focuses on assessment data communication between these modules. Hence it is also termed as I & T (Integration and Testing), string testing and occasionally thread testing.
There are various types of testing such as:

*Unit Testing
*Integration Testing
*System Testing
*Functional Testing*Acceptance Testing*Stress Testing
*Performance Testing
*Usability Testing
*Regression Testing
*Beta Testing

Unit testing is the testing of a person unit or group of related units. It falls under the category of white box testing. It is regularly done by the software programmer to test that the unit implemented and is producing accepted output against specified input.

Integration testing is testing in which a group of components are combined to generate output. Also the communication between software and hardware is tested in integration testing if software and hardware components have some relation. It may fall under both white box testing and black box testing.

System testing is the testing to certify that by putting the software in different environments (operating systems) it still works. System testing is finished with complete system implementation and environment. It falls under the category of black-box testing.

Functional testing is the testing to ensure that the particular functionality required in the system requirements works. It falls under the category of black-box testing.

Acceptance testing is repeatedly done by the user to guarantee that the delivered product meets the software requirements and works as the user expected. It falls under the category of black-box testing.

Stress testing is testing to assess how the system behaves under critical conditions. Testing is conducted at beyond limits of the software specifications. It falls under the category of black-box testing.

Performance testing is the testing to measure the speed and effectiveness of the system and to make sure it is generating results within a specific time as in performance requirements. It falls under the category of black-box testing.

Usability testing is performed to the perception of the user, to calculate how the GUI is user-friendly? How effortlessly can the user learn? After learning how to use? how expertly can the user perform? How enjoyable is it to use its design? This falls under the category of black-box testing.


Regression testing is the testing after modification of a component, system, or a group of related units to certify that the modification is working accurately and is not damaging or striking other modules to create unexpected results. It falls under the category of black-box testing.

Beta testing is the testing which is completed by end-users, a software team outside development, or publicly releasing full pre-version of the software product which is known as a beta version. The objective of beta testing is to wrap unexpected bugs and errors. It falls under the category of black-box testing. 




0 comments:

Post a Comment