3. Agile
• What is the most important thing in internet
industry?
– Speed
• Eliciting requirements
• Implementation
• QA
• Deploy
3
4. Agile
• The problem is that the longer it’s been since your last
release the more pressure and anticipation there is
– Slow iteration
• Windows XP (2001) -> Windows Vista(2007)
• IE 6 (2001) -> IE 7 (2006) -> IE 8 (2009)
– Rapid iteration
• iPhone (2007)-> 3G (2008) -> 3GS (2009) -> 4 (2010)
• Kindle 1 (2007-11) -> 2 (2009-01) -> 3 (2010-07)
• Chrome 3 (2009-10-12)-> 4 (2010-01-25) -> 5 (2010-05-25) -> 6
(2010-09-02) -> 7 (2010-10-21)
• MRM 1.0 (2008-01) -> V2.0 (2008-11) -> V3.0 (2010-04) -> V3.5
(2010-11)
4
5. Agile Story
• On WordPress.com we deploy code to
production twenty or thirty times a day and
anyone in the company can do it.
• The most important thing isn’t necessarily how
perfect code is when you send it out, but how
quickly you can revert if you need to so the cost
of a mistake is really low, under a minute of
brokenness.
- Matt Mullenweg
5
6. How to speed up?
• No thrown over the wall software
– Transparency
• No heavyweight document
– This is for contractor who don’t know about for last few month
• No strict entrance and exit criteria with signoffs
– We work close with DEV and PM
• No sophisticated defect tracking process
– Sophisticated means redundancy
– Individuals and interactions over processes and tools
• Automation
– No sliver bullet
6
8. Tao of software testing
• 道可道 非常道
• 道、法、术、器
– 器 - Tool
– 术 – Test Case
– 法 - Knowledge
– 道 - Tao
8
9. Testability
• What is testability?
– If testing is questioning a product in order to evaluate it, then
testability is anything that makes it easier to question or
evaluate that product.
• The testability of software is determined by factors such
as:
– Controllability
– Observability
– Isolateability
– Separation of concerns
– Understandability
– Automatability
9
10. Why testability matters
• More testability, more test
• More test, less bug
• Less bug, more quality
• More quality, more $
10
11. Testability is not free
• “You can use it, so you can test it”
• What have we do?
– SNMP
– Lua
11
12. Tiny Innovation
• How to rerun a failed regression case?
– Version 1
• Open error.txt
• Type failed case id
• Save the error.txt file
• Python autoRegression_pusher.py
– Version 2
• $ echo ‘xxx’ > error.txt
• Python autoRegression_pusher.py
– Version 3
• $ rhm –c ‘xxx’
12
13. Tiny Innovation
• Process
– QA case review
• Technology
– Using ruby instead of python?
– SQLite helps?
– Virtualization helps?
• Working procedure
– How about auto rerun?
– How about prepare everything and let me send the
request?
– How about using a voice control rerun system
13
14. The Goal
• High-efficiency
• Self-motive
• Self-learning
14
10 years experience in
software testing!
NO! Just 1 year experience in
software testing repeat 10
times
Something like the air, oxygen. It’s not necessarily that every single check in code will work. In traditional software development, may be take a week to ‘integrate’ all the components.
if you’re not embarrassed when you ship your first version you waited too long
controllability: The degree to which it is possible to control the state of the component under test (CUT) as required for testing.
observability: The degree to which it is possible to observe (intermediate and final) test results.
isolateability: The degree to which the component under test (CUT) can be tested in isolation.
separation of concerns: The degree to which the component under test has a single, well defined responsibility.
understandability: The degree to which the component under test is documented or self-explaining.
automatability: The degree to which it is possible to automate testing of the component under test.
heterogeneity: The degree to which the use of diverse technologies requires to use diverse test methods and tools in parallel.