46
Software Quality Engineering & Testing Basics Belal Raslan Date: 25-11-2007

Software Quality Engineering & Testing Basics - Belal Raslan

Embed Size (px)

Citation preview

Page 1: Software Quality Engineering & Testing Basics - Belal Raslan

Software Quality Engineering & Testing Basics

Belal RaslanDate: 25-11-2007

Page 2: Software Quality Engineering & Testing Basics - Belal Raslan

Software Quality Engineering & Testing Basics

Contents

• Part 1: Classic SDLC Models ..

• Part 2: Software Testing ..

• Part 3: Software Quality Engineering ..

Page 3: Software Quality Engineering & Testing Basics - Belal Raslan

Part 1

Classic SDLC Models

Page 4: Software Quality Engineering & Testing Basics - Belal Raslan

The classic SDLC Models:

1. Big Bang2. Code and fix3. Waterfall4. Spiral

Software Quality Engineering & Testing Basics

Part 1 : Classic SDLC Models

Page 5: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 6: Software Quality Engineering & Testing Basics - Belal Raslan

Part 1 : Classic SDLC Models

Code and Fix Model :

• The Approach

Informal specification loop of code and fix till enough-is-enough decisionRelease

• Advantages

Little planning and documentation

work.

• Disadvantages

Hard to manage the testing

Software Quality Engineering & Testing Basics

Page 7: Software Quality Engineering & Testing Basics - Belal Raslan

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.

•AdvantagesEasy to test (clear requirements)

• Disadvantages

High bugs fixing cost (bugs creep), customer is far from this till the end

Software Quality Engineering & Testing Basics

Page 8: Software Quality Engineering & Testing Basics - Belal Raslan

Part 1 : Classic SDLC Models

Spiral Model :

• The Approach

Round1 (Waterfall Prototype)Evaluate Round1Round2 (Waterfall Prototype)Loop

•AdvantagesEasy to test, the customer is tightlyinvolved

• Disadvantages

Need risk-assessments expertise

Software Quality Engineering & Testing Basics

Page 9: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2

Software Testing

Page 10: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 11: Software Quality Engineering & Testing Basics - Belal Raslan

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

Testing is

a QC

activity

Page 12: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 13: Software Quality Engineering & Testing Basics - Belal Raslan

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

Testing is

a part of V

&V

activitie

s

Page 14: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

What should the tester do?

1. Find the bugs

2. Find them early

3. Make sure that they have been fixed

Software Quality Engineering & Testing Basics

Page 15: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

What should not the tester do?

1. Fix the bugs! *

2. Trust the others!

3. Test with no requirements!

4. Not to report the obvious bugs!

5. Test with good faith!

Software Quality Engineering & Testing Basics

Page 16: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 17: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 18: Software Quality Engineering & Testing Basics - Belal Raslan

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 different operating environment. *

Software Quality Engineering & Testing Basics

Page 19: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 20: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 21: Software Quality Engineering & Testing Basics - Belal Raslan

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

Page 22: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

How to report a bug?

Software Quality Engineering & Testing Basics

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.

Page 23: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

How to report a bug? (Cont’d)

Software Quality Engineering & Testing Basics

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’.

Page 24: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

How to report a bug? (Cont’d)

Software Quality Engineering & Testing Basics

Don’t group the bugs.

Don’t update the bug description.

Don’t update the bug severity.

Page 25: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

When not to fix a bug?

Software Quality Engineering & Testing Basics

It’s too risky to fix it.

It’s not worth fixing.

There is no enough time.

Its not really a bug.

Page 26: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

What are the testing activities?

Software Quality Engineering & Testing Basics

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.

Page 27: Software Quality Engineering & Testing Basics - Belal Raslan

Part 2 : Software Testing

When to stop testing?

Software Quality Engineering & Testing Basics

1. Deadline has be been reached.

2. Test cases completed with passed percentage.

3. End of test budget.

Page 28: Software Quality Engineering & Testing Basics - Belal Raslan

Part 3

Software Quality

Page 29: Software Quality Engineering & Testing Basics - Belal Raslan

Part 3 : Software Quality

What is 'Software Quality Assurance’?

Software Quality Engineering & Testing Basics

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'.

Page 30: Software Quality Engineering & Testing Basics - Belal Raslan

What is the ‘Quality Software’?

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 31: Software Quality Engineering & Testing Basics - Belal Raslan

What are the main quality attributes?

Software Quality Engineering & Testing Basics

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?

Portability: Can it be made to work on other platforms?

Part 3 : Software Quality

Page 32: Software Quality Engineering & Testing Basics - Belal Raslan

What are the main quality attributes?

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 33: Software Quality Engineering & Testing Basics - Belal Raslan

What are the main quality attributes?

Software Quality Engineering & Testing Basics

Security: system’s ability to resist unauthorized attempts at usage or behavior modification, while still providing service to authorized users.

Part 3 : Software Quality

Page 34: Software Quality Engineering & Testing Basics - Belal Raslan

What are the types of software ‘reviews’?

Software Quality Engineering & Testing Basics

1. Peer Review

2. Walkthrough

3. Inspection

More

form

al

Part 3 : Software Quality

Page 35: Software Quality Engineering & Testing Basics - Belal Raslan

What is the characteristics of ‘Peer reviews’?

Software Quality Engineering & Testing Basics

Informal.

Audience: Owner(author) and peer(s) of similar expertise (no managers).

It require guidelines and checklist.

Part 3 : Software Quality

Page 36: Software Quality Engineering & Testing Basics - Belal Raslan

What is the characteristics of the ‘walkthrough’?

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 37: Software Quality Engineering & Testing Basics - Belal Raslan

What is the characteristics of the ‘Inspection’?

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 38: Software Quality Engineering & Testing Basics - Belal Raslan

What is the characteristics of the ‘Inspection’? (Cont’d)

Software Quality Engineering & Testing Basics

After the inspection meeting the moderator call for another meeting to discuss the feedback and how the owner will address them.

Require training.

Part 3 : Software Quality

Page 39: Software Quality Engineering & Testing Basics - Belal Raslan

Quality standards and auditing organizations

Software Quality Engineering & Testing Basics

ISO (International Organization for Standardization).

CMMI (Capability Maturity Model Integration).

IEEE (Institute of Electrical and Electronics Engineers).

Part 3 : Software Quality

Page 40: Software Quality Engineering & Testing Basics - Belal Raslan

ISO 9001:2000

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 41: Software Quality Engineering & Testing Basics - Belal Raslan

Why do companies want ISO 9001:2000 ?

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 42: Software Quality Engineering & Testing Basics - Belal Raslan

What is CMMI ?

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 43: Software Quality Engineering & Testing Basics - Belal Raslan

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

Software Quality Engineering & Testing Basics

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.

Part 3 : Software Quality

Page 44: Software Quality Engineering & Testing Basics - Belal Raslan

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

Software Quality Engineering & Testing Basics

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.  

Part 3 : Software Quality

Page 45: Software Quality Engineering & Testing Basics - Belal Raslan

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

Software Quality Engineering & Testing Basics

Level Five - OptimizedCompany 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.  

Part 3 : Software Quality

Page 46: Software Quality Engineering & Testing Basics - Belal Raslan

What is the IEEE ?

Software Quality Engineering & Testing Basics

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

Part 3 : Software Quality