Knowing that the system does what it's designed to do.
Done with programmatic testing whenever possible.
Knowing that the system does what people want it to do.
Done with market testing.
Acceptance - running scenarios and verifying observable results from the user’s perspective
Load - running many scenarios at once and verifying performance criteria
Platform - extended acceptance testing on many platforms (phone, tablet, TV, browsers)
Integration - verifying that code systems interact correctly
Unit - verifying that code components fulfill their interface contracts
Regression - running the above tests over and over to make sure you didn't break anything
Other criteria the system must attain to be acceptable
Performance - how fast? How many users?
Reliability - how frequently can it fail? How does it recover?
Profitability - what does it cost to operate?
Operability - How complicated is it to run?
Not so much Functionality any more - those are covered in the user stories
How the system provides
relevant value
to
specific user populations
"In order to (goal)
As a (role)
I want to (high-level system feature)"
Features are always expressed as something the customer wants the system to do,
not how the system does it
"In order to choose a kitten
As a adopter
I want to see a list of kittens"
"In order to choose a kitten
As a adopter
I want to see the details of one kitten"
"In order to get rid of a kitten
As a donor
I want to offer the kitten for adoption"
"In order to place as many kittens as possible
As an administrator
I want to understand which kittens get adopted"
Feature: Some terse yet descriptive text In order to realize a named business value As an explicit system actor I want to gain some beneficial outcome which furthers the goal Scenario: Some determinable business situation Given some precondition When some action by the actor Then some testable outcome is achieved Scenario: A different situation ...
Scenario: User adds item to cart Given I'm a logged-in User When I go to the Item page And I click "Add item to cart" Then the number of items in my cart should be 1 And my subtotal should increment by the item price And the warehouse inventory should decrement by 1
These scenarios are written in "Gherkin" - a language that can be interpreted by testing frameworks like Cucumber, Bhat, etc.
Scenario: User adds item to cart ... And I click "Add item to cart" [1] Then the quantity in my cart should be 1 [2] ...
These steps must be broken down further into
1. Events that happen to elements on the page and
2. Elements, properties and contents that can be verified
[1] What element must be clicked?
[2] What innerHTML property should be checked?
Feature: put a kitten up for adoption
In order to get rid of a kitten
As a donor
I want to give information to the site about the kitten so the kitten will be accepted for adoption
Scenario: Some determinable business situation
Given some precondition
When some action by the actor
Then some testable outcome is achieved
In order to remember a vocabulary word
As a code school student
I want to save a word
and its definition
http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#building-test-cases
Writing Webdriver in JavaScript
(not covered in this class)