Professional Documents
Culture Documents
Lecture #1
The Basics of Software Testing
There are various factors which affect the identification of test conditions:
Levels and depth of testing
– The complexity of the product
– Product and project risks
– Software development life cycle involved.
– Test management
– Skills and knowledge of the team.
– Availability of the stakeholders.
Lecture # 2
The Basics of Software Testing
V-Model
V-Model also referred to as the Verification and Validation Model.
In this, each phase of SDLC must complete before the next phase starts.
It follows a sequential design process same as the waterfall model.
Testing of the device is planned in parallel with a corresponding stage of development.
Verification: It involves a static analysis method (review) done without executing code. It is the
process of evaluation of the product development process to find whether specified requirements
meet.
Validation: It involves dynamic analysis method (functional, non-functional), testing is done by
executing code. Validation is the process to classify the software after the completion of the
development process to determine whether the software meets the customer expectations and
requirements.
Phases of V-Model
1. Business requirement analysis: This is the first step where product requirements understood
from the customer's side. This phase contains detailed communication to understand
customer's expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret the business of the
proposed system by studying the user requirements document.
3. Architecture Design: The baseline in selecting the architecture is that it should understand
all which typically consists of the list of modules, brief functionality of each module, their
interface relationships, dependencies, database tables, architecture diagrams, technology
detail, etc. The integration testing model is carried out in a particular phase.
4. Module Design: In the module design phase, the system breaks down into small modules.
The detailed design of the modules is specified, which is known as Low-Level Design
5. Coding Phase: After designing, the coding phase is started. Based on the requirements, a
suitable programming language is decided. There are some guidelines and standards for
coding. Before checking in the repository, the final build is optimized for better performance,
and the code goes through many code reviews to check the performance.
Validation Phase of V-model:
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module
design phase. These UTPs are executed to eliminate errors at code level or unit level. A unit
is the smallest entity which can independently exist, e.g., a program module. Unit testing
verifies that the smallest entity can function correctly when isolated from the rest of the
codes/ units.
2. Integration Testing: Integration Test Plans are developed during the Architectural Design
Phase. These tests verify that groups created and tested independently can coexist and
communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit
and Integration Test Plans, System Tests Plans are composed by the client?s business team.
System Test ensures that expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business requirement analysis part.
It includes testing the software product in user atmosphere. Acceptance tests reveal the
compatibility problems with the different systems, which is available within the user
atmosphere. It conjointly discovers the non-functional problems like load and performance
defects within the real user atmosphere.
Lecture #3
Psychology of Software Testing
Software development, including software testing, involves human beings.
Therefore, human psychology has important effect on software testing.
In software testing, psychology plays an extremely important role.
It is one of those factors that stay behind the scene, but has a great impact on the end result.
Categorized into three sections, the psychology of testing enables smooth testing.
It is mainly dependent on the mindset of the developers and testers, as well as the quality of
communication between them.
Moreover, the psychology of testing improves mutual understanding among team members
and helps them work towards a common goal.
Lecture # 4
Code of Ethics of Software Testing
In software testing there are numerous rules and regulations that ought to be followed by
software engineers to maintain the credibility of the software as well as to make it suitable
according the universal standards.
Moreover, there are various code of ethics that are required to be followed by the testers to
ensure that the information accessed by them is not put to inappropriate use and is managed
with confidentiality and secrecy.
In short, following these code of ethics is vital for the testers to avoid future conflicts and
information breaches. So, to help you understand the various code of ethics followed by
software testers during the process of testing, here is a detailed discussion about these code of
ethics.
As defined by Merriam Webster dictionary, Code of ethics is “a set of rules about good and
bad behavior” or “a systematic statement of law” that ought to be followed and considered by
individuals performing important tasks or by those dealing with confidential information.
Likewise, in software testing also, code of ethics specifies various rules and regulations of
conduct that the members of the team must adhere to.
It sets forth the values, principles, and standards that guide the testers to perform their tasks
appropriately and helps them use the information they have in an ethical and appropriate
manner.
Code of ethics, in short defines the acceptance of responsibility by the software testers, while
keeping the best interest of their clients as priority.
Types of Code of Ethics in Testing:
Public: During the process of software development and testing, the public interest and
benefit should be considered before corporate and personal gain. They should consistently act
in the interest of the public.
Client & Employer: Apart from public interest, the testers should consider the interest of
their client and employer while conducting tests on the software. They should act according
to the requirements of their clients and should fulfill all their needs.
Product: The most important factor that needs consideration during the process of software
testing is the product itself. The testers should perform their tasks while ensuring that the
deliverable is of best quality and has exceptional effectiveness. Also, make sure that all
deliverables on the product are in compliance with the stated standards.
Judgement: The testes should maintain integrity and independence while making judgments
regarding the process of testing or any other aspects related to it.
Management: Here, the team managers and leads should take the responsibility and ethical
steps to manage the process of software testing, development, and maintenance. This will
help them avoid any confusion as well as allow them to test each component of the software
accurately.
Profession: The team of testers should follow the set f values, principles, and standards and
advance the integrity of their profession.
Lecture # 5
Types of Software Testing
What is Software Testing?
Software testing is a process, to evaluate the functionality of a software application with an
intent to find whether the developed software met the specified requirements or not and to
identify the defects to ensure that the product is defect-free in order to produce the quality
product.
Verification:
"Are we building the product right"
The software should conform to its specification
Validation:
"Are we building the right product"
The software should do what the user requires correctly.
Types of Testing
1. Unit Testing
It focuses on smallest unit of software design. In this we test an individual unit or group of
inter related units. It is often done by programmer by using sample input and observing its
corresponding outputs.
Example:
a) In a program we are checking if loop, method or function is working fine.
b) Misunderstood or incorrect, arithmetic precedence.
c) Incorrect initialization
2. Integration Testing
The objective is to take unit tested components and build a program structure that has been
dictated by design. Integration testing is testing in which a group of components are
combined to produce output.
Example: (i) Top down (ii) Bottom up (iii) Sandwich (iv) Big-Bang
3. Regression Testing
Every time new module is added leads to changes in program. This type of testing make sure
that whole component works properly even after adding components to the complete
program.
Example
In school record suppose we have module staff, students and finance combining these
modules and checking if on integration these module works fine is regression testing
4. Smoke Testing
This test is done to make sure that software under testing is ready or stable for further testing
It is called smoke test as testing initial pass is done to check if it did not catch the fire or
smoked in the initial switch on.
Example:
If project has 2 modules so before going to module make sure that module 1 works properly
5. Alpha Testing
This is a type of validation testing. It is a type of acceptance testing which is done before the
product is released to customers. It is typically done by QA people.
Example:
When software testing is performed internally within the organization.
6. Beta Testing
The beta test is conducted at one or more customer sites by the end-user of the software. This
version is released for the limited number of users for testing in real time environment
Example:
When software testing is performed for the limited number of people
7. System Testing
In this software is tested such that it works fine for different operating system.It is covered
under the black box testing technique. In this we just focus on required input and output
without focusing on internal working.
In this we have security testing, recovery testing , stress testing and performance testing.
Example: This include functional as well as non-functional testing
8. Stress Testing
In this we gives unfavorable conditions to the system and check how they perform in those
condition.
Example:
(a) Test cases that require maximum memory or other resources are executed (b) Test cases that
may cause thrashing in a virtual operating system (c) Test cases that may cause excessive disk
requirement
9. Performance Testing
It is designed to test the run-time performance of software within the context of an integrated
system. It is used to test speed and effectiveness of program.
Example:
Checking number of processor cycles.
Testing priorities
Only exhaustive testing can show a program is
free from defects. However, exhaustive testing
is impossible
Tests should exercise a system's capabilities
rather than its components
Testing old capabilities is more important than
testing new capabilities
Testing typical situations is more important
Consider the following example code segment which finds the greater of two integer values x
and y. This code segment has a simple programming error.
If (x>y) max = x;
else max = x;
For the above code segment, the test suite, {(x=3,y=2);(x=2,y=3)} can detect the error.
whereas a larger test suite {(x=3,y=2);(x=4,y=3);(x=5,y=1)} does not detect the error.
This implies that the test suite should be carefully designed than picked randomly. Therefore,
systematic approaches should be followed to design an optimal test suite. In an optimal test
suite, each test case is designed to detect different errors.
Lecture # 6
Plan of Software Testing
What is Software Test Plan?
A test plan is a document that sets out the scope, approach, and schedule of intended testing
activities.
The test plan may also list the resources the software tester needs to function effectively.
3 Types of Test Plan
1. Master Test Plan
2. Phase Test Plan
3. Testing Type Specific Test Plans
Objectives: It consists of information about modules, features, test data etc., which indicate the
aim of the application means the application behavior, goal, etc.
Scope: It contains information that needs to be tested with respective of an application. The
Scope can be further divided into two parts:
In scope
Out scope
Out scope: These are the modules, which need not be tested rigorously.
For example, Suppose we have a Gmail application to test, where features to be tested such
as Compose mail, Sent Items, Inbox, Drafts and the features which not be tested such as Help,
and so on which means that in the planning stage, we will decide that which functionality has to
be checked or not based on the time limit given in the product.
Test methodology:
It contains information about performing a different kind of testing like Functional testing,
Integration testing, and System testing, etc. on the application. In this, we will decide what
type of testing; we will perform on the various features based on the application requirement.
And here, we should also define that what kind of testing we will use in the testing
methodologies so that everyone, like the management, the development team, and the testing
team can understand easily because the testing terms are not standard.
For example, for standalone application such as Adobe Photoshop, we will perform the
following types of testing:
Approach
This attribute is used to describe the flow of the application while performing testing and for
the future reference.
We can understand the flow of the application with the help of below aspects:
o By writing the high-level scenarios
o By writing the flow graph
Assumption
It contains information about a problem or issue which maybe occurred during the testing
process and when we are writing the test plans, the assured assumptions would be made like
resources and technologies, etc.
Risk
These are the challenges which we need to face to test the application in the current release and if
the assumptions will fail then the risks are involved.
For example, the effect for an application, release date becomes postponed.
Defect tracking
It is generally done with the help of tools because we cannot track the status of each bug
manually. And we also comment about how we communicate the bugs which are identified
during the testing process and send it back to the development team and how the development
team will reply. Here we also mention the priority of the bugs such as high, medium, and low.
Test Environments
These are the environments where we will test the application, and here we have two types of
environments, which are of software and hardware configuration.
The software configuration means the details about different Operating Systems such
as Windows, Linux, UNIX, and Mac and various Browsers like Google Chrome, Firefox, Opera,
Internet Explorer, and so on.
And the hardware configuration means the information about different sizes of RAM, ROM, and
the Processors.
Entry Criteria
o The entry criteria contain the following conditions:
o White box testing should be finished.
o Understand and analyze the requirement and prepare the test documents or when the test
documents are ready.
o Test data should be ready.
o Build or the application must be prepared
o Modules or features need to be assigned to the different test engineers.
o The necessary resource must be ready.
Exit Criteria
o The exit criteria contain the following conditions:
o When all the test cases are executed.
o Most of the test cases must be passed.
o Depends on severity of the bugs which means that there must not be any blocker or major
bug, whereas some minor bugs exist.
Test Automation
In this, we will decide the following:
Which feature has to be automated and not to be automated?
Which test automation tool we are going to use on which automation framework?
We automate the test case only after the first release.
Here the question arises that on what basis we will decide which features have to be
tested?
Effort estimation
In this, we will plan the effort need to be applied by every team member.
Test Deliverable
These are the documents which are the output from the testing team, which we handed over to
the customer along with the product. It includes the following:
Test plan
Test Cases
Test Scripts
RTM(Requirement Traceability Matrix)
Defect Report
Test Execution Report
Graphs and metrics
Release Notes
Template
This part contains all the templates for the documents that will be used in the product, and all the
test engineers will use only these templates in the project to maintain the consistency of the
product. Here, we have different types of the template which are used during the entire testing
process such as:
Test case template
Test case review template
RTM (Requirements Traceability Matrix) Template
Bug Report Template
Test execution Report
Lecture #7
Myths of Software Testing
Lecture # 8
Monitoring and Controlling of Software Testing
What is Test Monitoring?
Test Monitoring in test execution is a process in which the testing activities and testing efforts
are evaluated in order to track current progress of testing activity, finding and tracking test
metrics, estimating the future actions based on the test metrics and providing feedback to the
concerned team as well as stakeholders about current testing process.
Why do we monitor?
This small example shows you why we need to monitor and control test activity. After
finishing the Test Estimation and test planning, the management board agreed with your plan
and the milestones are set as per the following figure.
But after 4 weeks, things are not going as per plan. The task of “Making Test specification”
is delayed by 4 working days. It has a cascading effect and all succeeding tasks are delayed.
You missed the milestone as well the overall project deadline.
As a consequence, your project fails and your company loses the customer trust. You must
take full responsibility for the project’s failure.
What do we monitor?
Monitoring will allow you to make comparisons between your original plan and your progress so
far. You will be able to implement changes, where necessary, to complete the project
successfully.
In your project, as the Test Manager, you should monitor the key parameters as below.
1. Cost
Costs are an important aspect of project monitoring and control. Having accurate project
estimates and a robust project budget is necessary to deliver project within the decided
budget.
Suppose, your boss has agreed to fund the project with $100,000. You must keep an eye
on the actual costs while the project is being implemented.
2. Schedules
How can you work without a schedule? It can be compared to driving your car but
without any idea of how long it takes you get to the destination. The schedule tells you
When should each activity be done?
What has already been completed?
The sequence in which things need to be finished.
3. Resources
Resources are all things required to carry out the project tasks. They can be people or
equipment required to complete the project activity. Lack of resources can affect the
project progress.
The truth is, everything may not happen as planned, employees will leave, the project
budget may be cut, or the schedule will get pushed. Monitoring resources will help you to
early detect any resource crunch and find a solution to deal with it.
4.Quality
Quality monitoring involves monitoring the results of specific work products (like test
case suite, test execution log), to evaluate whether its meets the defined quality standards.
In case results do not meet quality standards, you need to identify potential resolution.
Example: Suppose that you monitored and controlled the project progress very well.
Finally, you delivered the product at the deadline. The project seems to be successful.
But after delivering 2 weeks, you got this feedback from customer
How to monitor?
As your project comes to life, keep these questions in mind:
Are you on schedule? If not, how far behind are you, and how can you catch up?
Are you over budget?
Are you still working toward the same project goal?
Are you running low on resources?
Are there warning signs of impending problems?
Is there pressure from management to complete the project sooner?