Quality Assurance. Pragmatic Programmer Tip Think about Your Work

Similar documents
FSW QA Testing Levels Definitions

Testing Introduction. IEEE Definitions

ISTQB Certified Tester. Foundation Level. Sample Exam 1

Improved Software Testing Using McCabe IQ Coverage Analysis

Smarter Balanced Assessment Consortium. Recommendation

<Insert Picture Here> When to Automate Your Testing (and When Not To)

Software Testing. Knowledge Base. Rajat Kumar Bal. Introduction

Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur

Introduction to Automated Testing

Testing Best Practices

Software testing. Objectives


Oracle Insurance Policy Administration System Quality Assurance Testing Methodology. An Oracle White Paper August 2008

ASSURING SOFTWARE QUALITY USING VISUAL STUDIO 2010

Quality Assurance - Karthik

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

Automating Security Testing. Mark Fallon Senior Release Manager Oracle

A Guide To Evaluating a Bug Tracking System

Software Testing Interview Questions

Agile Test Automation. James Bach, Satisfice, Inc.

Peach Fuzzer Platform

Acceptance Criteria. Software Engineering Group 6. 0/3/2012: Acceptance Criteria, v2.0 March Second Deliverable

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

TESSY Automated dynamic module/unit and. CTE Classification Tree Editor. integration testing of embedded applications. for test case specifications

Quality Assurance Training Program

(COMPANY LOGO) CGMP COMPUTERIZED SYSTEM VENDOR AUDIT QUESTIONNAIRE

The Dangers of Use Cases Employed as Test Cases

Four Schools of Software Testing.

Teaching Software Testing from two Viewpoints

CUT COSTS, NOT PROJECTS

Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective

White Papers: Unit Testing. Unit Testing

Quality Assurance: Early Work Items

Methods of software quality assurance. Daniel Osielczak Sebastian Mianowski

The ROI of Test Automation

JOURNAL OF OBJECT TECHNOLOGY

Software Engineering Support

Basic Testing Concepts and Terminology

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

What Is Specific in Load Testing?

Table of contents. Enterprise Resource Planning (ERP) functional testing best practices: Ten steps to ERP systems reliability

Fuzzing in Microsoft and FuzzGuru framework

Tonight s Speaker. Life of a Tester at Microsoft Urvashi Tyagi Software Test Manager, Microsoft

Latest Trends in Testing. Ajay K Chhokra

Eliminate Memory Errors and Improve Program Stability

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

Cem Kaner -- James Bach -- November, 1999

Software Configuration Management

Application Test Management and Quality Assurance

Levels of Software Testing. Functional Testing

Continuous Integration Optimizing Your Release Management Process

COMMONWEALTH OF PENNSYLVANIA DEPARTMENT S OF PUBLIC WELFARE, INSURANCE, AND AGING

Logistics. Software Testing. Logistics. Logistics. Plan for this week. Before we begin. Project. Final exam. Questions?

Software Testing, Mythology & Methodologies

Metrics in Software Test Planning and Test Design Processes

Key Points. Quality Assurance and Testing. Defect Process. Developer Practice

Software Test Plan (STP) Template

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard

Getting Started With Automated Testing. Michael Kelly

Bringing Value to the Organization with Performance Testing

Getting started with API testing

TRACE PERFORMANCE TESTING APPROACH. Overview. Approach. Flow. Attributes

Regression Testing Based on Comparing Fault Detection by multi criteria before prioritization and after prioritization

Testing Rails. by Josh Steiner. thoughtbot

Software Implementation Technology report

Unit Testing with zunit

An Introduction to. Metrics. used during. Software Development

Scalable Web Programming. CS193S - Jan Jannink - 1/12/10

Improve Fortran Code Quality with Static Analysis

Upping the game. Improving your software development process

Axe in the Agile World

Chapter 8 Software Testing

Network Protocol Testing Overview - InterWorking Labs

A Study on Software Metrics and Phase based Defect Removal Pattern Technique for Project Management

Static vs. Dynamic Testing How Static Analysis and Run-Time Testing Can Work Together. Outline

Change Request Process Overview

Test Automation Architectures: Planning for Test Automation

Software Testing. System, Acceptance and Regression Testing

Automated Software Testing With Macro Scheduler

Coverity White Paper. Effective Management of Static Analysis Vulnerabilities and Defects

Test Specification. Introduction

Schools of Software Testing

Automation testing in Agile projects - Overview Shirly Ronen-Harel Mar 2014

Software Engineering Best Practices. Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer

Satisfying ASIL Requirements with Parasoft C++test Achieving Functional Safety in the Automotive Industry

Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur

APPROACHES TO SOFTWARE TESTING PROGRAM VERIFICATION AND VALIDATION

Planning a Critical Review ELS. Effective Learning Service

Mobile Application Testing

Transcription:

Quality Assurance Pragmatic Programmer Tip Think about Your Work Turn off the autopilot and take control. Constantly critique and appraise your work.

Readings Required: Rapid Development, McConnell, Chapter 4, Section 4.3 QA Fundamentals Pragmatic Programmer, Hunt and Thomas, Chapter 8, p 237-247 Ruthless Testing Other good stuff: If you didn t test it, it doesn t work, Coldwell (link on class Resource list)

Outline QA basics getting off to a good start Test o What makes a good tester? o What types of testing can we do? o Can tools help? Bugs! Test material adapted from several talks by Ian King, tester at Microsoft for many years.

What does QA mean to you? Your thoughts? Things we can do to ensure we produce a high quality (low defect) product Two main approaches to QA: o Process: Build in quality from the start o Test: Add quality through removing bugs

What are ways to foster quality from the get go? Over to you again 3 ideas Some practices: Good design and planning Coding style guides Code reviews/walkthroughs Pair programming

Tools can help! Configuration Management o Document changes, enforce good practices CVS Memory behavior o Detects corruption and leaks Performance o Time of routines Gnu gprof

Interesting fact Up to 4x the normal number of defects are reported for released products that were developed under excessive schedule pressure (Jones, 94) Why?

Test the most common QA practice Verify: Did we build the system right? Validate: Did we build the right system?

What makes a good tester? Analytical o Ask the right questions o Develop experiments to get answers Methodical o Follow experimental procedures precisely o Document observed behaviors, their precursors and environment Brutally honest o You can t argue with the data

How do test engineers fail? Desire to make it work o Impartial judge, not handyman Trust in opinion or expertise o Trust no one the truth (data) is in there Failure to follow defined test procedure o How did we get here? Failure to document the data Failure to believe the data

What types of testing can we do? Back to you to generate some ideas! Functional (include boundaries) Performance Security Stress Resource exhaustion, errors, and recovery Reliability/availability Usability (is it obvious)

Some testing jargon Black box testing Treats the system as atomic Best simulates the customer experience White box testing Examines the system internals Trace data flow directly (ie, in the debugger Bug report contains more detail on source of defect May obscure timing problems (race conditions)

It s black and white, right?! In black box, the tests are usually intended to cover the space of behavior In white box, the tests are usually intended to cover the space of parts of the program Often tester driven Often developer driven

How do we design good tests? Well-defined inputs and outputs o Consider environment as inputs o Consider side effects as outputs Clearly defined initial conditions Clearly described expected behavior Specific small granularity provides greater precision in analysis Test must be at least as verifiable as feature

and good test cases? Valid cases - What should work? Invalid cases What shouldn t? Boundary conditions Error situations ie, resource exhaustion

What s the trick to running tests? Manual Runs Tests that require direct human intervention with the system Necessary when: o GUI is present o Behavior is dependent on physical activity Advisable when: o Automation is more complex system being tested! o System is changing rapidly (early development)

Automated Testing Tests that can be executed independent of human interaction Good: replaces manual testing Better: performs tests difficult for manual testing (e.g. timing related issues) Best: enables other types of testing (regression, perf, stress, lifetime) Cost: Time investment to link tests into harness

Tools rock! Example Test Harness Tests are programmed as modules, then run by harness Harness provides control and reporting Example Code Coverage Freescale CodeTEST Software Analysis Tools

Pragmatic Programmer Tips Test early, test often, test automatically Coding ain t done til all the tests run Find bugs once

BUGS! Managing Bugs

What is a bug? Formally, a software defect System fails to perform to spec System causes something else to fail System functions, but does not satisfy usability criteria If the system works to spec and someone wants it changed, that s a feature request

What makes a good bug report? Include: Reproducible steps how did you cause the failure? Observed result what did it do? Expected result what should it have done? Any collateral information: return values/output, Environment o OS version, env variables, compiler flags, o Test platforms must be reproducible o It doesn t do it on my machine

Generally have a form to help

And a database to file it in Why is a bug db useful? Don t lose bugs Can pass them around easily Justify resources Justify your work Help indicate when the product ready for release Based on the number and type of bugs Based on a graph of the rate of bugs occurring Enables all sorts of cool metrics that management (and customers!) likes!

SPR rate 30 Open Closed Backlog 25 20 15 10 5 0 TIME

Classifying bugs Cray links severity with priority. Some keep it separate.

Another classification Severity o Sev 1: crash, hang, data o o o loss Sev 2: blocks feature, no workaround Sev 3: blocks feature, workaround available Sev 4: trivial (e.g. cosmetic) Priority o o o o Pri 1: Fix immediately Pri 2: Fix before next release outside team Pri 3: Fix before ship Pri 4: Fix if nothing better to do

A Bug s Life (idealistic)

Regression Testing 1. Ensure that the bug you just fixed, doesn t reappear later though other mods o Add a test case to your suite for it! 2. Ensure that the fix you just added doesn t break things working previously o Rerun the test suite before checkin

When can I ship? Tune in on Monday!