16
BEAT YOUR SOFTWARE WITH A STICK Tang, Tze Chin Agile Coach

Software Characterization & Performance Testing - Beat Your Software with a Stick

Embed Size (px)

Citation preview

Page 1: Software Characterization & Performance Testing - Beat Your Software with a Stick

BEAT YOUR SOFTWARE WITH A STICK

Tang, Tze ChinAgile Coach

Page 2: Software Characterization & Performance Testing - Beat Your Software with a Stick

ABOUT ME

10 Years Experience in Agile Methods. 5 Years in Test Development Engineering. Scrum, Lean, Kanban, Scrumban, XP, Continuous

Delivery, DevOps, Lean Startup, Test Automation, Agile Management, Theory of Constraints.

Waterfall, WaterScrumFall, ScrumBut, RUP. Tech Lead, Manager, Product Owner, Scrum Master Community Organizer (Agile Malaysia), Conference

Speaker. Lean Startup & StartUp Mentor.

Page 3: Software Characterization & Performance Testing - Beat Your Software with a Stick

A TYPICAL DEVELOPMENT CYCLE

Gather Requirement

s

Design

ConstructTest

Deliver

Page 4: Software Characterization & Performance Testing - Beat Your Software with a Stick

WHAT IS “TESTING”?Software testing is a process of executing a program or application with the intent of finding the software bugs.It can also be stated as the process of validating and verifying that a software program or application or product:

Meets the business and technical requirements that guided it’s design and developmentWorks as expectedCan be implemented with the same characteristic.

International Software Testing Qualifications Board (ISTQB)

Source: http://istqbexamcertification.com/what-is-a-software-testing/

TzeChin Tang
TzeChin Tang
Page 5: Software Characterization & Performance Testing - Beat Your Software with a Stick

COST OF CHANGECost of change gets more expensive the more effort is put in to transformation requirements in to working software.

Focus on finding bugs as far left of the curve as possible.

Page 6: Software Characterization & Performance Testing - Beat Your Software with a Stick
Page 7: Software Characterization & Performance Testing - Beat Your Software with a Stick
Page 8: Software Characterization & Performance Testing - Beat Your Software with a Stick

A HOLISTIC LOOK AT TYPES OF TESTS

User Acceptance Testing / Beta With the end user.

Acceptance Tests End to end testing / Within

development. Integration Tests

Testing between sub-systems. Unit Tests

At the ‘unit’ level.

Credit: Suceeding wiith Agile, Mike CohnM

ore Automation Required

Page 9: Software Characterization & Performance Testing - Beat Your Software with a Stick

TESTING IN REAL LIFE…NOT YOU OF COURSE!

Credit: Mike CohnCredit: Dan North

Increasing Automation

Incr

easin

g Co

st

Page 10: Software Characterization & Performance Testing - Beat Your Software with a Stick

SOFTWARE IS BECOMING MORE COMPLEX:NON-FUNCTIONAL REQUIREMENTS Usability Maintainability Scalability Availability Extensibility Security Portability

Source: http://codesqueeze.com/the-7-software-ilities-you-need-to-know/ Source: https://en.wikipedia.org/wiki/Non-functional_requirement

Page 11: Software Characterization & Performance Testing - Beat Your Software with a Stick

AN ALTERNATIVE DEFINITION OF “TESTING”

“Ensuring built software that maximizes market returns, whilst lowering cost of development and minimizing risk to the enterprise.”

Or

“Build working software quickly, make customers happy and cover your

rear.”

Page 12: Software Characterization & Performance Testing - Beat Your Software with a Stick

INTRODUCTION TO CHARACTERIZATION

In computer programming, a characterization test is a means to describe (characterize) the

actual behavior of an existing piece of software, and therefore protect existing

behavior of legacy code against unintended changes via automated testing.

Working with Legacy Code– Michael Feathers

To find out how software fails.Tze Chin Tang

Page 13: Software Characterization & Performance Testing - Beat Your Software with a Stick

WHY CHARACTERIZE? To understand the systems behavior such as:

Peak Usage Latency Longetivity Size (database / storage)

To catch problems such as: Memory Leaks Network Constraints System Constraints Performance Limits

Page 14: Software Characterization & Performance Testing - Beat Your Software with a Stick

HOW TO BEAT YOUR SOFTWARE WITH A STICK?

1. Identify parameters to monitor.• E.g. load time, time to complete, # of

concurrent operations.2. Identify how to stress the system w.r.t.

parameters to monitor.• E.g. # concurrent users, transactions /

time period.3. Identify test surface.

• E.g. UI, API, Unit/Integration test.4. Determine load.5. Run Test6. Analyse Results

• Did it meet your expectations? • Did you have expectation?• Root Cause Analysis

7. Determine next course of action.• Keep, fix, improve, reduce, etc…

Slowing down… Failed!

Page 15: Software Characterization & Performance Testing - Beat Your Software with a Stick

IDENTIFY LIMITS & CONTROL CHARTS

Source: http://moodle.oakland.k12.mi.us/os/mod/book/tool/print/index.php?id=25499

• Proactive, continuous monitoring to ensure performance within constraints.

• To understand characteristics over time and different conditions (e.g. seasonality, time of day).

• To identify and measure impact as the system changes due to code changes, infrastructure.

• To identify changes in how the user interacts with the system over time.

• Monitor sets parameters, they frequently go together – helps to identify constraints within the system.

Page 16: Software Characterization & Performance Testing - Beat Your Software with a Stick

END / Q&A