You are on page 1of 15

Software Testing 2019

1. Basics of Software Testing


Software: Software is a set of instructions to perform some task.
Software is used in many applications of the real world. Some of the
examples are
 Application software, such as word processors
 Firmware in a embedded system
 Middleware, which controls and co-ordinates distributed systems
 System software such as operating systems
 Video Games
 Websites
All of these applications need to run without any error and provide a quality
service to the user of the application. In this regard the software has to be
tested for its accurate and correct working.

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

ISO 8402-1986 standard defines quality as “the totality of features and


characteristics of a product or service that bears its ability to satisfy stated or
implied needs.”

Key aspects of quality for the customer include:

 Good design – looks and style

 Good functionality – it does the job well

 Reliable – acceptable level of breakdowns or failure

 Consistency

 Durable – lasts as long as it should

 Good after sales service

 Value for money

Mr.G.K.Biranagaddi Page 1
Software Testing 2019

Definition of Software Testing:-


Software Testing:“Testing can be defined in simple words as “Performing
Verification and Validation of theSoftware Product” for its correctness and
accuracy of working.”

Testing is the process of evaluating a system or its component(s) with the intent to
find whether it satisfies the specified requirements or not. In simple words, testing
is executing a system in order to identify any gaps, errors, or missing requirements
in contrary to the actual requirements.

According to ANSI/IEEE 1059 standard, Testing can be defined as - A process of


analyzing a software item to detect the differences between existing and required
conditions (that is defects/errors/bugs) and to evaluate the features of the software
item.

“Software testing is a process of executing a program or application with the intent


of finding the software bugs.”

“Software testing is an investigation conducted to provide stakeholders with


informationabout the quality of the product or service under test.”

“Software Testingis the design and implementation of a special kind of software


system: one that exercises another software system with the intent of finding
bugs.”

Software Testing also ensures whether the software program, application,


product

 Meets the business and technical requirements that guided its design
and development;
 Works as expected; and
 Can be implemented with the same characteristics.

Testing is done manually or using automated tools. Testing is done by a


separate group of Testers. Testing is done right from the beginning of the software
development life cycle till the end; it is delivered to the customer.

Mr.G.K.Biranagaddi Page 2
Software Testing 2019

Role of Software Testing:-


Testing is a process followed to make things better. It helps to take informed
decision by providing the relevant information based on the context.

Testers need to identify the critical issues with the system as soon as possible and
make sure that the information supplied is sufficient to reproduce the issue. We
need to supply the information on the presence of bugs in the system to the stake
holders. The information should help the stake holders to take informed decisions.

The following list helps

 Identify the different end users of the system and their interaction with the
same.

 Capture the important scenarios for each end user. It’s good to note that we
need to capture the story around the scenario and not just steps.

 Talk to different stake holders including the customers (incase if you have
access) on how the feature might be used & capture the scenarios.

 Plan towards uncovering the critical issues of the system as early as possible.

Testing Terminology:-
Failure:-
“Some failure to deliver the expected service that is observable to the user.”

“Deviation of the component or system from its expected delivery, service


or result.”

Fault: -“An imperfection that may lead to a failure.”


“A flaw in a component or system that can cause the component or system to fail
to perform its required function, e.g. an incorrect statement or data definition. A
defect, if encountered during execution, may cause a failure of the component or
system.”

Mr.G.K.Biranagaddi Page 3
Software Testing 2019

•E.g., missing/incorrect code that may result in a failure.

Bug: -“another name for a fault in code”.


“A flaw in a component or system that can cause the component or system to fail
to perform its required function, e.g. an incorrect statement or data definition. A
defect, if encountered during execution, may cause a failure of the component or
system.”

Error: - where the system state is incorrect but may not have been observed.
“A human action that produces an incorrect result.”

Defect: - “A flaw in a component or system that can cause the component or


system to fail to perform its required function, e.g. an incorrect statement or data
definition. A defect, if encountered during execution, may cause a failure of the
component or system.”

Objectives of Software Testing:-


Software Testing has different goals and objectives. The Major objectives of
Software testing are as follows:

 Finding defects which may get created by the programmer while developing
the software.

 Gaining confidence in and providing information about the level of quality.

 To prevent defects.

 To make sure that the end result meets the business and user requirements.

 To ensure that it satisfies the BRS that is Business Requirement


Specification and SRS that is System Requirement Specifications.

 To gain the confidence of the customers by providing them a quality


product.

Mr.G.K.Biranagaddi Page 4
Software Testing 2019

Software testing helps in finalizing the software application or product against


business and user requirements. It is very important to have good test coverage in
order to test the software application completely and make it sure that it’s
performing well and as per the specifications.

While determining the coverage the test cases should be designed well with
maximum possibilities of finding the errors or bugs. The test cases should be very
effective. This objective can be measured by the number of defects reported per
test cases. Higher the number of the defects reported the more effective are the test
cases.

Once the delivery is made to the end users or the customers they should be able
to operate it without any complaints. In order to make this happen the tester should
know as how the customers are going to use this product and accordingly they
should write down the test scenarios and design the test cases. This will help a lot
in fulfilling all the customer’s requirements.

Software testing makes sure that the testing is being done properly and hence
the system is ready for use. Good coverage means that the testing has been done to
cover the various areas like functionality of the application, compatibility of the
application with the OS, hardware and different types of browsers, performance
testing to test the performance of the application and load testing to make sure that
the system is reliable and should not crash or there should not be any blocking
issues. It also determines that the application can be deployed easily to the machine
and without any resistance. Hence the application is easy to install, learn and use.

Test Case:-
A test case is a document, which has a set of test data, preconditions, expected
results and post conditions, developed for a particular test scenario in order to
verify compliance against a specific requirement.

Test Case acts as the starting point for the test execution, and after applying
a set of input values; the application has a definitive outcome and leaves the
system at some end point or also known as execution post condition.

Typical Test Case Parameters:-

 Test Case ID
Mr.G.K.Biranagaddi Page 5
Software Testing 2019

 Test Scenario

 Test Case Description

 Test Steps

 Prerequisite

 Test Data

 Expected Result

 Test Parameters

 Actual Result

 Environment Information

 Comments

When to start Testing:-


An early start to testing reduces the cost and time to rework and produce error-free
software that is delivered to the client. However in Software Development Life
Cycle (SDLC), testing can be started from the Requirements Gathering phase and
continued till the deployment of the software. It also depends on the development
model that is being used. For example, in the Waterfall model,

Formal testing is conducted in the testing phase; but in the incremental


model, testing is performed at the end of every increment/iteration and the whole
application is tested at the end.

Testing is done in different forms at every phase of SDLC:

 During the requirement gathering phase, the analysis and verification


of requirements are also considered as testing.
 Reviewing the design in the design phase with the intent to improve
the design is also considered as testing.
 Testing performed by a developer on completion of the code is also
categorized as testing.

Mr.G.K.Biranagaddi Page 6
Software Testing 2019

When to stop Testing:-


It is difficult to determine when to stop testing, as testing is a never-ending process
and no one can claim that software is 100% tested. The following aspects are to be
considered for stopping the testing process:

 Testing Deadlines
 Completion of test case execution
 Completion of functional and code coverage to a certain point
 Bug rate falls below a certain level and no high-priority bugs are
identified
 Management decision.

Skills for Software Tester:-

If you want to be in quality assurance and testing profession you need to


understand what it takes to be successful. While talking to qa testing experts we
came across their views and suggestion regarding the essential skills that can help
you to be software testing professional.
In today’s world Software Testing industry is growing at a very rapid pace. The
number of people pursuing software testing as a career has grown immensely over
the years. The need to deliver quality products has become the foremost goal of
the software testing companies. So in order to achieve this, need of good software
testers is tremendous.
Hence the most important skills which a good software tester must
possess would be:
1. Excellent Communication Skills: To be able to communicate the
issue to the development team is the most important job of the
tester. Hence every tester must possess excellent communication
skill (Oral and Written both) in order to communicate the issues
faced by him/her in the most effective and efficient manner.
2. Quick Learner: This is last and most important quality that a
tester must have is the ability to adapt and learn quickly.

Mr.G.K.Biranagaddi Page 7
Software Testing 2019

3. Good thinking and analyzing skills: It is very important for a


software tester to have good analytical skill and thinking power.
Because it is easy for any tester to acquire a product knowledge
but strong analysis is very much important before testing a
product. So for being a good tester one should have Out of the
box thinking.
4. Think from customer’s perspective: Every product is
developing for customer so it is very much important to think
from their point of view and prepare your test data accordingly. If
one should not consider the scenarios from customer perspective
than there is a possibility to escape many bugs. So always put
yourself in customer shoe.
5. Domain Expert: A person should be domain expert to understand
the concept and basics of a software or application. He must have
good knowledge of the domain of the application, to test it
thoroughly. He must know what should be the intended behavior
and what can be the break points of the application.
6. A test to break attitude: A good software tester must have
strong desire for quality. This desire leads to great software
testing skills. It develops 'test to break' attitude. A test to break
attitude is required to hunt escaped defects.
7. A "glocal" approach: Software systems have become extremely
complex. Most of the time, the system designed involves multiple
stakeholders, and dealing with such systems is not always easy. A
tester should be able to deal effectively with business situations
marked by complexity and the number of interactions with third-
party systems. He should be able to identify how the system under
test interacts with other constituents of the system. He should also
be able to isolate the most minute units of the application under
test and do the validation, keeping in mind the behavior of the
system as a whole.

Mr.G.K.Biranagaddi Page 8
Software Testing 2019

8. Programming skills: Software testers should know the


programming basics. A tester who can’t program, at least basic
programs, can’t be as effective a software tester.

9. A sense of intellectual curiosity and creativity: A tester should


understand that being an intellectual and being intellectually
curious are not the same. A tester should arguably be the latter
one -- intellectually curious -- which is all about asking questions
and not about having answers. He should believe in the pursuit of
knowledge as a value in and of itself. He should love asking
questions and should not consider it a blow to his ego if he is
wrong about something. It is intellectual curiosity that motivates
and prompts a tester to identify interesting questions about the
software being tested. Thus, a tester should develop the skill to
see what everyone else hasn't seen, to think what no one else has
thought of and to do what no one else has dared.

Quality Control:- Quality Control is a part of quality management process


which concentrates on fulfilling the quality requirements. Quality Control is a set
of activities for ensuring quality in products.

 The activities focus on identifying defects in the actual products produced.

 Quality Control is used to verify the quality of the output.

 The goal of Quality Control is to identify the defects in the software


application after it is developed.

 QC is Reactive means it identifies the defects and also corrects the defects or
bugs also.

 It always involves executing the program or code.

Mr.G.K.Biranagaddi Page 9
Software Testing 2019

 Testing team is responsible for Quality control. Quality Control is product


oriented.

 Quality Control basically aim to detection of defects to improve the quality.

 It identifies defects to be fixed.

 It is a line function.

 It is done only after Quality Assurance activity is completed.

 Quality Control Means Action has taken on the process by execute them.

 Validation/Software Testing is an example of Quality Control.

Quality Assurance:- Quality Assurance is a part of quality management


process which concentrate on providing confidence that quality requirements will
be fulfilled. Quality Assurance is a set of activities for ensuring quality in
the processes by which products are developed.

 Quality Assurance is the process of managing for quality;

 The goal of Quality Assurance is to prevent introducing defects in the


software application which help to improve the development and testing
processes.

 QA is Pro-active means it identifies weaknesses in the processes.

 It does not involve executing the program or code.

 All peoples who are involved in the developing software application as


responsible for the quality assurance.

 Quality Assurance is process oriented.

 Quality Assurance basically aim to prevention of defects to improve the


quality.

Mr.G.K.Biranagaddi Page 10
Software Testing 2019

 It identifies weakness in processes to improve them.

 It is a staff function.

 It is done before Quality Control.

 Quality Assurance means Planning done for doing a process.

 Verification is an example of Quality Assurance.

Verification and Validation:-

Verification:- Verification is the process of evaluating products of a


development phase to find out whether they meet the specified requirements. The
objective of Verification is to make sure that the product being develop is as per
the requirements and design specifications.

 Following activities are involved in Verification: Reviews, Meetings and


Inspections.

 Verification is carried out by QA team to check whether implementation


software is as per specification document or not.

 Execution of code is not comes under Verification.

 Verification process explains whether the outputs are according to inputs or


not.

 Verification is carried out before the Validation.

 Cost of errors caught in Verification is less than errors found in Validation.

 It is basically manually checking the of documents and files like requirement


specifications etc.

Mr.G.K.Biranagaddi Page 11
Software Testing 2019

Validation:- Validation is the process of evaluating software at the end of the


development process to determine whether software meets the customer
expectations and requirements. The objective of Validation is to make sure that the
product actually meet up the user’s requirements, and check whether the
specifications were correct in the first place.

 Following activities are involved in Validation: Testing like black box


testing, white box testing, gray box testing etc.

 Validation is carried out by testing team.

 Execution of code is comes under Validation.

 Validation process describes whether the software is accepted by the user or


not.

 Validation activity is carried out just after the Verification.

 Cost of errors caught in Validation is more than errors found in Verification.

 It is basically manually checking the of documents and files like requirement


specifications etc.

V Model: - V-model means Verification and Validation model. Just like


the waterfall model, the V-Shaped life cycle is a sequential path of execution of
processes. Each phase must be completed before the next phase begins. Testing of
the product is planned in parallel with a corresponding phase of development.

The various phases of the V-model are as follows:

Requirements like BRS and SRS begin the life cycle model just like the waterfall
model. But, in this model before development is started, a system test plan is
created. The test plan focuses on meeting the functionality specified in the
requirements gathering.

Mr.G.K.Biranagaddi Page 12
Software Testing 2019

Figure. V-Model

The high-level design (HLD) phase focuses on system architecture and design. It
provides overview of solution, platform, system, product and service/process. An
integration plan is created in this phase as well in order to test the pieces of the
software systems ability to work together.

The low-level design (LLD) phase is where the actual software components are
designed. It defines the actual logic for each and every component of the system.
Class diagram with all the methods and relation between classes comes under
LLD. Component tests are created in this phase as well.

Mr.G.K.Biranagaddi Page 13
Software Testing 2019

The implementation phase is, again, where all coding takes place. Once coding is
complete, the path of execution continues up the right side of the V where the test
plans developed earlier are now put to use.

Coding: This is at the bottom of the V-Shape model. Module design is converted
into code by developers.

Advantages of V-model:

 Simple and easy to use.


 Testing activities like planning, test designing happens well before coding.
This saves a lot of time. Hence higher chance of success over the waterfall
model.
 Proactive defect tracking – that is defects are found at early stage.
 Avoids the downward flow of the defects.
 Works well for small projects where requirements are easily understood.
Disadvantages of V-model:

Very rigid and least flexible.


 Software is developed during the implementation phase, so no early prototypes
of the software are produced.
 If any changes happen in midway, then the test documents along with
requirement documents has to be updated.
When to use the V-model:

 The V-shaped model should be used for small to medium sized projects where
requirements are clearly defined and fixed.
 The V-Shaped model should be chosen when ample technical resources are
available with needed technical expertise.
High confidence of customer is required for choosing the V-Shaped model
approach. Since, no prototypes are produced, there is a very high risk involved in
meeting customer expectations.

Mr.G.K.Biranagaddi Page 14
Software Testing 2019

Mr.G.K.Biranagaddi Page 15

You might also like