Upload
tze-chin-tang
View
75
Download
0
Embed Size (px)
Citation preview
BEAT YOUR SOFTWARE WITH A STICK
Tang, Tze ChinAgile Coach
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.
A TYPICAL DEVELOPMENT CYCLE
Gather Requirement
s
Design
ConstructTest
Deliver
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/
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.
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
TESTING IN REAL LIFE…NOT YOU OF COURSE!
Credit: Mike CohnCredit: Dan North
Increasing Automation
Incr
easin
g Co
st
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
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.”
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
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
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!
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.
END / Q&A