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, it’s 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