Books of .Net/Interview Questions Interview Questions and Answers Programs C# Concept OOPS Concept JOBS

Sunday, June 25, 2017

HOW TESTING IMPROVES QUALITY OF SOFTWARE


Software testing is a process of executing a program or application with the intent of finding the software bugs.It can also be stated as the process of validating and verifying that a software program or application or product:
  • Meets the business and technical requirements that guided it’s design and development
  • Works as expected
  • Can be implemented with the same characteristic.


As the number of possible tests for even simple software components is practically infinite, all software testing uses some strategy to select tests that are feasible for the available time and resources. As a result, software testing typically (but not exclusively) attempts to execute a program or application with the intent of finding software bugs (errors or other defects). The job of testing is an iterative process as when one bug is fixed, it can illuminate other, deeper bugs, or can even create new ones.
Software testing can provide objective, independent information about the quality of software and risk of its failure to users or sponsors.
Software testing can be conducted as soon as executable software exists. The overall approach to software development often determines when and how testing is conducted. For example, in a phased process, most testing occurs after system requirements have been defined and then implemented in testable programs. In contrast, under an Agile approach, requirements, programming, and testing are often done concurrently.

We often hear people say – “Testing increases time for a software development project”.It is true that testing requires time, but it also improves quality of software. Testing helps in detecting software defects before it gets shipped to customers . Apart from detecting bugs, performance testing helps us determine system boundaries with respect to load handling and responsiveness of the system.
With testing, we can fix bugs before they can create a cascading effect in production When we identify and fix bug in such a manner, it leads to less time to complete the development process; complete being the keyword here. If we omit testing from the software development life cycle, we may be able to deliver the software faster, but the quality of the software will always be at stake. Test implementations usually depend on the software development process. Often testing is implemented after the code is written (with typical waterfall model). In Agile, it is implemented as an on-going activity. The final goal however remains same - Ensure Software meets the requirements of the customer.

when your application is in testing phase, each time a bug is corrected, you have less risk of introducing new ones. And that is also true as long as the application is still in development : each time a developper commits a new module, you know it doesn't break the rest of the application (or, at least, that it doesn't break what is covered by automated tests)
And the sooner a bug is detected, the simpler and less costly it is to fix : if a bug doesn't have time to impact other developpers, it is way better too.

Approaches to Software Testing
There are various approaches to testing, like White Box
Testing (Unit Test), Black box testing, UI Testing and many
more.
With white box testing, we test the code, internals of the
program & performance of the application can also be
tested. 
With black box testing, we do not check any code or
internals. We provide input and check if the expected output
is received. We do not measure any performance here.
Functional Testing
Functional testing can be bifurcated into two major types:
- Manual Testing and
- Automated Testing


Manual Testing
Let us take a first look at manual testing. World over, majority
of the tests are conducted manually. Testing usually begins
by the action of creation of test case. People usually use MS
Excel to create and store the test cases. Although MS Excel
is an excellent software, it falls short of being a good tool
to document the testing process. While running a test stored
in an Excel worksheet, the tester has to shuffle between test
case, input data and the application under test. That reduces
the tester’s efficiency.

Automated Testing

Most large software projects now-a-days adopt an
incremental and iterative development process. This requires
that a Test suite be run before every release iteration to
ensure regression issues don’t occur. In such cases, instead of
running the tests for existing features manually, it is
preferred that the features which were untouched in the
current release be tested automatically. Automating a test
requires significant time and technical skills, hence it is not
a fit for testing functionality that’s under active development
sprints. Tools that allows you to create automated tests
usually use the record and playback paradigm. Record the
software execution with one set of data and then play it back
with different sets of data that needs to be tested. You will
also want to specify certain validations and conditions when
the test passes or fails. Microsoft provides a feature called
Coded UI Test (CUIT) to achieve all these. CUIT can convert
manual test to its code so that time required to record the
test is zero. It also allows Coded UI Test Builder actions to
be recorded and converted. Such a test can participate as a
build verification test also.


No comments :

Post a Comment