You are on page 1of 46

Software Quality

Engineering & Testing


Basics
Contents

• Part 1: Classic SDLC Models ..

• Part 2: Software Testing ..

• Part 3: Software Quality Engineering ..

Software Quality Engineering & Testing Basics


Part 1

Classic SDLC Models


Part 1 : Classic SDLC
Models

The classic SDLC Models:

4. Big Bang
5. Code and fix
6. Waterfall
7. Spiral

Software Quality Engineering & Testing Basics


Part 1 : Classic SDLC
Models
Big-Bang Model :

• The Approach
People+Money+Energy=Perfect
Software or Nothing!
• Advantages
Simple, needs less planning, less
formal development process
• Disadvantages
No formal testing activities, can’t
monitor, high risk

Software Quality Engineering & Testing Basics


Part 1 : Classic SDLC
Models
Code and Fix Model :

• The Approach
Informal specification→ loop of
code and fix till enough-is-enough
decision→Release
• Advantages
Little planning and documentation
work.
• Disadvantages
Hard to manage the testing

Software Quality Engineering & Testing Basics


Part 1 : Classic SDLC
Models
Waterfall Model :

• The Approach
Discrete phases, a review after
each phase will decide to move
next or stay at this phase till it’s
ready.
•Advantages
Easy to test (clear requirements)
• Disadvantages
High bugs fixing cost (bugs
creep), customer is far from this
till the end

Software Quality Engineering & Testing Basics


Part 1 : Classic SDLC
Models
Spiral Model :

• The Approach
Round1 (Waterfall → Prototype)
Evaluate Round1
Round2 (Waterfall → Prototype)
Loop
•Advantages
Easy to test, the customer is
tightly
involved
• Disadvantages
Need risk-assessments expertise
Software Quality Engineering & Testing Basics
Part 2

Software Testing
Part 2 : Software Testing

What is software testing?

A quality control activity aimed at


evaluating a software item against the
given system requirements.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What is software testing?

A quality control C
activity aimed at
Q
evaluating aasoftware item against the
is requirements.
given system
g
n
ti y
s
Te tivit
ac

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What is the V&V?

Verification: Confirming that something


(software) meets its specification.

Validation: Confirming that it meets


the user’s requirements.

The two major V&V activities are


reviews, and testing. *

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What is the V&V?

Verification: Confirming that something


V
(software) meets its specification
&
f V
o
art
a
Validation:p Confirming that it meets
s
the iuser’s requirements.
n g
s ti Theietwo
s major V&V activities are
it
Te tivreviews, and testing.
a c

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What should the tester do?

• Find the bugs


• Find them early
• Make sure that they have been
fixed

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What should not the tester do?

• Fix the bugs! *


• Trust the others!
• Test with no requirements!
• Not to report the obvious bugs!
• Test with good faith!

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What are the testing types?

1. Static Testing

Testing a software that is not


running.

2. Dynamic Testing

Test running software.

Unit (white box), Functional,


Integration, System, Regression,
Volume, Load, Stress Integration,
Usability, Localization, Live
(Production), Compatibility, Smoke,
Ad-hoc, User Acceptance

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

2. Dynamic Testing (Cont’d)

• Unit Test: A test of one component of the system.

• White Box Test: Testing software with complete knowledge of its


internal code and logic.
• Black Box Test: Testing software based on output only without
any knowledge of its internal code or logic.
• Gray Box Test: Testing software with some knowledge of its
internal code or logic.
• Functional Test: Testing functional requirements of software,
such as menus and key commands.
• System Test: Overall testing in the user environment.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

2. Dynamic Testing (Cont’d)


• Acceptance Test: The test performed by end users to approve the
system.
• Alpha Test: The first testing of a product in the production
environment before going live.
• Beta Test: Testing done by end users.

• Volume testing: testing a software application for a certain data


volume.*
• Load testing: creating demand on a system or device and
measuring its response.
• Stress testing: determine the stability of a given system or entity.

• Compatibility testing: measures how well the system operates on


Software
different operating Quality Engineering
environment. * & Testing Basics
Part 2 : Software Testing

2. Dynamic Testing (Cont’d)

• Recovery Test: Testing a system's ability to recover from a


hardware or software failure.
• Accessibility testing: measure how well the system interface
serve users with disabilities.*
• Negative Test: Using invalid input to test a program's error
handling.
• Regression testing: Testing to make sure that the fix is working
as expected.
• Ad Hoc Test: Informal testing without a test case.

• Automated Test: Using software to test software.*

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What is the ‘bug’ ?


Things the software does that while it
is not supposed to do, OR something
the software doesn't while it is
supposed to.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What are the difference


between the bug severity and
priority?
Priority means how urgently bug is
needed to fix.  

Severity means how badly it harms


the system.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

How to report a bug?

Report the pattern not an


example.

Don’t describe what's wrong,


only!

Be direct to the point (don’t tell a


story!).

Report the bug, but not how to


solve it.

Don’t mix between priority and


severity.
Software Quality Engineering & Testing Basics
Part 2 : Software Testing

How to report a bug? (Cont’d)

• Don’t use: CAPS, red letters,


red circles, ‘!’ , ‘?’.
• Don’t use your personal
judgment.
• Write with the fixer language, not
with yours.
• Minimize the options.

• Don’t use the word ‘Sometimes’.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

How to report a bug? (Cont’d)

Don’t group the bugs.

Don’t update the bug


description.

Don’t update the bug severity.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

When not to fix a bug?

It’s too risky to fix it.

It’s not worth fixing.

There is no enough time.

Its not really a bug.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

What are the testing activities?

1. Test Plan.

2. Test Analysis.
3. Test Design.
4. Test Cases Development.
5. Test Cases Execution.
6. Test Reporting.
7. Bugs Reporting.
8. Releasing reporting.

9. User Acceptance Testing.

Software Quality Engineering & Testing Basics


Part 2 : Software Testing

When to stop testing?

1. Deadline has be been reached.

2. Test cases completed with


passed percentage.

3. End of test budget.

Software Quality Engineering & Testing Basics


Part 3

Software Quality
Part 3 : Software Quality

What is 'Software Quality


Assurance’?
Software QA involves the entire
software development PROCESS
- monitoring and improving the
process, making sure that any
agreed-upon standards and
procedures are followed, and
ensuring that problems are
found and dealt with. It is
oriented to 'prevention'.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What is the ‘Quality Software’?

Quality software is fairly bug-


free, delivered on time and
within budget, meets
requirements and/or
expectations, and is
maintainable. However, quality
is obviously a subjective term.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality
What are the main quality
attributes?
•Availability: Is it available when and where I need to
use it?
•Efficiency: How few system resources does it
consume?
•Flexibility: How easy is it to add new features?

•Installability: How easy is it to correctly install the


product.
•Interoperability: How easily does it interconnect with
other systems?
•Maintainability: How easy it is to correct defects or
make changes?
Software Quality Engineering & Testing Basics
Part 3 : Software Quality
What are the main quality
attributes?
•Reliability: How long does it run before causing a
failure?
•Reusability: How easily can we use components in
other systems?
•Testability: Can I verify that it was implemented
correctly?
•Usability: How easy is it for people to learn or to use?

•Performance: the response time, utilization, and


throughput behavior of the system.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality
What are the main quality
attributes?
•Security: system’s ability to resist unauthorized
attempts at usage or behavior modification, while still
providing service to authorized users.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What are the types of software


‘reviews’?
1. Peer Review

More formal
2. Walkthrough

3. Inspection

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What is the characteristics of ‘Peer


reviews’?
Informal.

Audience: Owner(author) and peer(s)


of similar expertise (no managers).

It require guidelines and checklist.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What is the characteristics of the


‘walkthrough’?
•More formal.

•Audience: 3-5 , at least 1 senior, the


owner act as a reader and recorder.
•The owner should send a copy of things
that need review prior to the meeting.
•Reader should write a report with the
feedback and how to address it.
•2nd meeting can be conducted to follow
up.
Software Quality Engineering & Testing Basics
Part 3 : Software Quality

What is the characteristics of the


‘Inspection’?
•The most formal.

•Audience: typically 3-8 people including


a moderator, reader, and a recorder to
take notes.
•The reader should not be the owner.

•The owner should send a copy of things


that need review prior to the meeting.
•Each Inspectors should review the code for
a different perspective.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What is the characteristics of the


‘Inspection’? (Cont’d)
•After the inspection meeting the moderator
call for another meeting to discuss the
feedback and how the owner will address
them.
•Require training.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

Quality standards and auditing


organizations
ISO (International Organization for
Standardization).

CMMI (Capability Maturity Model


Integration).

IEEE (Institute of Electrical and Electronics


Engineers).

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

ISO 9001:2000
ISO 9001 is a series of documents that define
requirements for the Quality Management
System Standard. ISO 9001 is one of the
documents in this set; it contains the actual
requirements an organization must be in
compliance with to become ISO 9001
Registered.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

Why do companies want ISO 9001:2000

Many organizations decide to Implement ISO


9001 and obtain registration because it
assures customers that the company has a
good Quality Management System (QMS) in
place. An organization with an effective QMS
will typically meet customer expectations
better than an organization that does not
have an effective QMS. Many organizations
require their suppliers to have ISO 9001
Registration.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What is CMMI ?

Capability Maturity Model® Integration (CMMI)


is a process improvement approach that
provides organizations with the essential
elements of effective processes. It can be
used to guide process improvement across a
project, a division, or an entire organization.
CMMI provide guidance for quality processes,
and provide a point of reference for appraising
current processes.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What are the 5 levels of CMMI ? (Cont’d)


Level One – Initial

Company has no standard process for


software development. Nor does it have a
project-tracking system that enables
developers to predict costs or finish dates with
any accuracy.

Level Two - Managed

Company has installed basic software


management processes and controls. But
there is no consistency or coordination among
different groups.

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What are the 5 levels of CMMI ? (Cont’d)


Level Three – Defined

Company has pulled together a standard set


of processes and controls for the entire
organization so that developers can move
between projects more easily and customers
can begin to get consistency from different
groups.

Level Four – Quantitively Managed


In addition to implementing standard
processes, company has installed systems to
measure the quality of those processes across
all projects.  

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What are the 5 levels of CMMI ? (Cont’d)


•Level Five - Optimized
Company has accomplished all of the above
and can now begin to see patterns in
performance over time, so it can tweak its
processes in order to improve productivity
and reduce defects in software development
across the entire organization.  

Software Quality Engineering & Testing Basics


Part 3 : Software Quality

What is the IEEE ?


The Institute of Electrical and Electronics
Engineers" (IEEE) is a non-profit organization
that develops, defines, and reviews
electronics and computer science standards.
 

Software Quality Engineering & Testing Basics

You might also like