SlideShare a Scribd company logo
1Copyright © 2012 Retalix |
|
NO MORE BUGS!
By: Arnon Axelrod
SOFTWARE QUALITY
2Copyright © 2012 Retalix |
About me
3Copyright © 2012 Retalix |
About you
• Name
• Company
• Role
• Number of people in the project
• Average release cycle
• % of man-months dedicated to bugs finding and fixing
• From 1 to 10 – how are you satisfied with the quality of
the software you deliver?
4Copyright © 2012 Retalix |
Definition of Done
5Copyright © 2012 Retalix |
What is quality?
6Copyright © 2012 Retalix |
The quality pyramid
• Intuitive, sleek, “sexy”,
enjoyable…
• User friendly, HelpUseful
• Stable
• Supportable
• Secure
Reliable
• Useful features
• Solves a user’s
problem
Usable
7Copyright © 2012 Retalix |
The quality pyramid – “reality”
• Intuitive, sleek, “sexy”,
enjoyable…
• User friendly, Help
• Stable
• Supportable
• Secure
Reliable
• Useful features
• Solves a user’s
problem
Usable
8Copyright © 2012 Retalix |
The quality pyramid
• Intuitive, sleek, “sexy”,
enjoyable…
• User friendly, HelpUseful
• Stable
• Supportable
• Secure
Reliable
• Useful features
• Solves a user’s
problem
Usable
SbE / BDD / ATDD
9Copyright © 2012 Retalix |
Bugs
10Copyright © 2012 Retalix |
What is a bug?
11Copyright © 2012 Retalix |
What is a bug?
Wikipedia:
“A software bug is an error, flaw, mistake, failure, or fault in
a computer program or system that produces an incorrect
or unexpected result, or causes it to behave in
unintended ways”
12Copyright © 2012 Retalix |
Why there are bugs?
• Expectations gaps • Miscommunication
• Coding errors
• Miscommunication
between teams or team
members
• Misunderstanding the
business needs
• Incomplete or incorrect
definition of the expected
results
• Complexity
• Misuse of tools
• Bugs in tools
13Copyright © 2012 Retalix |
Bugs - conclusion
By improving the communication and expectation
coordination – we can prevent many bugs
14Copyright © 2012 Retalix |
Problems with our current practices
15Copyright © 2012 Retalix |
Waterfall
16Copyright © 2012 Retalix |
Is Agile the answer?
17Copyright © 2012 Retalix |
Automated Testing
18Copyright © 2012 Retalix |
Unit Testing
19Copyright © 2012 Retalix |
Introduction to
Specification by
Example
20Copyright © 2012 Retalix |
The Agile Manifesto
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
21Copyright © 2012 Retalix |
Different names
• Specification by Example
• ATDD (Acceptance Test Driven Development)
• Agile Acceptance Testing
• Example Driven Development
• Executable Specifications
• BDD (Behavior Driven Development)
22Copyright © 2012 Retalix |
How does it work?
Specifications
Tests
Examples of
user
scenarios
23Copyright © 2012 Retalix |
User Stories
“are a promise for a future conversation”
– Ron Jeffries
As a <role/persona>
I want <goal/desire>
so that <benefit>.
In order to <receive benefit>
as a <role/persona>
I want <goal/desire>
As a user closing the app
I want to be prompted to save my
work
so that I won’t loose all I’ve done
so far
In order not to loose all I’ve done
so far
as a User closing the app
I want to be prompted to save my
work
24Copyright © 2012 Retalix |
Deriving the Solution from the Goal
25Copyright © 2012 Retalix |
Specifying Collaboratively
26Copyright © 2012 Retalix |
Specifying Collaboratively
• Attendees: BA, Developer, Tester
• Looking for simplest solution
– break the task to small pieces that add value
– work incrementally
• Focus on Simple Examples of User Scenarios
27Copyright © 2012 Retalix |
Specifying Collaboratively – DoD
How will the user use the
solution? (examples!)
How can we demonstrate it?
How will we test it?
Definition of Done!
28Copyright © 2012 Retalix |
Automating the examples
• Test should be as close as possible to the DoD
– Certain tools (e.g. FitNesse) makes it easy!
• Test must fail before the code is developed…
29Copyright © 2012 Retalix |
Developing the User Story
 Develop the fixtures first (follow the errors)
 Write the minimal code to pass the tests
 Don’t add functionality that wasn’t requested!
 Apply TDD/Unit tests
 During and After development run all tests to make sure
nothing is broken
 Refactor as needed (remove duplication, give meaningful
names, etc.)
 Emergent design
 Make sure again that nothing has broken
30Copyright © 2012 Retalix |
Running the tests
 Locally, before check-in
 Automatically (CI, Nightly)
 Provide transparency!
31Copyright © 2012 Retalix |
Living documentation
Automatic Specifications = Living Documentation!
Benefits:
• A single, central source of truth
• Provides visibility about the state of the project
• Easy to identify contradicting requirements
32Copyright © 2012 Retalix |
Living documentation
Automatic Specifications = Living Documentation!
How?
• Maintain the scenarios (+some explanation text) in a
shared location
• Organize in a logical manner
– Reorganize as needed
33Copyright © 2012 Retalix |
Benefits of Specification by Example
• Full automated test coverage
– Makes refactoring easy and safe!
• Helps keeping the code clean all the time!
– Regressions are caught by the developer before check-in!
• Virtually no bugs!
• Tests are easy to understand and maintain
– Provide a comprehensive documentation which is always up to
date!
– When conflicting requirements are caught (during development),
it’s easy to communicate it to the business people
34Copyright © 2012 Retalix |
Benefits of Specification by Example
• Trust is built among stakeholders
• Forming an ubiquitous language
• Less rework – eliminate waste
• Facilitate change
– Short delivery cycles
• Receive feedback earlier!
• Respond to new requirements quickly
• Delivering the RIGHT Software!
35Copyright © 2012 Retalix |
Real Example: Promotion Engine (FitNesse)
36Copyright © 2012 Retalix |
Game – Simulating SbE
37Copyright © 2012 Retalix |
Existing application – specifications:
• Purpose: Point-of-Sale application
• Can sell products from catalog
• 2 Screens:
– Selling screen
– Products catalog
38Copyright © 2012 Retalix |
Existing application – specifications:
• Products catalog screen:
• Allows to create, delete and update products in the catalog
• Each product has:
• Name
• Is it sold it units or by weight?
• Price per unit or Kg
• Validations:
• Name is unique and non-empty
• Price > 0
39Copyright © 2012 Retalix |
Existing application – specifications:
• Selling screen:
• Only one selling at a time (no history)
• Can add, edit and remove lines
• Each line contains:
• Product name
• Quantity
• For unit products – must be an integer
• For weighable products – can be decimal
• Price – calculated by Product’s price * quantity
40Copyright © 2012 Retalix |
Existing application – specifications:
• Selling screen (cont.)
• A product can appear in more than 1 line
• The total is displayed at the bottom
• “Next Customer” button:
• Enabled only there’s at least 1 line
• Displays “Thank you for buying from us!”
• Cleans the screen to prepare for next customer
• “Edit Products” button:
• Enabled only when the selling is empty
• Opens the Products Catalog screen
41Copyright © 2012 Retalix |
New Requirement:
• Support Promotions from the following type:
– Given Bamba costs 4 NIS
– Promotion: “Buy 3 Bamba in 10 NIS”
42Copyright © 2012 Retalix |
The Game Flow (phase 1)
• We’ll split into 3 groups:
– Business Analysts
– Developers
– Testers
• Instructor represents the customer
• Each team will have 5 minutes to complete their role
• The other groups are waiting outside the classroom
43Copyright © 2012 Retalix |
The Game Flow (phase 1)
• Business Analysts role:
– Write a specification document for the requirement
• according to their understanding of the customer’s requirement
• Can ask the Customer clarification questions
– Provide the specification document to the developers and testers
44Copyright © 2012 Retalix |
The Game Flow (phase 1)
• Developers role
– Read the Specifications written by the B.A.
– Write a detailed flowchart or pseudo-code as needed
– Specify all the changes that have to be done to the app
45Copyright © 2012 Retalix |
The Game Flow (phase 1)
• Testers role
– Write a test plan according to the Spec the B.A wrote
– Each test should contain clear steps and expected results
– The goal of the test plan is to find as many bugs as possible in
the Developer’s “code”
46Copyright © 2012 Retalix |
The Game Flow (phase 1)
• Final stage:
– The instructor will “execute” the tests on the “Code”
• Will write which tests passed and which failed
– The instructor (as the “Customer”) will perform additional tests
and will indicate number of bugs and severity
– Note: In case we won’t find any serious bugs, we’ll repeat the
game with more complex requirements
• Phase 2 of the game will be explained later…
47Copyright © 2012 Retalix |
SbE Game – Phase 2
48Copyright © 2012 Retalix |
The Game Flow (phase 2)
Simulation of Specification by Example:
• All groups work together
• Specify using examples
• Can ask the Customer for clarifications
49Copyright © 2012 Retalix |
Understanding
Specification by
Example
50Copyright © 2012 Retalix |
Specification by Example and Automatic
Testing
51Copyright © 2012 Retalix |
Manual Acceptance Tests
• Tests that are conducted by the Customer or Business
Analyst to verify that a new requested feature or User
Story is implemented as expected
• Usually done thought the UI
52Copyright © 2012 Retalix |
Manual Regression Tests
• Manual tests, (usually conducted by a tester) to verify
that old functionality still works
• Usually done though the UI
53Copyright © 2012 Retalix |
Test Case (Scenario)
• A test case represents a single scenario
• A scenario is composed of steps that interact with the
system and verifies its behavior
54Copyright © 2012 Retalix |
Test Case Structure
Arrange Act Assert
Given When Then
55Copyright © 2012 Retalix |
Test Case - Example
• Create an Item called “Bamba” with price $3
• Begin a selling transaction
• Sell 2 “Bamba”
• Ensure that the total is $6
• Pay by cash
• Ensure that the transaction is closed and its balance is 0
56Copyright © 2012 Retalix |
Automatic Acceptance Test
• An automatic test that verifies that a new requested
feature or User Story is implemented as expected
• After the test passes once, it becomes an automatic
Regression test
• Automatic UI Testing has high maintenance costs…
57Copyright © 2012 Retalix |
Test Scope
• Defintion1: The parts of the system and their
configurations that are tested by a particular test or
group of tests
• Definition2: Everything that is not under the control of the
test
58Copyright © 2012 Retalix |
Test Scope
End-to-End
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
59Copyright © 2012 Retalix |
Test Scope
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
Usability, UX
60Copyright © 2012 Retalix |
Types of Tests
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
Integration
61Copyright © 2012 Retalix |
Test Scope
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
Functional
Mock
Mock
Mock
62Copyright © 2012 Retalix |
Test Scope
UI
View Model
Client Logic
Server Proxy
Service Layer
DAL
ORM
DB
Unit tests
Business Logic
63Copyright © 2012 Retalix |
Test Scope
• Smaller Scopes ensures that the tested functionality is
handled only inside this scope and nowhere else
(loosely-coupled, lower maintenance costs).
– It aids diagnosing the root cause of problems
– Faster
• Larger scope verifies that the system behaves correctly
as a whole
64Copyright © 2012 Retalix |
Writing Good Automatic Acceptance Tests
• Create an abstraction between the test case and the
Scope.
– The Test Layer reflects the scenario in the most readable way.
• The Test Layer is agnostic to the Scope of the Test
– The Automation Layer is an adaptor between the Test Layer
and the SUT
• The Automation Layer is bound to the Scope of the Test
65Copyright © 2012 Retalix |
Automatic Tests Architecture
Automatic Test Case
(Test Layer)
Abstraction Layer
Automation Layer
UI
View Model
Client Logic
Server Proxy
Service Layer
Business Logic
DAL
ORM
DB
66Copyright © 2012 Retalix |
Choosing the right scope
• Some scopes are easier to automate than others
• Some scopes are more likely to change than others
– Causing higher maintenance costs of test code
67Copyright © 2012 Retalix |
Complementary Testing Strategies
• Manual Acceptance Tests
• Exploratory tests
• TDD / Unit tests
• Usability tests
• Performance tests
• Load and scalability tests
68Copyright © 2012 Retalix |
Deriving the Solution from the Goal
69Copyright © 2012 Retalix |
• “If I had asked my customers what they
wanted they would have said a faster horse.”
– Henry Ford
70Copyright © 2012 Retalix |
The F-16 Story
71Copyright © 2012 Retalix |
Deriving the Solution from the Goals
• Collaboration empowers creativity and simplicity
• Ask “Why?” and “Who?”
– Dig deep until you reach the “money” answer
• Focus on the outputs first, only then on the inputs
• If you’re given a solution, ask:
– How it would be useful?
– How will this solution help you achieve the goal better than what
you’re doing now?
72Copyright © 2012 Retalix |
Specifying Collaboratively
73Copyright © 2012 Retalix |
Specifying Collaboratively
• Benefits of Collaboration:
– Encourages Creativity
– Prevents blind spots
– Creates shared understanding
– Promotes ubiquitous language
– Produces specifications that are easy to understand
– Produced tests that are easy to maintain
74Copyright © 2012 Retalix |
Tips for effective collaboration
• Consider having introductory meetings
• Make sure that everyone have the necessary
background
• Make sure that participants have the business answers
– Involve the relevant stakeholders
– Product owner to get as much information as possible before
hand
– Don’t over-prepare!
75Copyright © 2012 Retalix |
The Power of Examples
76Copyright © 2012 Retalix |
Game: The Power of Examples
77Copyright © 2012 Retalix |
Illustrating using examples
• Examples is probably the best way to ensure
understanding
• Examples should be precise – but not over-detailed
– Focus on the relevant domain concepts and Business Rules
– Avoid technical details like specific UI details
• Expected result should be specific and measurable as
possible
78Copyright © 2012 Retalix |
Illustrating using examples
• Examples should be realistic
– But can be simplified to focus on the point at hand and be easy to
understand
• Examples and expected results should be described using the
user’s perspective
– Avoid relying on database or logs (unless the logs are aimed for the
user)
• Add a meaningful title to an example or a set of example and
a short description
• Tip: start with basic examples and explore what’s missing
• Given-When-Then!
79Copyright © 2012 Retalix |
Illustrating Non-Functional Requirements
• Many “nonfunctional” requirements can be expressed in
deterministic examples and measurements
– E.g. performance…
• Qualitative non measurable requirements (e.g. usability)
can be expressed manually using examples of “good”
and “bad”
• Use UI sketches
• Use check-lists for cross-cutting concerns
80Copyright © 2012 Retalix |
Writing Good Executable Examples
• Use Business Domain language
• Describe from User’s perspective
– Think about different roles/personas
• Focus on the relevant details!
– Hide irrelevant details in the automation layer
– Focus on the Business Logic, not on the UI
81Copyright © 2012 Retalix |
Writing Good Executable Examples
• Start from the Happy-Path and explore
• Avoid having dependencies on preconfigured,
predefined, shared data
• Have automatic tests run in an isolated environment
82Copyright © 2012 Retalix |
Game: Improving Executable Examples
83Copyright © 2012 Retalix |
Improving Executable Examples – Solution
Name: Promotion Can Add Points To Customer
Description: A promotion can add points to a customer (which he can use later in
other promotions). The user can examine his points balance in the web-site.
Steps:
• Define item: bamba (price 3NIS)
• Define promotion: For every 2 bamba – add 200 points to the customer account
• Create new customer “Arnon”, with stating balance of 100
• Begin selling for customer “Arnon”
• Add: 5 bamba
• Pay total
• Check receipt shows added points: 400
• Check balance for customer “Arnon” is 500 (though web-site)
84Copyright © 2012 Retalix |
Automating the Examples to match the
Specifications
85Copyright © 2012 Retalix |
Automating the Examples to match the
Specifications
• Choose the Tool appropriate for you
– Features and ease-of-use
– Price
– Programming Language
• Choose the automation scope
86Copyright © 2012 Retalix |
FitNesse
87Copyright © 2012 Retalix |
Concordion
88Copyright © 2012 Retalix |
Cucumber, JBehave, SpecFlow
89Copyright © 2012 Retalix |
Twist
90Copyright © 2012 Retalix |
MS-Test, NUnit
91Copyright © 2012 Retalix |
Maximizing the Effectiveness of Executable
Specifications
92Copyright © 2012 Retalix |
Validating Frequently
• Run the tests automatically
• Run Frequently
– Most Preferred: Continuous Integration
– Nightly
– Weekly
– Iteration
– Least Preferred: Release
93Copyright © 2012 Retalix |
Validating Frequently
• Separate short and long tests
• Allow developers to run the tests locally before check-in
• Optimize tests
• Run tests in parallel (on different
machines) to reduce time
94Copyright © 2012 Retalix |
Reliable Automation
• Same Code Quality as Production Code!
• Fix test issues quickly!
• Use isolated environment
• Ban dependencies between tests
• Avoid shared data
• Avoid relying on time
– Rely on events rather than timeouts
– Mock system time
95Copyright © 2012 Retalix |
Provide transparency
• Provide High-Level Report to management
• Provide detailed report for failing tests for Developers
– Make it easy to find the root cause
• Mark failing tests for incomplete user stories differently
from regression failures
96Copyright © 2012 Retalix |
Provide Transparency
• Manage failing tests
– Avoid marking tests as “Ignore”
– Make tests that fail due to known bugs so that they’ll appear in
reports
• Link to other ALM artifacts
97Copyright © 2012 Retalix |
Evolving a Documentation System
98Copyright © 2012 Retalix |
Living Documentation should be Easy to
Understand
• Executable Examples should be:
– Readable and clear for Business People
– Focused
• Provide some textual/graphical explanations
as needed
• Evolve the Language and “Refactor”
to make it consistent
99Copyright © 2012 Retalix |
Organizing the Executable Specifications
• Specifications should be easy to find
• Create links between tests/concepts (Wiki)
• Have a primary hierarchical structured according to
functional areas
– Evolve it as needed
• Use Tags for easy searching
• Have secondary indexes for other categorizations
100Copyright © 2012 Retalix |
Changing the Process
101Copyright © 2012 Retalix |
General Advice…
• Know the benefits of the new process
• Know the benefits for each stakeholder
– But also their concerns
• Listen! Listen! Listen!
– Get to know your organization and business
• Have a clear vision!
• Be enthusiastic and catch others!
• Once you started – be determined!
102Copyright © 2012 Retalix |
Benefits for Business Analysts
• Developers will actually read and understand the
specifications
– Developers won’t skip parts of the specifications
• You can track development progress easily
• You can easily identify conflicts in business rules
103Copyright © 2012 Retalix |
Challenges for Business Analysts
• I don’t do tests – that’s not my job
• It’s extra work
• They will only look at the tests and won’t read the
requirements
• What if I leave something out?
• I can’t cover all the specifications with Examples
104Copyright © 2012 Retalix |
Benefits for Testers
• You’ll be involved from the start
• You’ll build quality in from the start
• You’ll have more influence of the developed product
• You will have much better understanding of the domain
• You’ll delegate a lot of dull work to developers
• You’ll be more free for exploratory testing
• Better relationships with the Developers
105Copyright © 2012 Retalix |
Challenges for Testers
• Will I loose my job because of automation?
• Automated Tests won’t catch all problems
• I don’t want to loose control over testing
• It’s cheating – developers will know in advance what I’m
going to test…
106Copyright © 2012 Retalix |
Benefits for Developers
• Functional gaps will be flushed out before development
• Business Analysts will really understand special cases
• Automated tests will be your target for development
• You’ll have a clear Definition of Done
• You’ll be able to give better estimations
107Copyright © 2012 Retalix |
Challenges for Developers
• I don’t have time to write fixtures or maintain tests
• Acceptance Tests turn out to be incomplete
• Can’t we just write the tests ourselves?
• We already write unit tests
108Copyright © 2012 Retalix |
Tips for implementing SbE
• Ride on a wider process change (if applicable)
• Start small and show results
• Focus on improving quality
• Focus on reducing TTM
• Engage management
• Start from test automation and improve
• Create a small “Sanity” automation suite to show
benefits quickly
109Copyright © 2012 Retalix |
Tips for changing the process
• Avoid testing terminology while talking to non-testers
• Don’t focus on the tool
– Introduce a free tool instead of an expensive one…
– Avoid fighting on the right tool
• Avoid buzzwords and “Agile” terminology
• Leverage transparency in order to enforce
• Conduct effective retrospectives to learn how to improve!
• Listen carefully to what people tell you!
110Copyright © 2012 Retalix |
Conclusion
111Copyright © 2012 Retalix |
Conclusion
• What did you learn today?
• What will you take with you from this workshop?
• Make a commitment!
• Verifying the Definition of Done
112Copyright © 2012 Retalix |
THANK YOU!
113Copyright © 2012 Retalix |
Resources
• Gojko Adzic, Bridging the Communications Gap:
Specification by Example and Agile Acceptance Testing
(Neuri, 2009)
• My blog:
• Gojko Adzic, Specification By Example: How successful
teams deliver the right software (Manning, 2011)
• My blog: http://blogs.microsoft.co.il/blogs/arnona

More Related Content

What's hot

Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
DevOps for Enterprise Systems
 
Collaboration Les Cles Pour Lever Les Freins A L Innovation
Collaboration Les Cles Pour Lever Les Freins A L InnovationCollaboration Les Cles Pour Lever Les Freins A L Innovation
Collaboration Les Cles Pour Lever Les Freins A L Innovation
Valtech
 
Beta testing iPhone apps
Beta testing iPhone appsBeta testing iPhone apps
Beta testing iPhone apps
Shawn Grimes
 
Operational Costs of Technical Debt
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical Debt
Kurt Andersen
 
Software MTTR: The Path from Continuous Integration to Continuous Delivery
Software MTTR: The Path from Continuous Integration to Continuous DeliverySoftware MTTR: The Path from Continuous Integration to Continuous Delivery
Software MTTR: The Path from Continuous Integration to Continuous DeliveryJeff Sussna
 
Synergy6.5 Change4.7 Ecp
Synergy6.5 Change4.7 EcpSynergy6.5 Change4.7 Ecp
Synergy6.5 Change4.7 EcpBill Duncan
 
Setting the right goals and objectives for your beta test
Setting the right goals and objectives for your beta testSetting the right goals and objectives for your beta test
Setting the right goals and objectives for your beta test
Centercode
 
50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...
50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...
50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...
Lucas Jellema
 
Ion Idea Testing Services Presentation Ver 1 0
Ion Idea Testing Services Presentation Ver 1 0Ion Idea Testing Services Presentation Ver 1 0
Ion Idea Testing Services Presentation Ver 1 0sambitgarnaik
 
Agile ALM Tool Comparison
Agile ALM Tool ComparisonAgile ALM Tool Comparison
Agile ALM Tool Comparison
Venkat Janardhanam, MS, MBA
 
Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1
ICS
 
Applying Usability to Improve Value and Reduce Risk
Applying Usability to Improve Value and Reduce RiskApplying Usability to Improve Value and Reduce Risk
Applying Usability to Improve Value and Reduce Risk
Bonitasoft
 
Corporate presentation tech jini
Corporate presentation   tech jiniCorporate presentation   tech jini
Corporate presentation tech jini
Zameer Ahammad
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
Rebecca Wirfs-Brock
 
Online class intro to agile & scrum - final
Online class   intro to agile & scrum - finalOnline class   intro to agile & scrum - final
Online class intro to agile & scrum - final
Conscires Agile Practices
 
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Tieturi Oy
 
What is Customer Validation
What is Customer ValidationWhat is Customer Validation
What is Customer Validation
Centercode
 
Continuous Integration for z using Test Data Management and Application D...
Continuous  Integration for z  using  Test Data Management  and Application D...Continuous  Integration for z  using  Test Data Management  and Application D...
Continuous Integration for z using Test Data Management and Application D...
DevOps for Enterprise Systems
 
Non-Negotiable Usability
Non-Negotiable UsabilityNon-Negotiable Usability
Non-Negotiable Usability
Bonitasoft
 
Mobile Code Optimisation Services
Mobile Code Optimisation ServicesMobile Code Optimisation Services
Mobile Code Optimisation Services
Raja Nagendra Kumar
 

What's hot (20)

Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
 
Collaboration Les Cles Pour Lever Les Freins A L Innovation
Collaboration Les Cles Pour Lever Les Freins A L InnovationCollaboration Les Cles Pour Lever Les Freins A L Innovation
Collaboration Les Cles Pour Lever Les Freins A L Innovation
 
Beta testing iPhone apps
Beta testing iPhone appsBeta testing iPhone apps
Beta testing iPhone apps
 
Operational Costs of Technical Debt
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical Debt
 
Software MTTR: The Path from Continuous Integration to Continuous Delivery
Software MTTR: The Path from Continuous Integration to Continuous DeliverySoftware MTTR: The Path from Continuous Integration to Continuous Delivery
Software MTTR: The Path from Continuous Integration to Continuous Delivery
 
Synergy6.5 Change4.7 Ecp
Synergy6.5 Change4.7 EcpSynergy6.5 Change4.7 Ecp
Synergy6.5 Change4.7 Ecp
 
Setting the right goals and objectives for your beta test
Setting the right goals and objectives for your beta testSetting the right goals and objectives for your beta test
Setting the right goals and objectives for your beta test
 
50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...
50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...
50 Shades of Data - from 0 and 1 to a rich data spectrum - RMOUG 2021 Trainin...
 
Ion Idea Testing Services Presentation Ver 1 0
Ion Idea Testing Services Presentation Ver 1 0Ion Idea Testing Services Presentation Ver 1 0
Ion Idea Testing Services Presentation Ver 1 0
 
Agile ALM Tool Comparison
Agile ALM Tool ComparisonAgile ALM Tool Comparison
Agile ALM Tool Comparison
 
Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1Accelerate Time to Market by Pipelining UX with Development - Part 1
Accelerate Time to Market by Pipelining UX with Development - Part 1
 
Applying Usability to Improve Value and Reduce Risk
Applying Usability to Improve Value and Reduce RiskApplying Usability to Improve Value and Reduce Risk
Applying Usability to Improve Value and Reduce Risk
 
Corporate presentation tech jini
Corporate presentation   tech jiniCorporate presentation   tech jini
Corporate presentation tech jini
 
Why We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile ProjectsWhy We Need Architects (and Architecture) on Agile Projects
Why We Need Architects (and Architecture) on Agile Projects
 
Online class intro to agile & scrum - final
Online class   intro to agile & scrum - finalOnline class   intro to agile & scrum - final
Online class intro to agile & scrum - final
 
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
Testaus 2014 -seminaari: Paul Gerrard. The Changing Role of Testers’.
 
What is Customer Validation
What is Customer ValidationWhat is Customer Validation
What is Customer Validation
 
Continuous Integration for z using Test Data Management and Application D...
Continuous  Integration for z  using  Test Data Management  and Application D...Continuous  Integration for z  using  Test Data Management  and Application D...
Continuous Integration for z using Test Data Management and Application D...
 
Non-Negotiable Usability
Non-Negotiable UsabilityNon-Negotiable Usability
Non-Negotiable Usability
 
Mobile Code Optimisation Services
Mobile Code Optimisation ServicesMobile Code Optimisation Services
Mobile Code Optimisation Services
 

Viewers also liked

The philippines
The philippinesThe philippines
The philippines
kriptonic12
 
HispanoTech Event - The Cyber Security Readiness of Canadian Organizations
HispanoTech Event - The Cyber Security Readiness of Canadian OrganizationsHispanoTech Event - The Cyber Security Readiness of Canadian Organizations
HispanoTech Event - The Cyber Security Readiness of Canadian OrganizationsFernando Blasco
 
What would you do with 10% Productivity Improvement?
What would you do with 10% Productivity Improvement?What would you do with 10% Productivity Improvement?
What would you do with 10% Productivity Improvement?
Troy Bitter
 
6DCP Presentation_12.19.2015
6DCP Presentation_12.19.20156DCP Presentation_12.19.2015
6DCP Presentation_12.19.2015Eddie Cohen
 
Revista2013
Revista2013Revista2013
Revista2013
António Pereira
 
What are the differences in positioning and branding with a small business?
What are the differences in positioning and branding with a small business?What are the differences in positioning and branding with a small business?
What are the differences in positioning and branding with a small business?
Sameer Mathur
 
The hidden factory by JULIAN KALAC
The hidden factory by JULIAN KALACThe hidden factory by JULIAN KALAC
The hidden factory by JULIAN KALAC
Julian Kalac P.Eng
 
Repaso de sustantivos 2
Repaso de sustantivos 2Repaso de sustantivos 2
Repaso de sustantivos 2
Yenny Zujeyli De La Cruz Valenzuela
 
Síntesis de proteínas. La traducción. Narración ilustrada obtenida de Virtua...
Síntesis de proteínas. La traducción. Narración ilustrada obtenida de  Virtua...Síntesis de proteínas. La traducción. Narración ilustrada obtenida de  Virtua...
Síntesis de proteínas. La traducción. Narración ilustrada obtenida de Virtua...
Hogar
 
Mohammad saleh salehian cv-2017
Mohammad saleh salehian cv-2017Mohammad saleh salehian cv-2017
Mohammad saleh salehian cv-2017
mohammad saleh salehian
 
Componentes ppr esquelética
Componentes ppr esqueléticaComponentes ppr esquelética
Componentes ppr esquelética
Cecilia de Sanctis
 
Software QA Services – An Important Ingredient in Software Development
Software QA Services – An Important Ingredient in Software DevelopmentSoftware QA Services – An Important Ingredient in Software Development
Software QA Services – An Important Ingredient in Software Development
Software Testing Solution
 
Symptoms of Bad Quality Software
Symptoms of Bad Quality SoftwareSymptoms of Bad Quality Software
Symptoms of Bad Quality Softwareashokguduru
 
Software quality - Connascence
Software quality - ConnascenceSoftware quality - Connascence
Software quality - Connascence
Aleksey Bekh-Ivanov
 
Qualitygate SourceAudit: A tool for assessing the technical quality of softw...
Qualitygate SourceAudit:  A tool for assessing the technical quality of softw...Qualitygate SourceAudit:  A tool for assessing the technical quality of softw...
Qualitygate SourceAudit: A tool for assessing the technical quality of softw...
Felipe Neves Brito
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
will2294
 
Back to the basics principles for constructing quality software
Back to the basics   principles for constructing quality softwareBack to the basics   principles for constructing quality software
Back to the basics principles for constructing quality software
Rick Spiewak
 
Midiendo la calidad del software
Midiendo la calidad del softwareMidiendo la calidad del software
Midiendo la calidad del software
Ernesto Maya
 

Viewers also liked (19)

The philippines
The philippinesThe philippines
The philippines
 
EAC logic tree
EAC logic treeEAC logic tree
EAC logic tree
 
HispanoTech Event - The Cyber Security Readiness of Canadian Organizations
HispanoTech Event - The Cyber Security Readiness of Canadian OrganizationsHispanoTech Event - The Cyber Security Readiness of Canadian Organizations
HispanoTech Event - The Cyber Security Readiness of Canadian Organizations
 
What would you do with 10% Productivity Improvement?
What would you do with 10% Productivity Improvement?What would you do with 10% Productivity Improvement?
What would you do with 10% Productivity Improvement?
 
6DCP Presentation_12.19.2015
6DCP Presentation_12.19.20156DCP Presentation_12.19.2015
6DCP Presentation_12.19.2015
 
Revista2013
Revista2013Revista2013
Revista2013
 
What are the differences in positioning and branding with a small business?
What are the differences in positioning and branding with a small business?What are the differences in positioning and branding with a small business?
What are the differences in positioning and branding with a small business?
 
The hidden factory by JULIAN KALAC
The hidden factory by JULIAN KALACThe hidden factory by JULIAN KALAC
The hidden factory by JULIAN KALAC
 
Repaso de sustantivos 2
Repaso de sustantivos 2Repaso de sustantivos 2
Repaso de sustantivos 2
 
Síntesis de proteínas. La traducción. Narración ilustrada obtenida de Virtua...
Síntesis de proteínas. La traducción. Narración ilustrada obtenida de  Virtua...Síntesis de proteínas. La traducción. Narración ilustrada obtenida de  Virtua...
Síntesis de proteínas. La traducción. Narración ilustrada obtenida de Virtua...
 
Mohammad saleh salehian cv-2017
Mohammad saleh salehian cv-2017Mohammad saleh salehian cv-2017
Mohammad saleh salehian cv-2017
 
Componentes ppr esquelética
Componentes ppr esqueléticaComponentes ppr esquelética
Componentes ppr esquelética
 
Software QA Services – An Important Ingredient in Software Development
Software QA Services – An Important Ingredient in Software DevelopmentSoftware QA Services – An Important Ingredient in Software Development
Software QA Services – An Important Ingredient in Software Development
 
Symptoms of Bad Quality Software
Symptoms of Bad Quality SoftwareSymptoms of Bad Quality Software
Symptoms of Bad Quality Software
 
Software quality - Connascence
Software quality - ConnascenceSoftware quality - Connascence
Software quality - Connascence
 
Qualitygate SourceAudit: A tool for assessing the technical quality of softw...
Qualitygate SourceAudit:  A tool for assessing the technical quality of softw...Qualitygate SourceAudit:  A tool for assessing the technical quality of softw...
Qualitygate SourceAudit: A tool for assessing the technical quality of softw...
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Back to the basics principles for constructing quality software
Back to the basics   principles for constructing quality softwareBack to the basics   principles for constructing quality software
Back to the basics principles for constructing quality software
 
Midiendo la calidad del software
Midiendo la calidad del softwareMidiendo la calidad del software
Midiendo la calidad del software
 

Similar to Software quality - no more bugs!

Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
Raquel Pau
 
Test Policy and Practices
Test Policy and PracticesTest Policy and Practices
Test Policy and Practices
Talentica Software
 
Software Project management
Software Project managementSoftware Project management
Software Project management
sameer farooq
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
Atish Narlawar
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
QA or the Highway
 
SPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint FactorySPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint Factory
NCCOMMS
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
Xebia India
 
Assessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility AssessmentAssessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility AssessmentMike Cohn
 
PeopleTools 8.52 - Five reasons to upgrade
PeopleTools 8.52 - Five reasons to upgrade PeopleTools 8.52 - Five reasons to upgrade
PeopleTools 8.52 - Five reasons to upgrade
hbiroglu
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
Amazon Web Services
 
Quality in Project Management
Quality in Project ManagementQuality in Project Management
Quality in Project Management
daragao
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
Roger Turnau
 
Sdec10 lean package implementation
Sdec10 lean package implementationSdec10 lean package implementation
Sdec10 lean package implementationTerry Bunio
 
Ten10 Seminar: Test Automation, Tooling and the Future (slides)
Ten10 Seminar: Test Automation, Tooling and the Future (slides)Ten10 Seminar: Test Automation, Tooling and the Future (slides)
Ten10 Seminar: Test Automation, Tooling and the Future (slides)
Ten10
 
Effective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile EnvironmentEffective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile Environment
Raj Indugula
 
Using Product Box to Build the Complete Developer
Using Product Box to Build the Complete DeveloperUsing Product Box to Build the Complete Developer
Using Product Box to Build the Complete Developer
Luke Hohmann
 
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Steve Mercier
 
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Emtec Inc.
 
Kku2011
Kku2011Kku2011

Similar to Software quality - no more bugs! (20)

Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 
Test Policy and Practices
Test Policy and PracticesTest Policy and Practices
Test Policy and Practices
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh EastmanBehavior Driven Development—A Guide to Agile Practices by Josh Eastman
Behavior Driven Development—A Guide to Agile Practices by Josh Eastman
 
SPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint FactorySPCA2013 - Building a SharePoint Factory
SPCA2013 - Building a SharePoint Factory
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
 
Assessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility AssessmentAssessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility Assessment
 
PeopleTools 8.52 - Five reasons to upgrade
PeopleTools 8.52 - Five reasons to upgrade PeopleTools 8.52 - Five reasons to upgrade
PeopleTools 8.52 - Five reasons to upgrade
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Automation and Technical Debt
Automation and Technical DebtAutomation and Technical Debt
Automation and Technical Debt
 
Quality in Project Management
Quality in Project ManagementQuality in Project Management
Quality in Project Management
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
 
Sdec10 lean package implementation
Sdec10 lean package implementationSdec10 lean package implementation
Sdec10 lean package implementation
 
Ten10 Seminar: Test Automation, Tooling and the Future (slides)
Ten10 Seminar: Test Automation, Tooling and the Future (slides)Ten10 Seminar: Test Automation, Tooling and the Future (slides)
Ten10 Seminar: Test Automation, Tooling and the Future (slides)
 
Effective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile EnvironmentEffective Testing Practices in an Agile Environment
Effective Testing Practices in an Agile Environment
 
Using Product Box to Build the Complete Developer
Using Product Box to Build the Complete DeveloperUsing Product Box to Build the Complete Developer
Using Product Box to Build the Complete Developer
 
Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015Agility via Software Engineering Practices - Agile Tour Montreal 2015
Agility via Software Engineering Practices - Agile Tour Montreal 2015
 
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
 
Kku2011
Kku2011Kku2011
Kku2011
 

More from Arnon Axelrod

Defect free development - QS Tag2019
Defect free development - QS Tag2019Defect free development - QS Tag2019
Defect free development - QS Tag2019
Arnon Axelrod
 
ATDD open house
ATDD open houseATDD open house
ATDD open house
Arnon Axelrod
 
Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)
Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)
Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)
Arnon Axelrod
 
Competitive code
Competitive codeCompetitive code
Competitive code
Arnon Axelrod
 
Effective refactoring
Effective refactoringEffective refactoring
Effective refactoring
Arnon Axelrod
 
Beyond pageobjects
Beyond pageobjectsBeyond pageobjects
Beyond pageobjects
Arnon Axelrod
 
Test automation and architecture
Test automation and architectureTest automation and architecture
Test automation and architecture
Arnon Axelrod
 
Unit Testing, TDD and ATDD
Unit Testing, TDD and ATDDUnit Testing, TDD and ATDD
Unit Testing, TDD and ATDD
Arnon Axelrod
 
C# in depth
C# in depthC# in depth
C# in depth
Arnon Axelrod
 
ATDD with SpecFlow
ATDD with SpecFlowATDD with SpecFlow
ATDD with SpecFlow
Arnon Axelrod
 
Automation at Philips Healthcare
Automation at Philips HealthcareAutomation at Philips Healthcare
Automation at Philips Healthcare
Arnon Axelrod
 

More from Arnon Axelrod (11)

Defect free development - QS Tag2019
Defect free development - QS Tag2019Defect free development - QS Tag2019
Defect free development - QS Tag2019
 
ATDD open house
ATDD open houseATDD open house
ATDD open house
 
Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)
Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)
Test Automation Maturity Model (Israel Test Automation meetup 12/11/2018)
 
Competitive code
Competitive codeCompetitive code
Competitive code
 
Effective refactoring
Effective refactoringEffective refactoring
Effective refactoring
 
Beyond pageobjects
Beyond pageobjectsBeyond pageobjects
Beyond pageobjects
 
Test automation and architecture
Test automation and architectureTest automation and architecture
Test automation and architecture
 
Unit Testing, TDD and ATDD
Unit Testing, TDD and ATDDUnit Testing, TDD and ATDD
Unit Testing, TDD and ATDD
 
C# in depth
C# in depthC# in depth
C# in depth
 
ATDD with SpecFlow
ATDD with SpecFlowATDD with SpecFlow
ATDD with SpecFlow
 
Automation at Philips Healthcare
Automation at Philips HealthcareAutomation at Philips Healthcare
Automation at Philips Healthcare
 

Recently uploaded

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 

Recently uploaded (20)

BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 

Software quality - no more bugs!

  • 1. 1Copyright © 2012 Retalix | | NO MORE BUGS! By: Arnon Axelrod SOFTWARE QUALITY
  • 2. 2Copyright © 2012 Retalix | About me
  • 3. 3Copyright © 2012 Retalix | About you • Name • Company • Role • Number of people in the project • Average release cycle • % of man-months dedicated to bugs finding and fixing • From 1 to 10 – how are you satisfied with the quality of the software you deliver?
  • 4. 4Copyright © 2012 Retalix | Definition of Done
  • 5. 5Copyright © 2012 Retalix | What is quality?
  • 6. 6Copyright © 2012 Retalix | The quality pyramid • Intuitive, sleek, “sexy”, enjoyable… • User friendly, HelpUseful • Stable • Supportable • Secure Reliable • Useful features • Solves a user’s problem Usable
  • 7. 7Copyright © 2012 Retalix | The quality pyramid – “reality” • Intuitive, sleek, “sexy”, enjoyable… • User friendly, Help • Stable • Supportable • Secure Reliable • Useful features • Solves a user’s problem Usable
  • 8. 8Copyright © 2012 Retalix | The quality pyramid • Intuitive, sleek, “sexy”, enjoyable… • User friendly, HelpUseful • Stable • Supportable • Secure Reliable • Useful features • Solves a user’s problem Usable SbE / BDD / ATDD
  • 9. 9Copyright © 2012 Retalix | Bugs
  • 10. 10Copyright © 2012 Retalix | What is a bug?
  • 11. 11Copyright © 2012 Retalix | What is a bug? Wikipedia: “A software bug is an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways”
  • 12. 12Copyright © 2012 Retalix | Why there are bugs? • Expectations gaps • Miscommunication • Coding errors • Miscommunication between teams or team members • Misunderstanding the business needs • Incomplete or incorrect definition of the expected results • Complexity • Misuse of tools • Bugs in tools
  • 13. 13Copyright © 2012 Retalix | Bugs - conclusion By improving the communication and expectation coordination – we can prevent many bugs
  • 14. 14Copyright © 2012 Retalix | Problems with our current practices
  • 15. 15Copyright © 2012 Retalix | Waterfall
  • 16. 16Copyright © 2012 Retalix | Is Agile the answer?
  • 17. 17Copyright © 2012 Retalix | Automated Testing
  • 18. 18Copyright © 2012 Retalix | Unit Testing
  • 19. 19Copyright © 2012 Retalix | Introduction to Specification by Example
  • 20. 20Copyright © 2012 Retalix | The Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
  • 21. 21Copyright © 2012 Retalix | Different names • Specification by Example • ATDD (Acceptance Test Driven Development) • Agile Acceptance Testing • Example Driven Development • Executable Specifications • BDD (Behavior Driven Development)
  • 22. 22Copyright © 2012 Retalix | How does it work? Specifications Tests Examples of user scenarios
  • 23. 23Copyright © 2012 Retalix | User Stories “are a promise for a future conversation” – Ron Jeffries As a <role/persona> I want <goal/desire> so that <benefit>. In order to <receive benefit> as a <role/persona> I want <goal/desire> As a user closing the app I want to be prompted to save my work so that I won’t loose all I’ve done so far In order not to loose all I’ve done so far as a User closing the app I want to be prompted to save my work
  • 24. 24Copyright © 2012 Retalix | Deriving the Solution from the Goal
  • 25. 25Copyright © 2012 Retalix | Specifying Collaboratively
  • 26. 26Copyright © 2012 Retalix | Specifying Collaboratively • Attendees: BA, Developer, Tester • Looking for simplest solution – break the task to small pieces that add value – work incrementally • Focus on Simple Examples of User Scenarios
  • 27. 27Copyright © 2012 Retalix | Specifying Collaboratively – DoD How will the user use the solution? (examples!) How can we demonstrate it? How will we test it? Definition of Done!
  • 28. 28Copyright © 2012 Retalix | Automating the examples • Test should be as close as possible to the DoD – Certain tools (e.g. FitNesse) makes it easy! • Test must fail before the code is developed…
  • 29. 29Copyright © 2012 Retalix | Developing the User Story  Develop the fixtures first (follow the errors)  Write the minimal code to pass the tests  Don’t add functionality that wasn’t requested!  Apply TDD/Unit tests  During and After development run all tests to make sure nothing is broken  Refactor as needed (remove duplication, give meaningful names, etc.)  Emergent design  Make sure again that nothing has broken
  • 30. 30Copyright © 2012 Retalix | Running the tests  Locally, before check-in  Automatically (CI, Nightly)  Provide transparency!
  • 31. 31Copyright © 2012 Retalix | Living documentation Automatic Specifications = Living Documentation! Benefits: • A single, central source of truth • Provides visibility about the state of the project • Easy to identify contradicting requirements
  • 32. 32Copyright © 2012 Retalix | Living documentation Automatic Specifications = Living Documentation! How? • Maintain the scenarios (+some explanation text) in a shared location • Organize in a logical manner – Reorganize as needed
  • 33. 33Copyright © 2012 Retalix | Benefits of Specification by Example • Full automated test coverage – Makes refactoring easy and safe! • Helps keeping the code clean all the time! – Regressions are caught by the developer before check-in! • Virtually no bugs! • Tests are easy to understand and maintain – Provide a comprehensive documentation which is always up to date! – When conflicting requirements are caught (during development), it’s easy to communicate it to the business people
  • 34. 34Copyright © 2012 Retalix | Benefits of Specification by Example • Trust is built among stakeholders • Forming an ubiquitous language • Less rework – eliminate waste • Facilitate change – Short delivery cycles • Receive feedback earlier! • Respond to new requirements quickly • Delivering the RIGHT Software!
  • 35. 35Copyright © 2012 Retalix | Real Example: Promotion Engine (FitNesse)
  • 36. 36Copyright © 2012 Retalix | Game – Simulating SbE
  • 37. 37Copyright © 2012 Retalix | Existing application – specifications: • Purpose: Point-of-Sale application • Can sell products from catalog • 2 Screens: – Selling screen – Products catalog
  • 38. 38Copyright © 2012 Retalix | Existing application – specifications: • Products catalog screen: • Allows to create, delete and update products in the catalog • Each product has: • Name • Is it sold it units or by weight? • Price per unit or Kg • Validations: • Name is unique and non-empty • Price > 0
  • 39. 39Copyright © 2012 Retalix | Existing application – specifications: • Selling screen: • Only one selling at a time (no history) • Can add, edit and remove lines • Each line contains: • Product name • Quantity • For unit products – must be an integer • For weighable products – can be decimal • Price – calculated by Product’s price * quantity
  • 40. 40Copyright © 2012 Retalix | Existing application – specifications: • Selling screen (cont.) • A product can appear in more than 1 line • The total is displayed at the bottom • “Next Customer” button: • Enabled only there’s at least 1 line • Displays “Thank you for buying from us!” • Cleans the screen to prepare for next customer • “Edit Products” button: • Enabled only when the selling is empty • Opens the Products Catalog screen
  • 41. 41Copyright © 2012 Retalix | New Requirement: • Support Promotions from the following type: – Given Bamba costs 4 NIS – Promotion: “Buy 3 Bamba in 10 NIS”
  • 42. 42Copyright © 2012 Retalix | The Game Flow (phase 1) • We’ll split into 3 groups: – Business Analysts – Developers – Testers • Instructor represents the customer • Each team will have 5 minutes to complete their role • The other groups are waiting outside the classroom
  • 43. 43Copyright © 2012 Retalix | The Game Flow (phase 1) • Business Analysts role: – Write a specification document for the requirement • according to their understanding of the customer’s requirement • Can ask the Customer clarification questions – Provide the specification document to the developers and testers
  • 44. 44Copyright © 2012 Retalix | The Game Flow (phase 1) • Developers role – Read the Specifications written by the B.A. – Write a detailed flowchart or pseudo-code as needed – Specify all the changes that have to be done to the app
  • 45. 45Copyright © 2012 Retalix | The Game Flow (phase 1) • Testers role – Write a test plan according to the Spec the B.A wrote – Each test should contain clear steps and expected results – The goal of the test plan is to find as many bugs as possible in the Developer’s “code”
  • 46. 46Copyright © 2012 Retalix | The Game Flow (phase 1) • Final stage: – The instructor will “execute” the tests on the “Code” • Will write which tests passed and which failed – The instructor (as the “Customer”) will perform additional tests and will indicate number of bugs and severity – Note: In case we won’t find any serious bugs, we’ll repeat the game with more complex requirements • Phase 2 of the game will be explained later…
  • 47. 47Copyright © 2012 Retalix | SbE Game – Phase 2
  • 48. 48Copyright © 2012 Retalix | The Game Flow (phase 2) Simulation of Specification by Example: • All groups work together • Specify using examples • Can ask the Customer for clarifications
  • 49. 49Copyright © 2012 Retalix | Understanding Specification by Example
  • 50. 50Copyright © 2012 Retalix | Specification by Example and Automatic Testing
  • 51. 51Copyright © 2012 Retalix | Manual Acceptance Tests • Tests that are conducted by the Customer or Business Analyst to verify that a new requested feature or User Story is implemented as expected • Usually done thought the UI
  • 52. 52Copyright © 2012 Retalix | Manual Regression Tests • Manual tests, (usually conducted by a tester) to verify that old functionality still works • Usually done though the UI
  • 53. 53Copyright © 2012 Retalix | Test Case (Scenario) • A test case represents a single scenario • A scenario is composed of steps that interact with the system and verifies its behavior
  • 54. 54Copyright © 2012 Retalix | Test Case Structure Arrange Act Assert Given When Then
  • 55. 55Copyright © 2012 Retalix | Test Case - Example • Create an Item called “Bamba” with price $3 • Begin a selling transaction • Sell 2 “Bamba” • Ensure that the total is $6 • Pay by cash • Ensure that the transaction is closed and its balance is 0
  • 56. 56Copyright © 2012 Retalix | Automatic Acceptance Test • An automatic test that verifies that a new requested feature or User Story is implemented as expected • After the test passes once, it becomes an automatic Regression test • Automatic UI Testing has high maintenance costs…
  • 57. 57Copyright © 2012 Retalix | Test Scope • Defintion1: The parts of the system and their configurations that are tested by a particular test or group of tests • Definition2: Everything that is not under the control of the test
  • 58. 58Copyright © 2012 Retalix | Test Scope End-to-End UI View Model Client Logic Server Proxy Service Layer Business Logic DAL ORM DB
  • 59. 59Copyright © 2012 Retalix | Test Scope UI View Model Client Logic Server Proxy Service Layer Business Logic DAL ORM DB Usability, UX
  • 60. 60Copyright © 2012 Retalix | Types of Tests UI View Model Client Logic Server Proxy Service Layer Business Logic DAL ORM DB Integration
  • 61. 61Copyright © 2012 Retalix | Test Scope UI View Model Client Logic Server Proxy Service Layer Business Logic DAL ORM DB Functional Mock Mock Mock
  • 62. 62Copyright © 2012 Retalix | Test Scope UI View Model Client Logic Server Proxy Service Layer DAL ORM DB Unit tests Business Logic
  • 63. 63Copyright © 2012 Retalix | Test Scope • Smaller Scopes ensures that the tested functionality is handled only inside this scope and nowhere else (loosely-coupled, lower maintenance costs). – It aids diagnosing the root cause of problems – Faster • Larger scope verifies that the system behaves correctly as a whole
  • 64. 64Copyright © 2012 Retalix | Writing Good Automatic Acceptance Tests • Create an abstraction between the test case and the Scope. – The Test Layer reflects the scenario in the most readable way. • The Test Layer is agnostic to the Scope of the Test – The Automation Layer is an adaptor between the Test Layer and the SUT • The Automation Layer is bound to the Scope of the Test
  • 65. 65Copyright © 2012 Retalix | Automatic Tests Architecture Automatic Test Case (Test Layer) Abstraction Layer Automation Layer UI View Model Client Logic Server Proxy Service Layer Business Logic DAL ORM DB
  • 66. 66Copyright © 2012 Retalix | Choosing the right scope • Some scopes are easier to automate than others • Some scopes are more likely to change than others – Causing higher maintenance costs of test code
  • 67. 67Copyright © 2012 Retalix | Complementary Testing Strategies • Manual Acceptance Tests • Exploratory tests • TDD / Unit tests • Usability tests • Performance tests • Load and scalability tests
  • 68. 68Copyright © 2012 Retalix | Deriving the Solution from the Goal
  • 69. 69Copyright © 2012 Retalix | • “If I had asked my customers what they wanted they would have said a faster horse.” – Henry Ford
  • 70. 70Copyright © 2012 Retalix | The F-16 Story
  • 71. 71Copyright © 2012 Retalix | Deriving the Solution from the Goals • Collaboration empowers creativity and simplicity • Ask “Why?” and “Who?” – Dig deep until you reach the “money” answer • Focus on the outputs first, only then on the inputs • If you’re given a solution, ask: – How it would be useful? – How will this solution help you achieve the goal better than what you’re doing now?
  • 72. 72Copyright © 2012 Retalix | Specifying Collaboratively
  • 73. 73Copyright © 2012 Retalix | Specifying Collaboratively • Benefits of Collaboration: – Encourages Creativity – Prevents blind spots – Creates shared understanding – Promotes ubiquitous language – Produces specifications that are easy to understand – Produced tests that are easy to maintain
  • 74. 74Copyright © 2012 Retalix | Tips for effective collaboration • Consider having introductory meetings • Make sure that everyone have the necessary background • Make sure that participants have the business answers – Involve the relevant stakeholders – Product owner to get as much information as possible before hand – Don’t over-prepare!
  • 75. 75Copyright © 2012 Retalix | The Power of Examples
  • 76. 76Copyright © 2012 Retalix | Game: The Power of Examples
  • 77. 77Copyright © 2012 Retalix | Illustrating using examples • Examples is probably the best way to ensure understanding • Examples should be precise – but not over-detailed – Focus on the relevant domain concepts and Business Rules – Avoid technical details like specific UI details • Expected result should be specific and measurable as possible
  • 78. 78Copyright © 2012 Retalix | Illustrating using examples • Examples should be realistic – But can be simplified to focus on the point at hand and be easy to understand • Examples and expected results should be described using the user’s perspective – Avoid relying on database or logs (unless the logs are aimed for the user) • Add a meaningful title to an example or a set of example and a short description • Tip: start with basic examples and explore what’s missing • Given-When-Then!
  • 79. 79Copyright © 2012 Retalix | Illustrating Non-Functional Requirements • Many “nonfunctional” requirements can be expressed in deterministic examples and measurements – E.g. performance… • Qualitative non measurable requirements (e.g. usability) can be expressed manually using examples of “good” and “bad” • Use UI sketches • Use check-lists for cross-cutting concerns
  • 80. 80Copyright © 2012 Retalix | Writing Good Executable Examples • Use Business Domain language • Describe from User’s perspective – Think about different roles/personas • Focus on the relevant details! – Hide irrelevant details in the automation layer – Focus on the Business Logic, not on the UI
  • 81. 81Copyright © 2012 Retalix | Writing Good Executable Examples • Start from the Happy-Path and explore • Avoid having dependencies on preconfigured, predefined, shared data • Have automatic tests run in an isolated environment
  • 82. 82Copyright © 2012 Retalix | Game: Improving Executable Examples
  • 83. 83Copyright © 2012 Retalix | Improving Executable Examples – Solution Name: Promotion Can Add Points To Customer Description: A promotion can add points to a customer (which he can use later in other promotions). The user can examine his points balance in the web-site. Steps: • Define item: bamba (price 3NIS) • Define promotion: For every 2 bamba – add 200 points to the customer account • Create new customer “Arnon”, with stating balance of 100 • Begin selling for customer “Arnon” • Add: 5 bamba • Pay total • Check receipt shows added points: 400 • Check balance for customer “Arnon” is 500 (though web-site)
  • 84. 84Copyright © 2012 Retalix | Automating the Examples to match the Specifications
  • 85. 85Copyright © 2012 Retalix | Automating the Examples to match the Specifications • Choose the Tool appropriate for you – Features and ease-of-use – Price – Programming Language • Choose the automation scope
  • 86. 86Copyright © 2012 Retalix | FitNesse
  • 87. 87Copyright © 2012 Retalix | Concordion
  • 88. 88Copyright © 2012 Retalix | Cucumber, JBehave, SpecFlow
  • 89. 89Copyright © 2012 Retalix | Twist
  • 90. 90Copyright © 2012 Retalix | MS-Test, NUnit
  • 91. 91Copyright © 2012 Retalix | Maximizing the Effectiveness of Executable Specifications
  • 92. 92Copyright © 2012 Retalix | Validating Frequently • Run the tests automatically • Run Frequently – Most Preferred: Continuous Integration – Nightly – Weekly – Iteration – Least Preferred: Release
  • 93. 93Copyright © 2012 Retalix | Validating Frequently • Separate short and long tests • Allow developers to run the tests locally before check-in • Optimize tests • Run tests in parallel (on different machines) to reduce time
  • 94. 94Copyright © 2012 Retalix | Reliable Automation • Same Code Quality as Production Code! • Fix test issues quickly! • Use isolated environment • Ban dependencies between tests • Avoid shared data • Avoid relying on time – Rely on events rather than timeouts – Mock system time
  • 95. 95Copyright © 2012 Retalix | Provide transparency • Provide High-Level Report to management • Provide detailed report for failing tests for Developers – Make it easy to find the root cause • Mark failing tests for incomplete user stories differently from regression failures
  • 96. 96Copyright © 2012 Retalix | Provide Transparency • Manage failing tests – Avoid marking tests as “Ignore” – Make tests that fail due to known bugs so that they’ll appear in reports • Link to other ALM artifacts
  • 97. 97Copyright © 2012 Retalix | Evolving a Documentation System
  • 98. 98Copyright © 2012 Retalix | Living Documentation should be Easy to Understand • Executable Examples should be: – Readable and clear for Business People – Focused • Provide some textual/graphical explanations as needed • Evolve the Language and “Refactor” to make it consistent
  • 99. 99Copyright © 2012 Retalix | Organizing the Executable Specifications • Specifications should be easy to find • Create links between tests/concepts (Wiki) • Have a primary hierarchical structured according to functional areas – Evolve it as needed • Use Tags for easy searching • Have secondary indexes for other categorizations
  • 100. 100Copyright © 2012 Retalix | Changing the Process
  • 101. 101Copyright © 2012 Retalix | General Advice… • Know the benefits of the new process • Know the benefits for each stakeholder – But also their concerns • Listen! Listen! Listen! – Get to know your organization and business • Have a clear vision! • Be enthusiastic and catch others! • Once you started – be determined!
  • 102. 102Copyright © 2012 Retalix | Benefits for Business Analysts • Developers will actually read and understand the specifications – Developers won’t skip parts of the specifications • You can track development progress easily • You can easily identify conflicts in business rules
  • 103. 103Copyright © 2012 Retalix | Challenges for Business Analysts • I don’t do tests – that’s not my job • It’s extra work • They will only look at the tests and won’t read the requirements • What if I leave something out? • I can’t cover all the specifications with Examples
  • 104. 104Copyright © 2012 Retalix | Benefits for Testers • You’ll be involved from the start • You’ll build quality in from the start • You’ll have more influence of the developed product • You will have much better understanding of the domain • You’ll delegate a lot of dull work to developers • You’ll be more free for exploratory testing • Better relationships with the Developers
  • 105. 105Copyright © 2012 Retalix | Challenges for Testers • Will I loose my job because of automation? • Automated Tests won’t catch all problems • I don’t want to loose control over testing • It’s cheating – developers will know in advance what I’m going to test…
  • 106. 106Copyright © 2012 Retalix | Benefits for Developers • Functional gaps will be flushed out before development • Business Analysts will really understand special cases • Automated tests will be your target for development • You’ll have a clear Definition of Done • You’ll be able to give better estimations
  • 107. 107Copyright © 2012 Retalix | Challenges for Developers • I don’t have time to write fixtures or maintain tests • Acceptance Tests turn out to be incomplete • Can’t we just write the tests ourselves? • We already write unit tests
  • 108. 108Copyright © 2012 Retalix | Tips for implementing SbE • Ride on a wider process change (if applicable) • Start small and show results • Focus on improving quality • Focus on reducing TTM • Engage management • Start from test automation and improve • Create a small “Sanity” automation suite to show benefits quickly
  • 109. 109Copyright © 2012 Retalix | Tips for changing the process • Avoid testing terminology while talking to non-testers • Don’t focus on the tool – Introduce a free tool instead of an expensive one… – Avoid fighting on the right tool • Avoid buzzwords and “Agile” terminology • Leverage transparency in order to enforce • Conduct effective retrospectives to learn how to improve! • Listen carefully to what people tell you!
  • 110. 110Copyright © 2012 Retalix | Conclusion
  • 111. 111Copyright © 2012 Retalix | Conclusion • What did you learn today? • What will you take with you from this workshop? • Make a commitment! • Verifying the Definition of Done
  • 112. 112Copyright © 2012 Retalix | THANK YOU!
  • 113. 113Copyright © 2012 Retalix | Resources • Gojko Adzic, Bridging the Communications Gap: Specification by Example and Agile Acceptance Testing (Neuri, 2009) • My blog: • Gojko Adzic, Specification By Example: How successful teams deliver the right software (Manning, 2011) • My blog: http://blogs.microsoft.co.il/blogs/arnona

Editor's Notes

  1. ברוכים הבאים לסדנא... אנחנו נדבר היום על שיטות איך למנוע באגים במקום לרדוף אחריהם... הסנדא היא אינטראקטיבית... כולם משתתפים פעילים...
  2. Test Architect @ Retalix Programming background… Microsoft – both test and dev (similar role)
  3. כ-15 דק'
  4. התחלה משוערת: 09:20 סיום משוער: 9:30 נתחיל מהסוף: אם הסדנא הזו היתה מוצלחת, עם מה היית יוצא ממנה? (silent brainstorming) כ"א ירשום 3 פתקים. מדביקים על הלוח ומקבצים לקבוצות (בסוף לצלם ולאסוף) תשובה שלי (בסוף): הבנה שאפשר אחרת! אפשר להוציא גרסא שהלקוח ישמח לקבל, להוריד את כמות הבאגים כמעט ל-0 וכל זאת מבלי לחרוג מהתקציב! (ולא לשכוח להנות!)
  5. זמן: כ-5 – 10 דק' סיום משוער: 09:40 דיון פתוח: לזרוק מושגים שקשורים לאיכות של תוכנה נסווג אותם ל: סיבה, תוצאה, מניעה, תיקון (קשרים) – להעזר בפתקים דביקים... שאלות מנחות: תכונות של תוכנה איכותית: (Stability, Usability, Supporatbiliy, Performance, Secutiry, Scalability וכו') מה הגורמים לפגיעה באיכות? מה הגורמים המונעים פגיעה באיכות/משפרים את האיכות?
  6. Useful – ה-GPS הראשונים... בדיחה על כדור פורח: איש בכדור פורח מבין שאיבד את דרכו. בעודו יורד בגובה, הוא מבחין באדם למטה. "סלח לי, האם אתה יכול לעזור לי?", צועק האיש מהכדור הפורח לעבר האיש שלמטה, "הבטחתי לחבר שאפגש איתו בעוד שעה, אבל אינני יודע היכן אני." "אתה בכדור פורח", עונה לו האדם שלמטה, "אתה מרחף בגובה 30 רגל מעל האדמה ואתה בין 40-41 מעלות אורך צפון לבין 59-60 מעלות רוחב מערב!" "אתה בטח מהנדס", אומר לו האיש בכדור הפורח. "נכון מאוד", עונה לו האיש מלמטה, "איך ידעת?" "ובכן", מתחיל האיש בבלון, "כל מה שאמרת לי הוא נכון טכנית, אבל לא ממש עזרת לי..." "אתה בטח מנהל", אומר לו האיש על הקרקע. "נכון מאוד", עונה האיש שבבלון, "איך ידעת?" "ובכן", מתחיל המהנדס, "אתה לא יודע איפה אתה או לאן אתה הולך, עלית לאן שעלית בגלל כמות גדולה של אוויר, הבטחת הבטחה שאין לך מושג איך לעמוד בה ואתה מצפה שאני אפתור לך את הבעיה. למעשה, אתה בדיוק באותו מצב בו היית לפני שנפגשנו, אבל איכשהו עכשיו זו אשמתי..."
  7. סיום משוער: 09:45
  8. המחשב עושה בדיוק מה שאומרים לו... אז איך זה יכול להיות שהתוצאה תהיה שגוייה או לא צפויה?! שאלה למחשבה: האם כמות הבאגים מצביעה על האיכות? דוגמא נגדית: Windows 2000.
  9. שאלה למחשבה: האם כמות הבאגים מצביעה על האיכות? דוגמא נגדית: Windows 2000.
  10. Complexity – inherent and accidental הכל זה פערי ציפיות: טעויות אנוש (קידוד) – המתכנת ציפה שהקוד שהוא כתב יעשה משהו מסויים אבל הוא עושה משהו אחר חוסר סנכרון בין אנשי צוות/בין צוותים – מתכנת א' ציפה שהקוד של מתכנת ב' יתנהג באופן מסויים אבל הוא מתנהג אחרת... טעויות בהבנה של הצורך העסקי – הלקוח העסקי ציפה שהאפליקציה תתנהג באופן מסויים אבל היא מתנהגת באופן אחר... הגדרה לא שלמה או לא מדוייקת של התוצאה הרצוייה – הלקוח מצפה שהתוכנה תתנהג כמו שהוא חושב ולא כמו שהמתכנת הבין... מורכבות (קושי בראיית התמונה השלמה והגדרת ההתנהגות הצפוייה בכל המקרים) – כשהלקוח נתקל במקרה קצה הוא מצפה שהתוכנה תתנהג באופן תקין ולא באופן שהיא מתנהגת (ובטח שלא תתרסק...) שימוש לא נכון בכלים – המתכנת מצפה שהכלי יעבוד באופן מסויים אבל הוא מתנהג אחרת... באגים בכלים (נדיר) – המתכנת ציפה שהכלי יבצע פעולה מסויימת אבל הוא לא (תמיד) מבצע אותה כמצופה מסקנה: אם נשפר את התקשורת ונעשה תיאום ציפיות טוב יותר – נוכל למנוע חלק גדול של הבאגים. שאלה למחשבה: איך עושים תיאום ציפיות עם מחשב?! (התשובה בהמשך)
  11. סיום משוער: 10:00 שאלה למחשבה: איך עושים תיאום ציפיות עם מחשב?! (התשובה בהמשך)
  12. התחלה משוערת: 10:00
  13. כ-5 דק' דיון: קשה לחשוב ולהגדיר בדיוק את כל המקרים מראש בתחילת תהליך הפיתוח בד"כ לצוות הפיתוח יש הבנה לא מספיק טובה של התחום העסקי (ולעיתים גם של הטכנולוגיה) ולכן הפתרונות המוצעים הם לא מיטביים גם במסמך הגדרות יכולות להיות סתירות וככל שהמסמך יותר ארוך ומפורט, כך קשה יותר לעלות עליהן טעויות אנוש מתגלות רק בשלב האחרון של הפיתוח (ככל שבאג מתגלה מאוחר יותר כך עלות התיקון שלו גבוהה יותר) אם מתגלה באג באפיון או ב-design אז צריך לחזור על כל התהליך מחדש...(?)
  14. כ-5 דק' בד"כ אין מסמך דרישות מפורט, ולכן יש יותר מקום לטעויות ואי הבנות בד"כ לא שומרים מסמכי דרישות ישנות ולכן קשה לדעת אם נשברה התנהגות שנדרשה בעבר בגלל המחזורים הקצרים אין מספיק זמן לבדוק לעומק לא חושבים הרבה קדימה – (no big design upfront) – בהתחלה הכל סבבה עד שהמערכת מתחילה להסתבך... Technical debt and the Agilist dilemma פתרון חלקי: בדיקות אוטומטיות
  15. בד"כ נכתבים בסוף, בלחץ, וע"י מתכנתים מתחילים או אנשי בדיקות... כלים אוטומטיים ו/או מתכנתים מתחילים כותבים קוד קשה לתחזוקה כשטסט נכשל – צריך להתחיל לחקור למה הוא נכשל: האם הבעיה בטסט או שזה באמת באג החקירה לוקחת זמן... שינויים קטנים בתוכנה יכולים להפיל טסטים בזמן שאדם יכול להפעיל שיקול דעת ולהתעלם מהבדלים לא מהותיים כתוצאה מכך האמון בטסטים האוטומטיים יורד, ואז מפסיקים להשתמש ולתחזק אותם... לא תמיד ברור מה הטסט בא לבדוק לעיתים בודקים את מה שקל לבדוק (למשל לוגים, DB...) ולא את מה שבאמת חשוב ללקוח. לא ברור כמה הם באמת מכסים – ועוד יותר לא ברור מה הם לא מכסים... (Code coverage נותן מענה חלקי בלבד שכן מבלי לחקור מה לא מכוסה, אין בזה הרבה תועלת) לא מתקשרים את התוצאות לכל הנוגעים בדבר (דוח אוטומטי שמנהלים מסתכלים עליו)
  16. סיום משוער: 10:30 בודקים חלקים מאד קטנים של התוכנה ולא את האינטגרציה ביניהם בודקים התנהגות במישור הטכני ולא במישור של המשתמש העסקי נכתבים ע"י המתכנתים ותלויים בהבנה שלהם את הדרישות (Blind spots) מיועדים למתכנתים בלבד – אף אחד אחר לא יכול לקרוא ולהבין מה הטסטים בודקים כשטסט נכשל - רק המתכנתים יכולים להבין מה נכשל. לא נותן תמונה ברורה ל-QA ול-Product
  17. 10:45 – 12:15
  18. בפברואר 2001, התכנסו 17 מובילי דעה... בהר Wasatch ביוטה
  19. היתרונות של שימוש בדוגמאות... מונע אי הבנות...
  20. הפוקוס הוא על הבעיה שאנו מעוניינים לפתור ולא על הפתרון עצמו (וגם לא על הניסוח!). כך אנחנו דוחים את ההחלטה לרגע המכריע ומאפשרים לכל הנוגעים בדבר להשתתף ולהעלות רעיונות יצירתיים שאולי לא חשבנו עליהם...
  21. כל אחד מבעלי התפקידים מביא איתו ראיה אחרת ונקודות חוזקה שונות
  22. להראות את הטסטים ואיך הם רצים... להסביר קצת על הכלי ואיך זה עובד להראות קצת קוד כדי להסביר איך זה עובד
  23. הערה לעצמי: אם שואלים את הלקוח מה הוא מעדיף – תמיד הוא יענה את מה שיותר מסובך... אם שואלים מה יותר חשוב/דחוף (ומחיר...) אז המענה משתנה בהתאם להתייחס לזה בסוף החלק הראשון
  24. פתרון שלי: להוסיף במסך הגדרת הפריטים Checkbox שמפעיל את השדות הנוספים הבאים: Count (אם הפריט הוא שקיל, שדה זה יכול להכיל שבר עשרוני > 0, אם לא רק מספר שלם > 1) מחיר לאחר הנחה: > 0 בעת השמירה יתבצע וידוא ש-newPrice < count * regular price להוסיף במסך המכירה שדה מחושב נוסף ליד שדה הסכום לתשלום: הסכום לפני הנחה. הסכום לתשלום ישקף מעתה את הסכום אחרי ההנחות לאחר כל עדכון במסך המכירה (מתי שמתעדכן שדה הסכום לתשלום) יעודכן הסכום לתשלום דוגמאות: Validate correctness for non-weightable item: Price: 2, Count: 2, New price: 3 => valid Price: 2, count: 4, New price: 8 => invalid Price: 2, count: 4: new price: 10 => invalid Price: 2, count: 2, new price: 0 => invalid Price: 2, count: 0, new price: 1 => invalid Price: 2, count: 1, new pirce: 1 => invalid Validate correctness for weightable item: Price: 2, count: 2, new price: 3 => valid Price: 2, count: 0, new pirce: 1 => invalid Price: 2, count: 0.3, new price: 1 => valid Price: 2, count: 1, new price: 1 => valid Price: 2, count: 2, new price 4 => invalid Price: 2, count: 2, new price 5 => invalid Price: 2, count: 2.6, new price: 5 => valid Single line regular item: Given: 3 items: Dummy: 2$ ItemForDiscount: $3, for every 4 pay $10 Tomatoes (weigtable): $2, for every 2.5 Kg, pay $4 Sell: 4 * ItemForDiscount Pay: $10 4. Multiple lines: Sell: 2 * ItemForDiscount 1 * ItemForDiscount 1 * ItemForDiscount Pay: $10 5. Some with discount and some not: Sell: 5 * ItemForDiscount Pay: $13 Sell: 1 * ItemForDiscount 4 * ItemForDiscount Pay: $13 5. Multiple discounts for same item on a single line: Sell: 8 * ItemForDiscount Pay: $20 Sell: 10 * ItemForDiscount Pay: $26 Weightable item: Sell 2.5 * Tomato: Pay: $4 Discounts with multiple items interleaved: Sell: 1 * Tomato 1 * Dummy 3 * ItemForDiscount 3 * Tomato 2 * ItemForDiscount Pay: $4 + 1.5*$2 + $2 + $10 + $3 = $22 (instead of 8 + 2 + 15 = $25) במקרה שלא ימצאו "באגים" נסבך קצת את הדרישות כך שניתן להגדיר מס' מבצעים עברו כמויות שונות של אותו פריט (למשל: 3 ב-10, 4 ב-12 ו-5 ב-13).
  25. שלב 2: כל הקבוצות יעבדו ביחד כדי להגדיר את הדוגמאות שמתארות את האיפיון של הדרישה החדשה (כ-10 דקות). אני אענה על שאלות כלקוח. בסוף נשווה את המקרים המכוסים ע"י הדוגמאות עם הבאגים שמצאנו קודם. (ואז אני אחשוף את הבדיקות שהרצתי בשלב הראשון). פתרון שלי: להוסיף במסך הגדרת הפריטים Checkbox שמפעיל את השדות הנוספים הבאים: Count (אם הפריט הוא שקיל, שדה זה יכול להכיל שבר עשרוני > 0, אם לא רק מספר שלם > 1) מחיר לאחר הנחה: > 0 בעת השמירה יתבצע וידוא ש-newPrice < count * regular price להוסיף במסך המכירה שדה מחושב נוסף ליד שדה הסכום לתשלום: הסכום לפני הנחה. הסכום לתשלום ישקף מעתה את הסכום אחרי ההנחות לאחר כל עדכון במסך המכירה (מתי שמתעדכן שדה הסכום לתשלום) יעודכן הסכום לתשלום דוגמאות: Validate correctness for non-weightable item: Price: 2, Count: 2, New price: 3 => valid Price: 2, count: 4, New price: 8 => invalid Price: 2, count: 4: new price: 10 => invalid Price: 2, count: 2, new price: 0 => invalid Price: 2, count: 0, new price: 1 => invalid Price: 2, count: 1, new pirce: 1 => invalid Validate correctness for weightable item: Price: 2, count: 2, new price: 3 => valid Price: 2, count: 0, new pirce: 1 => invalid Price: 2, count: 0.3, new price: 1 => valid Price: 2, count: 1, new price: 1 => valid Price: 2, count: 2, new price 4 => invalid Price: 2, count: 2, new price 5 => invalid Price: 2, count: 2.6, new price: 5 => valid Single line regular item: Given: 3 items: Dummy: 2$ ItemForDiscount: $3, for every 4 pay $10 Tomatoes (weigtable): $2, for every 2.5 Kg, pay $4 Sell: 4 * ItemForDiscount Pay: $10 4. Multiple lines: Sell: 2 * ItemForDiscount 1 * ItemForDiscount 1 * ItemForDiscount Pay: $10 5. Some with discount and some not: Sell: 5 * ItemForDiscount Pay: $13 Sell: 1 * ItemForDiscount 4 * ItemForDiscount Pay: $13 5. Multiple discounts for same item on a single line: Sell: 8 * ItemForDiscount Pay: $20 Sell: 10 * ItemForDiscount Pay: $26 Weightable item: Sell 2.5 * Tomato: Pay: $4 Discounts with multiple items interleaved: Sell: 1 * Tomato 1 * Dummy 3 * ItemForDiscount 3 * Tomato 2 * ItemForDiscount Pay: $4 + 1.5*$2 + $2 + $10 + $3 = $22 (instead of 8 + 2 + 15 = $25)
  26. אחרי א. צהריים...
  27. לשנות צבע של המילה ולמרכז
  28. Empowers creativity and simplicity The “Why?” and “who?” – dig deep until you reach the “money” answer Focus on the outputs first, only then on the inputs Ask: “How it would be useful?” (when you’re already given the requested solution), or: “How will this solution help you achieve the goal better than what you’re doing now?”
  29. דרישה מקורית: 2-2.5 מאך כדי שיוכל לחמוק מקרב הדגם הסופי לא הגיע ל-2 מאך, אבל כושר התמרון המעולה שלו ומספר פתרונות יצירתיים עזרו לו לחמוק מקרבות: חופה בעלת שדה ראיה רחב, מושב מוטה לאחור כדי להקל על כוחות G מסך שקוף שמקרין את מצב הקרב לטייס הפתרונות הללו היו יעילים יותר וזולים מדגמים אחרים שענו לדרישות המקוריות
  30. לקיים דיון לפני הצגת היתרונות. להציג רק כדי לוודא שלא שכחנו משהו
  31. איך ילד לומד: מנסוי וטעיה ולא מהסברים תיאורטיים... גם כמבוגרים יותר קל לנו להבין דוגמאות, ואנחנו משתמשים בהם כל הזמן...
  32. דרושים 2 מתנדבים: אחד מייצג את ה-BA והשני את המתכנת אמצעים: חפיסת לגו מחלקים פשוטים, ותמונה של מבנה מהלגו הזה שלב 1: ה-BA מקבל את התמונה מבלי שהמתכנת יראה אותה והוא צריך להסביר למתכנת איך לבנות את אותו מבנה שלב 2: המתכנת מקבל את התמונה וצריך לבנות בעצמו את המבנה מסקנה: בלי דוגמא, קשה מאוד להבין בדיוק מה הלקוח/BA רוצה. אבל עם דוגמא זה קל הרבה יותר!
  33. אנחנו משתמשים בדוגמאות כל הזמן. גם כשאנחנו קוראים הגדרות כלליות – אנחנו בד"כ מתרגמים אותם לדוגמאות כדי להבין (לפחות בראש...). אז למה לא להעביר אותם לכתב כדי שנוכל לשתף אותם ולדבר עליהם במשותף? למה להמציא דוגמאות כל פעם מחדש...? דוגמאות עוזרות לחשוף הנחות סמויות.
  34. אנחנו משתמשים בדוגמאות כל הזמן. גם כשאנחנו קוראים הגדרות כלליות – אנחנו בד"כ מתרגמים אותם לדוגמאות כדי להבין (לפחות בראש...). אז למה לא להעביר אותם לכתב כדי שנוכל לשתף אותם ולדבר עליהם במשותף? למה להמציא דוגמאות כל פעם מחדש...? דוגמאות עוזרות לחשוף הנחות סמויות.
  35. בעיות: שם לא ברור פעולות רלוונטיות מוחבאות, ופעולות לא רלוונטיות מוצגות בודק יותר מדי דברים מסתמך על הגדרות קודמות בודק פרטים טכניים (לוג, DB) בודק ברבדים שונים של אבסטרקציה יותר מדי פרטים של UI (קשור לנק' הקודמת)
  36. לשאול כל אחד