An untestable story might be something like "Make the order screen easy to use." It sounds nice, but no one really knows what this means, or how to objectively verify it. A better wording choice might be: "A novice user be able to load, enter information, and submit an order within 5 minutes."
User Stories Applied is the second Mike Cohn book on Agile development I have read (in addition to Agile Estimating and Planning) and is another incredibly useful resource. It’s a book that explains the basics, drives home the key advantages of the approach and answers all the tricky questions your colleagues or boss will ask when you are attempting to introduce an Agile process to an organisation.
One of the major things I had trouble getting to grips with was the idea of writing stories. Instead of writing stories, I would find myself writing requirements. User Stories Applied, as the name suggests, tackles stories and story-writing head-on. It gives advice on how to go about collecting stories; the fishing analogy, “trawling” for stories is a good one. There is an entire chapter devoted to “story smells” that can help to identify bad stories and rework them into good ones. It also explains how to deal with tricky situations such as handling non-functional requirements (performance, accuracy, portability, security etc..)
As a <type of user>, I want <capability> so that <business value>.”Moving on from stories, Mike explains how the Agile process works, including advice on estimating, planning and executing iterations. Through the use of real-world examples (the book revisits the “BigMoneyJobs” example throughout), the advantages of the approach are really explained in a manner that makes them seem obvious; advantages such as team work and valuing conversations over long documents.
The style of the book makes it an easy read; the chapters are well divided, suitably concise and the summary, questions and answers that end each chapter really help to ensure you have taken away the key learnings from each chapter.
Highly recommended for anyone looking to introduce an Agile approach to development within an organisation.
8/10
User Stories Applied: For Agile Software Development
Addison-Wesley Professional, 2004 - 268 páginas
<p>Agile requirements: discovering what your users really want. With this book, you will learn to: Flexible, quick and practical requirements that workSave time and develop better software that meets users' needsGathering user stories -- even when you can't talk to usersHow user stories work, and how they differ from use cases, scenarios, and traditional requirementsLeveraging user stories as part of planning, scheduling, estimating, and testingIdeal for Extreme Programming, Scrum, or any other agile methodology----------------------------------------------------------------------------------------------------------<p>Thoroughly reviewed and eagerly anticipated by the agile community, "User Stories Applied" offers a requirements process that saves time, eliminates rework, and leads directly to better software. <p>The best way to build software that meets users' needs is to begin with "user stories": simple, clear, brief descriptions of functionality that will be valuable to real users. In "User Stories Applied," Mike Cohn provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle. <p>You'll learn what makes a great user story, and what makes a bad one. You'll discover practical ways to gather user stories, even when you can't speak with your users. Then, once you've compiled your user stories, Cohn shows how to organize them, prioritize them, and use them for planning, management, and testing. User role modeling: understanding what users have in common, and where they differ Gathering stories: user interviewing, questionnaires, observation, and workshopsWorking with managers, trainers, salespeople and other "proxies"Writing user stories for acceptance testing Using stories to prioritize, set schedules, and estimate release costsIncludes end-of-chapter practice questions and exercises <p>User Stories Applied will be invaluable to every software developer, tester, analyst, and manager working with any agile method: XP, Scrum... or even your own home-grown approach. <p>ADDISON-WESLEY PROFESSIONAL<p>Boston, MA 02116<p>www.awprofessional.com<p>ISBN: 0-321-20568-5
Classificações dos utilizadores
5 estrelas 4 estrelas 3 estrelas 2 estrelas 1 estrela
Interesting insights. - GoodreadsReview: User Stories Applied: For Agile Software Development
Matt - November 17, 2008 - Goodreads
... Interesting insights. Need to continue integrating this into our development process. ... Ler crítica na íntegra
Probably the definitive book on writing User Stories. - GoodreadsReview: User Stories Applied: For Agile Software Development
Xerox - February 16, 2009 - Goodreads
... Probably the definitive book on writing User Stories. ... Ler crítica na íntegra
... the best intro to scrum ive read yet. - GoodreadsReview: User Stories Applied: For Agile Software Development
John - October 7, 2009 - Goodreads
... some of the later chapters we much more valuable to me. the best intro to scrum ive read yet. after reading (most) of this book i am much more confident ... Ler crítica na íntegra
Review: User Stories Applied: For Agile Software Development
Procura do Utilizador - Will - GoodreadsThis is the book for learning how to write better user stories, how to manage a backlog and generally how to be a product owner. Ler crítica na íntegra
Todas as críticas (26) »Review: User Stories Applied: For Agile Software Development
Procura do Utilizador - Duane - GoodreadsThis was my intro to the Agile process, and I read it with with the rest of the team at the start-up where I was working at the time, so I may not be separating the book from the experience here. We ... Ler crítica na íntegra
Índice
Mais
Getting Started
1 An Overview
3 What Is a User Story?
4 Where Are the Details?
5 How Long Does It Have to Be?
7 The Customer Team
8 Planning Releases and Iterations
10 What Are Acceptance Tests?
12
Frequently Discussed Topics
131 What Stories Are Not
133 User Stories Are Not Use Cases
137 User Stories Arent Scenarios
141 Summary
143 Why User Stories?
145 User Stories Are Comprehensible
148 User Stories Work for Iterative Development
149
Why Change?
13 Summary
15 Writing Stories
17 Negotiable
18 Valuable to Purchasers or Users
20 Estimatable
22 Small
23 Testable
27 Summary
28 Questions
29 User Role Modeling
31 Role Modeling Steps
33 Two Additional Techniques
37 What If I Have OnSite Users?
39 Summary
40 Customer Responsibilities
41 Gathering Stories
43 A Little Is Enough or Is It?
44 Techniques
45 Questionnaires
47 Observation
48 StoryWriting Workshops
49 Summary
52 Developer Responsibilities
53 Working with User Proxies
55 A Development Manager
57 Domain Experts
58 The Marketing Group
59 Trainers and Technical Support
61 Can You Do It Yourself?
63 Summary
64 Developer Responsibilities
65 Questions
66 Acceptance Testing User Stories
67 Write Tests Before Coding
68 The Customer Specifies the Tests
69 How Many Tests Are Too Many?
70 Types of Testing
72 Summary
73 Questions
74 Guidelines for Good Stories
75 Write Closed Stories
76 Put Constraints on Cards
77 Size the Story to the Horizon
78 Keep the UI Out as Long as Possible
79 Some Things Arent Stories
80 Write for One User
81 Dont Number Story Cards
82 Questions
83 Estimating and Planning
85 Estimating User Stories
87 Estimate as a Team
88 Triangulate
90 Using Story Points
91 What If We Pair Program?
92 Some Reminders
93 Summary
94 Customer Responsibilities
95 Planning a Release
97 When Do We Want the Release?
98 Prioritizing the Stories
99 Mixed Priorities
100 Risky Stories
101 Selecting an Iteration Length
103 The Initial Velocity
104 Creating the Release Plan
105 Summary
106 Customer Responsibilities
107 Planning an Iteration
109 Discussing the Stories
110 Disaggregating into Tasks
111 Accepting Responsibility
113 Summary
115 Customer Responsibilities
116 Measuring and Monitoring Velocity
117 Planned and Actual Velocity
119 Iteration Burndown Charts
121 Burndown Charts During an Iteration
123 Summary
126 Developer Responsibilities
127
Stories Encourage Deferring Detail
150 Stories Support Opportunistic Development
151 User Stories Encourage Participatory Design
152 Stories Build Up Tacit Knowledge
153 Summary
154 Developer Responsibilities
155 A Catalog of Story Smells
157 Goldplating
158 Too Many Details
159 Thinking Too Far Ahead
160 Customer Has Trouble Prioritizing
161 Customer Wont Write and Prioritize the Stories
162 Developer Responsibilities
163 Using Stories with Scrum
165 The Basics of Scrum
166 The Product Backlog
167 The Sprint Planning Meeting
168 The Sprint Review Meeting
170 The Daily Scrum Meeting
171 Adding Stories to Scrum
173 A Case Study
174 Summary
175 Questions
176 Additional Topics
177 Paper or Software?
179 User Stories and the User Interface
181 Retaining the Stories
184 Stories for Bugs
185 Summary
186 Customer Responsibilities
187 An Example
189 The User Roles
191 Identifying Some Initial Roles
192 Consolidating and Narrowing
193 Role Modeling
195 Adding Personas
197 The Stories
199 Stories for Captain Ron
202 Stories for a Novice Sailor
203 Stories for a NonSailing Gift Buyer
204 Some Administration Stories
205 Wrapping Up
206 Estimating the Stories
209 The First Story
210 Advanced Search
212 Rating and Reviewing
213 Accounts
214 Finishing the Estimates
215 All the Estimates
216 The Release Plan
219 Prioritizing the Stories
220 The Finished Release Plan
221 The Acceptance Tests
223 Shopping Cart Tests
224 Buying Books
225 User Accounts
226 Administration
227 Testing the Constraints
228 A Final Story
229 Appendices
231 An Overview of Extreme Programming
233 The Twelve Practices
234 XPs Values
240 The Principles of XP
241 Summary
242 Answers to Questions
245 Chapter 2 Writing Stories
246 Chapter 3 User Role Modeling
247 Chapter 4 Gathering Stories
248 Chapter 5 Working with User Proxies
249 Chapter 8 Estimating User Stories
251 Chapter 10 Planning an Iteration
252 Chapter 12 What Stories Are Not
253 Chapter 13 Why User Stories?
254 Chapter 14 A Catalog of Story Smells
255 Chapter 16 Additional Topics
256 259 263
MenosPassagens conhecidas
Página 264 - Beck, Kent. Test-Driven Development. Reading, MA: Addison-Wesley, November 2002. • Bloch, Joshua. Effective Java Programming Language Guide. Reading, MA : AddisonWesley, June 2001. • Fowler, Martin, et al. Refactoring : Improving the Design of Existing Code. Reading, MA: Addison-Wesley, 1999. • Gamma, Richard Helm, Ralph Johnson, and John Vlissides (The Gang of Four). Design Patterns : Elements of Reusable Object-Oriented Software. Reading, MA : Addison-Wesley, 1994. • Hatcher, Erik, and...Referências de páginas Web
MaisUser Stories Applied : For Agile Software Development (Addison ...
Agile requirements: discovering what your users really want. This guide describes user stories and explains how they can be used to articulate customer ...
www.businessanalysisbooks.com/0321205685.htmlSafari Book Detail - User Stories Applied: For Agile Software ...
User Stories Applied: For Agile Software Development. Author(s): Mike Cohn. Publisher and Imprint: Addison Wesley Professional. Date of Publication: ...
pd.acm.org/book_detail.cfm?isbn=0321205685Oppsummering av User Stories Applied med Mike Cohn - smidig.no forum
Oppsummering av User Stories Applied med Mike Cohn. Subscribe to Oppsummering av User Stories Applied med Mike Cohn 2 post(s), 2 voice(s) ...
forum.smidig.no/forums/7/topics/332Safari Books Online - 0321205685 - User Stories Applied: For Agile ...
0321205685 - User Stories Applied: For Agile Software Development - Agile requirements: discovering what your users really want.
my.safaribooksonline.com/0321205685/pref01User Stories Applied by Mike Cohn - Wikipedia, the free encyclopedia
From Wikipedia, the free encyclopedia. Jump to: navigation, search. Look for User Stories Applied by Mike Cohn on one of Wikipedia's sister projects: ...
en.wikipedia.org/wiki/User_Stories_Applied_by_Mike_CohnIBM Press - 0321205685 - User Stories Applied: For Agile Software ...
0321205685 - User Stories Applied: For Agile Software Development - Agile requirements: discovering what your users really want.
safari.ibmpressbooks.com/0321205685/pref02PDF: 'User Stories Applied for Agile Software Development ...
PDF: 'User Stories Applied for Agile Software Development' | Log-in/Creare un account | 0 Commenti. Limite. -1, 0, 1, 2, 3, 4, 5. Visualizza ...
www.agilemovement.it/index.php?name=News&file=article&sid=312user stories « código Ágil
Menos
Tag Cloud. agile boas vindas boris gloger certificação dilbert equipes estimativa ferramentas ken schwaber livros padrões planejamento prioridade scrum ...
lucianofelix.wordpress.com/tag/user-stories/Acerca do autor (2004)
Mike Cohn is the founder of Mountain Goat Software, a process and project management consultancy and training firm. With more than twenty years of experience, Mike has been a technology executive in companies ranging from start-ups to Fortune 40s, and is a founding member of the Agile Alliance. He frequently contributes to industry-related magazines and presents regularly at conferences. He is the author of "User Stories Applied" (Addison-Wesley, 2004).
Informação bibliográfica
Having coached traditional requirements, use cases, user stories, and agile development, I’ve fielded a lot of questions around the differences among the three major ways of specifying requirements, particularly by people migrating to user stories. To set the record straight on requirements, use cases, and user stories, I will describe each methodology and then compare the three against each other.
Traditional requirements
Traditional requirements are criteria to which the system or business must adhere. They are usually created before the coding begins and are nearly always written as text. They often are thought of as constraints, conditions, or capabilities to which the system must conform.
Good requirements have the following characteristics:
- Complete. Requirements should be as complete as possible—no open-ended requirements.
- Testable. Must be able to create a test for all requirements.
- Consistent. Requirements must be consistent with each other—no conflicts.
- Design Free. Software requirements should be specified in the business perspective rather than the software perspective.
- Unambiguous. Use "shall" and other related words. Don’t be wishy-washy.
Traditional requirements focus on system operation. They typically are written in such a way as to limit interpretation and rarely contain explicit tests or acceptance criteria. These types of requirements are often written atomically; meaning that thousands of independent shall statements can comprise a software requirements specification. Traditional requirements are normally treated as a contract between the business and systems development and, as such, completeness, formality and rigidity in requirements is the rule.
Use Cases
A use case is a series of interactions by the user (Actor) with the system and the response of the system. Use cases consist of two main components: use case diagrams (which graphically describe actors, use cases, system boundaries, and the relationship between all of these) and the text of the use case itself. Use cases and use case diagrams focus on the user, with a use case text itself written in a call-and-response format that shows an action by the user, followed by the system’s response.
Use cases focus on interactions and are written in such a way as to succinctly define the user/system activities and data that define the interaction. Use cases can be written atomically as well, but the use case diagram is meant to tie together the use cases. Use cases are intended to be drilled down in successive levels of detail, reducing the need for nailing down the details before coding.
User Stories
User stories are actually narrative texts that describe an interaction of the user and the system, focusing on the value a user gains from the system. A true user story is a metaphor for the work being done. It is not a highly documented requirement but rather a reminder to collaborate about the topic of the user story—in other words in agile development (good agile at least), the documentation is secondary to the collaboration. User stories aren’t agile in and of themselves. Instead, their underlying agile values—collaboration and just-in-time definition—make user stories a good agile tool. Formality is specifically removed from the mix and specification of the user story is pushed as late as possible.
A good user story uses the “INVEST” model:
- Independent. Reduced dependencies = easier to plan
- Negotiable. Details added via collaboration
- Valuable. Provides value to the customer
- Estimable. Too big or too vague = not estimable
- Small. Can be done in less than a week by the team
- Testable. Good acceptance criteria
User story–writing process
The story-writing process is integral to understanding user stories.
The typical template has 3 parts: the title, the description (or body of the user story), and the acceptance criteria. The title is used to reference the user story and should be kept very short, around 3 to 10 words. The description is where the meat of the user story is kept. It is the only part that can be explained as a reasonable template. The acceptance criteria are used to determine when the user story has met the goal of the user – a sort of test.
Start by writing the title. It should be long enough to allow people on the team to differentiate it from other stories but short enough to fit on a 3” x 5” sticky card when written with a marker.
Now write the description. You can use the following template:
As a [user role] I want to [goal] so I can [reason].If the description becomes lengthy (more than will fit on an index card), you should revisit the user story. It is likely it needs to be split into several stories. You might also consider whether you are trying to include too much detail. Remember that the purpose of a user story is to encourage collaboration. A user story is a promise to have a future conversation; it is not meant to document every aspect of the work, as you might in a series of traditional requirements statements.
When writing a user story, you might include some acceptance criteria, perhaps in the form of a test case or a brief description of "done," if those criteria help make the intent of the user story easier to remember. When the team is ready to work on that story, however, the team and the product owner must discuss the user story. This process will include (indeed must include) adding acceptance criteria so the team will know what done means. Later, as the team members begin to work on the story, they might contact the product owner and discuss new/different acceptance criteria as their understanding of the story grows – acceptance criteria enrich the understanding of the story, which in turn brings out new acceptance criteria and more meaningful conversations about what the customer really wants.
Frequent Mistakes in User Stories
There are three main problems I see in stories. First is too much information in the description. This leads to a loss of collaboration and a reliance on the old ways of documenting everything. A user story should be thought of as a "talking points", a "to-do list," or a "tickler that a conversation must occur about a topic." The user story is a placeholder for a conversation or series of conversations: it is only through collaboration that a user story works as an agile tool; otherwise it's just a requirement written on an index card.
Too much information in a description can lead to the second problem: missing information in acceptance criteria. Before agreeing to work on a story, the team must understand the acceptance criteria. These are essential for knowing what needs to be done in order to satisfy the user story. Acceptance criteria should be detailed enough to define when the user story is satisfied, yet not so detailed as to quash collaboration. Writing acceptance criteria should not an afterthought – it is a crucial part of a user story.
The third problem is to confuse acceptance criteria and test cases. Both are necessary for a user story. Acceptance criteria answer the question, “How will I know when I’m done with the story?” Test cases answer the questions, “How do I test and what are the test steps?” While both acceptance tests and test cases should be added to the user story via collaboration, only acceptance criteria are required. Test-driven development is often used to flesh out the test cases as the code is written.
Comparing User Stories, Use Cases, and Requirements
The basic difference between user stories and other forms of requirements specification has to do with perspective and intent, both of which affect the level of detail.
Traditional requirements’ perspective is on system operations. They are typically written with the intent of limiting interpretation. They rarely have tests or acceptance as part of the mix – that’s another document – and are often written by someone other than the requirements author. The level of detail can vary, particularly if those writing the requirements are using a hierarchical approach to drill down to successive levels of detail. Traditional requirement focus on what the system should do, not on the user or business workflow.
Use cases have the perspective of the users and their interaction with the system in mind. The use case diagram and associated text are intended to show the capabilities of the user and how these capabilities are met via a system response. Work flows or business flows can be derived from use case diagrams; the text of the use cases shows system and user interaction in a call-and-response format. Use case text typically contains more details than stories and traditional requirements. Test cases can often be written from the use case text, but are not typically part of the use case diagram per se.
Both traditional requirements and use cases are meant to be successively refined into greater detail through detailed analysis and design into. They are both written as the primary communication media for the system capabilities.
User stories focus on customer value. They don’t just assume a looseness of specification; they actually encourage it in order to foster a higher level of collaboration between the stakeholders and the team. A user story is a metaphor for the work being done, not a full description of the work. The actual work being done is fleshed out via collaboration revolving around the user story as system development progresses. As such the level of detail of a user story is ultimately higher than a use case but lower than a traditional requirement. In order to limit scope, user stories have collaboratively developed acceptance criteria which define when the user story meets the stakeholder’s expectations. Test cases are often developed as code (with test driven development) or documented as the code is developed.
Comparison example
Problem Statement
The client has requested the ability to search for health care providers by provider specialty within a doctor selection site.Sample Requirements Statement:
The provider search screen shall provide the ability to search for providers by provider specialty.Sample Use Case
The client selects provider search.
The system retrieves a predefined list of provider specialties and populates the specialty list. The system displays the provider search mechanism.The client selects a provider specialty and initiates the search.
The system retrieves a list of providers that match the provider specialty search. [Alt 1]
The system displays a list of providers that match the search. [Alt 2]
End use caseAlt 1: If there are no matches, the system displays a message indicating that no matches were found. End use case.
Alt 2: If there are more matches than the user can view, the system will provide the capability to display multiple pages.
Sample User story
Title:
Search for providers by provider specialty.Description:
As a provider search user, I need the ability to search for providers by specialty so that I can more efficiently refer patients to specialists.Acceptance criteria:
The provider search mechanism has the ability to enter a specialty.
The specialty search will have a list of provider specialties from which to select.
Searching via the provider specialty will return a list of matching specialists or a message indicating that there are no matches.
If there are more results than can fit on one page, the system will provide the capability to view the list in pages or sections.Conclusion
Are user stories better than other types of requirements specification? It depends. In the end, it’s the individual or team that makes a particular technique work (or fail). If a team is used to an iterative approach, use cases and user stories will be relatively easy to work with. If a team is steeped in waterfall and “big requirements up front (BRUF),” that team likely will bring that style to user stories and end up with traditional requirements that are user stories in name only. Adopting the underlying philosophy (concepts like collaboration and just-in-time requirements) is the key to moving toward more agile specification devices, such as user stories.
User stories are not a highly documented series of requirements but rather a reminder to collaborate about the topic of the user story—in other words, in agile development (good agile at least), the documentation is secondary to the collaboration. The intent of user stories is to foster collaboration; the perspective is on customer value. If your user stories look more like requirements in disguise, you need to worry less about what specification you are using and more about how to increase collaboration. If, on the other hand, you have a collaborative environment already, user stories will enhance the collaboration more than use cases and traditional requirements can, in which case user stories are a better tool for you.
Tool para testes funcionais.
Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) [1] to write tests in a number of popular programming languages, including C#, Java, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms.
[edit] History
Selenium was originally developed by Jason Huggins in 2004, who was later joined by other programmers and testers at ThoughtWorks. It is open-source software, released under the Apache 2.0 license, and can be downloaded and used without charge.
The name comes from a joke made by Huggins in an email, mocking a competitor named Mercury, saying that you can cure mercury poisoning by taking Selenium supplements. The others that received the email took the name and ran with it.[2]
The latest side project is Selenium Grid, which provides a hub allowing the running of multiple Selenium tests concurrently on any number of local or remote systems, thus minimizing test execution time.
[edit] Selenium components
[edit] Selenium IDE
Selenium IDE is a complete integrated development environment (IDE) for Selenium tests. It is implemented as a Firefox extension, and allows recording, editing, and debugging tests. It was previously known as Selenium Recorder. Selenium-IDE was originally created by Shinya Kasatani and donated to the Selenium project in 2006.[citation needed]
Scripts may be automatically recorded and edited manually providing autocompletion support and the ability to move commands around quickly.
Scripts are recorded in Selenese, a special test scripting language for Selenium. Selenese provides commands for performing actions in a browser (click a link, select an option), and for retrieving data from the resulting pages.
Features:
- Record and playback
- Intelligent field selection will use IDs, names, or XPath as needed
- Autocomplete for all common Selenium commands
- Walk through tests
- Debug and set breakpoints
- Save tests as Selenese, Ruby scripts, or other formats
- Support for Selenium user-extensions.js file
- Option to automatically assert the title of every page
[edit] Selenium Client API
As an alternative to writing tests in Selenese, tests can also be written in various programming languages. These tests then communicate with Selenium by calling methods in the Selenium Client API. Selenium currently provides client APIs for Java, C#, Ruby and Python.
With Selenium 2, a new Client API was introduced (with WebDriver as its central component). However, the old API (using class Selenium) is still supported.
[edit] Selenium Remote Control
Selenium Remote Control (RC) is a server, written in Java, that accepts commands for the browser via HTTP. RC makes it possible to write automated tests for a web application in any programming language, which allows for better integration of Selenium in existing unit test frameworks. To make writing tests easier, Selenium project currently provides client drivers for PHP, Python, Ruby, .NET, Perl and Java. The Java driver can also be used with JavaScript (via the Rhino engine). A new instance of selenium RC server is needed to launch html test case - which means that the port should be different for each parallel run.[citation needed] However for Java/PHP test case only one Selenium RC instance needs to be running continuously.[citation needed]
Selenium Remote Control was a refactoring of Driven Selenium or Selenium B designed by Paul Hammant, credited with Jason as co-creator of Selenium. The original version directly launched a process for the browser in question, from the test language of Java, .Net, Python or Ruby. The wire protocol (confusingly called 'Selenese' in its day) was reimplemented in each language port. After the refacor by Dan Fabulich, and Nelson Sproul (with help from Pat Lightbody) there was an intermediate daemon process between the driving test script, and the browser. The benefits included the ability to drive remote browsers, and the reduced need to port every line of code to an increasingly growing set of languages. Selenium Remote Control completely took over from the Driven Selenium code-line in 2006. The browser pattern for 'Driven'/'B' and 'RC' was response/request, which subsequently became known as Comet.
With the release of Selenium 2, Selenium RC has been officially deprecated in favor of Selenium WebDriver.
[edit] Selenium WebDriver
Selenium WebDriver is the successor to Selenium RC. Selenium WebDriver accepts commands (sent in Selenese, or via a Client API) and sends them to a browser. This is implemented through a browser-specific browser driver, which sends commands to a browser, and retrieves results. Most browser drivers actually launch and access a browser application (such as Firefox or Internet Explorer); there is also a HtmlUnit browser driver, which simulates a browser using HtmlUnit.
Unlike in Selenium 1, where the Selenium RC server was necessary to run tests, Selenium WebDriver does not need a special server to execute tests. Instead, the WebDriver directly starts a browser instance and controls it. However, Selenium Grid can be used with WebDriver to execute tests on remote systems (see below).
As of early 2012, Simon Stewart of Google (inventor of WebDriver) and David Burns of Mozilla are negotiating with the W3C to make WebDriver an internet standard. As such, Selenium-Webdriver (Selenium 2.0) aims to be the reference implementation of the WebDriver standard in various programming languages. Currently Selenium-WebDriver is fully implemented and supported in Python, Ruby, Java, and C#.
In practice, this means that the Selenium 2.0 API has significantly fewer calls than does the Selenium 1.0 API. Where Selenium 1.0 attempted to provide a rich interface for many different browser operations, Selenium 2.0 aims to provide a basic set of building blocks from which developers can create their own Domain Specific Language. One such DSL already exists: the Watir project in the Ruby language has a rich history of good design. Watir-webdriver implements the Watir API as a wrapper for Selenium-Webdriver in Ruby. Watir-webdriver is created entirely automatically, based on the WebDriver specification and the HTML specification.
[edit] Selenium Grid
Selenium Grid is a server that allows tests to use web browser instances running on remote machines. With Selenium Grid, one server acts as the hub. Tests contact the hub to obtain access to browser instances. The hub has a list of servers that provide access to browser instances (WebDriver nodes), and lets tests use these instances. Selenium Grid allows to run tests in parallel on multiple machines, and to manage different browser versions and browser configurations centrally (instead of in each individual test).
[edit] See also
[edit] References
- ^ Selenium Commands – "Selenese" Selenium Documentation, retrieved September 9, 2011
- ^ Krill, Paul (April 6, 2011). "Open source Selenium web app test suite to support iPhone and Android". InfoWorld. http://news.techworld.com/applications/3272444/open-source-selenium-web-app-test-suite-to-support-iphone-and-android/. Retrieved May 9, 2012. "Selenium was so named because Huggins, dissatisfied with testing tools on the market, was seeking a name that would position the product as an alternative to Mercury Interactive QuickTest Professional commercial testing software. The name, Selenium, was selected because selenium mineral supplements serve as a cure for mercury poisoning, Huggins explained."
[edit] External links
Many development shops have opted to writing user stories over traditional feature/requirement documents; however, almost all of them struggle when writing their first batch of user stories. This is not at all uncommon, just like riding a bike, it does take a little bit of practice (but once you get it – you get it).
Writing user stories is dead simple if you follow these simple steps:
1. As a [role], I can [feature] so that [reason]
When writing user stories, using this pattern is a for sure bullseye. Let’s look at an example:
As a account owner, I can check my balance online so that I can keep a daily balance 24 hours a day.
Pretty easy right? However, in some instances I find that the “so that” suffix reads redundantly so go ahead and have that be optional if you wish.
As a account owner, I can check my balance online.
Feel free to use slight deviations of this template using synonyms:
- As a [role], I want [feature] because [reason]
- As a [role], I can [feature]
- As a [role], I can [feature] so that [reason]
2. Use index cards and a Sharpie
When creating new user stories, always hand write your new stories on a single side of a index card using a Sharpie marker. I realize that a majority of shops use issue trackers like Jira; however, doing this physical activity will aid you in creating the correct size of user story.
The theory is simple – if you use any larger than a 3″ x 5″ index card you will write too much. Likewise, if you use anything smaller than a marker (aka ball point pen) – you will write too much.User stories are suppose to be short and sweet. They are suppose to aid in further communication and not to tell the entire long-winded version of the story. Sticking to these physical constraints will help.
P.S. If you don’t use a tracking system, you can always get some double stick side tape and then stick it on your wall :)
3. Make it testable with acceptance stories
If use stories are short and sweet – how are we suppose to know all the different acceptance criteria? Again easy as pie, just write out any of your acceptance tests using this template:
Scenario 1: Title
Given [context]
And [some more context]…
When [event]
Then [outcome]
And [another outcome]…For example:
Scenario 1: Account balance is negative
Given the account’s balance is below 0
And their is not a scheduled direct deposit that day
When the account owner attempts to withdraw money
Then the bank will deny it
And send the account owner a nasty letter.Again, one trick I learned to keep my user stories small is to only allow enough scope so that all of my acceptance stories can be written using a ball point pen on the backside of the user story index card. Another physical constraint! (I love these types of hacks btw).
If your user story has more than 3-4 acceptance stories, really analyze the story and see if it makes sense to break it down even further so you can fit all its acceptance tests on the back of the card. Doing so might help you break down those larger stories into more digestible pieces.
4. Connect the dots
Like I have said before, write out all the possible user stories you can currently think of. I guarantee that you will be missing some of the project scope; however with a little luck, you will be able to connect the dots and see the entire project picture.
One question I get asked a lot when discussing agile project management is this:How do I write a good user story?
I talked about Mike Cohn's book on this blog previously, and it is an excellent source of information.
However, for those of you who don't have time to read a book, I'll offer a few of my own tips:
1. Make them customer-focused. The easiest way to do this is to have the customer write them. If this isn't practical, then you'll have to role-play. An example of a developer-focused story is "Add clustered index to the Orders table." This doesn't mean much to most customers, and a real customer (unless they are a DBA), would probably never write this. Instead, something like "Improve Order reporting performance", captures the same information, but is understandable to everyone on the team.
2. Make them elevator-friendly. A good story should be something you could explain on an elevator in 30 seconds or so to a team member. Don't write a novel. Remember, this is just a placeholder for more detailed conversations, not a specification or requirements document.
3. Make them the right size. Not too big, and not too small, just like Goldilocks said when she visited a tough bear hangout. For me, the right size is usually under 40 ideal hours (1 ideal week) of estimated effort. Small stories aren't usually a problem, but if they get to be under an hour or so, you probably want to batch them up. Defects are usually good candidates for batching into a single story, as long as they are small and easy to implement.
4. Make them testable. An untestable story might be something like "Make the order screen easy to use." It sounds nice, but no one really knows what this means, or how to objectively verify it. A better wording choice might be: "A novice user be able to load, enter information, and submit an order within 5 minutes." Hmmm...still seems a little questionable, but I can probably write a test like "Given a sample group of 10, 8 of these users should be able to complete an order for a book in 5 minutes."
This is just scratching the surface of the topic, but I hope these tips give you a little direction when starting to write stories.
For more agile tools and tips: http://www.extremeplanner.com
(Tags: agile, project management, user stories)
Get your copy of the new book! Agile Thinking: Leading Successful Software Project and Teams
That’s Not A User Story, That’s An Epic!
When putting User Stories onto a Product Backlog (or feature list), you shouldn’t feel compelled to break everything down until the features are nearing development.
Further down the Product Backlog, it’s fine for items to be fairly fuzzy. It’s also fine for items further down the backlog to be whole projects – large, high-level items that are not so much User Stories but more like Epics!
As an item nears development, the item should be broken down further. And as it nears development, the item on the backlog should be defined in sufficient detail that the team can reasonably estimate its size and break it into tasks.
Until that time, however, it’s just really a placeholder. A reminder for prioritisation and high-level estimating. That’s all.
For some people, particularly those used to a more traditional project approach, used to detailed specifications up-front, this can potentially feel very uncomfortable. It shouldn’t.
The logic here is simple. There is little point defining a feature (or set of features) in detail if it may never reach the top of the priorities. The other aspect of this logic is that you tend to know more about your requirements, constraints, etc as time goes by.
And things change. People come and go. Sometimes the team has changed significantly since the original requirements emerged, so information can be lost if it is captured too early.
Therefore it makes business sense to defer details until they are needed.
Kelly.
Leave a Reply
A user story is not considered complete until it has passed its acceptance tests. This means that new acceptance tests must be created each iteration or the development team will report zero progress.
User stories serve the same purpose as use cases but are not the same. They are used to create time estimates for the release planning meeting. They are also used instead of a large requirements document. User Stories are written by the customers as things that the system needs to do for them. They are similar to usage scenarios, except that they are not limited to describing a user interface. They are in the format of about three sentences of text written by the customer in the customers terminology without techno-syntax.
User stories also drive the creation of the acceptance tests. One or more automated acceptance tests must be created to verify the user story has been correctly implemented.
One of the biggest misunderstandings with user stories is how they differ from traditional requirements specifications. The biggest difference is in the level of detail. User stories should only provide enough detail to make a reasonably low risk estimate of how long the story will take to implement. When the time comes to implement the story developers will go to the customer and receive a detailed description of the requirements face to face.
Developers estimate how long the stories might take to implement. Each story will get a 1, 2 or 3 week estimate in "ideal development time". This ideal development time is how long it would take to implement the story in code if there were no distractions, no other assignments, and you knew exactly what to do. Longer than 3 weeks means you need to break the story down further. Less than 1 week and you are at too detailed a level, combine some stories. About 80 user stories plus or minus 20 is a perfect number to create a release plan during release planning.
Another difference between stories and a requirements document is a focus on user needs. You should try to avoid details of specific technology, data base layout, and algorithms. You should try to keep stories focused on user needs and benefits as opposed to specifying GUI layouts.
![]()
Nice reference article about User Stories. Includes Epics and formal/informal User Stories.
In engineering and its various subdisciplines, acceptance testing is a test conducted to determine if the requirements of a specification or contract are met. It may involve chemical tests, physical tests, or performance tests.
In systems engineering it may involve black-box testing performed on a system (for example: a piece of software, lots of manufactured mechanical parts, or batches of chemical products) prior to its delivery.[1]
Software developers often distinguish acceptance testing by the system provider from acceptance testing by the customer (the user or client) prior to accepting transfer of ownership. In the case of software, acceptance testing performed by the customer is known as user acceptance testing (UAT), end-user testing, site (acceptance) testing, or field (acceptance) testing.
A smoke test is used as an acceptance test prior to introducing a build to the main testing process.
[edit] Overview
Testing generally involves running a suite of tests on the completed system. Each individual test, known as a case, exercises a particular operating condition of the user's environment or feature of the system, and will result in a pass or fail, or boolean, outcome. There is generally no degree of success or failure. The test environment is usually designed to be identical, or as close as possible, to the anticipated user's environment, including extremes of such. These test cases must each be accompanied by test case input data or a formal description of the operational activities (or both) to be performed—intended to thoroughly exercise the specific case—and a formal description of the expected results.
Acceptance Tests/Criteria (in Agile Software Development) are usually created by business customers and expressed in a business domain language. These are high-level tests to test the completeness of a user story or stories 'played' during any sprint/iteration. These tests are created ideally through collaboration between business customers, business analysts, testers and developers, however the business customers (product owners) are the primary owners of these tests. As the user stories pass their acceptance criteria, the business owners can be sure of the fact that the developers are progressing in the right direction about how the application was envisaged to work and so it's essential that these tests include both business logic tests as well as UI validation elements (if need be).
Acceptance test cards are ideally created during sprint planning or iteration planning meeting, before development begins so that the developers have a clear idea of what to develop. Sometimes (due to bad planning!) acceptance tests may span multiple stories (that are not implemented in the same sprint) and there are different ways to test them out during actual sprints. One popular technique is to mock external interfaces or data to mimic other stories which might not be played out during an iteration (as those stories may have been relatively lower business priority). A user story is not considered complete until the acceptance tests have passed.
[edit] Process
The acceptance test suite is run against the supplied input data or using an acceptance test script to direct the testers. Then the results obtained are compared with the expected results. If there is a correct match for every case, the test suite is said to pass. If not, the system may either be rejected or accepted on conditions previously agreed between the sponsor and the manufacturer.
The objective is to provide confidence that the delivered system meets the business requirements of both sponsors and users. The acceptance phase may also act as the final quality gateway, where any quality defects not previously detected may be uncovered.
A principal purpose of acceptance testing is that, once completed successfully, and provided certain additional (contractually agreed) acceptance criteria are met, the sponsors will then sign off on the system as satisfying the contract (previously agreed between sponsor and manufacturer), and deliver final payment.
[edit] User acceptance testing
User Acceptance Testing (UAT) is a process to obtain confirmation that a system meets mutually agreed-upon requirements. A Subject Matter Expert (SME), preferably the owner or client of the object under test, provides such confirmation after trial or review. In software development, UAT is one of the final stages of a project and often occurs before a client or customer accepts the new system.
Users of the system perform these tests, which developers derive from the client's contract or the user requirements specification.
Test-designers draw up formal tests and devise a range of severity levels. Ideally the designer of the user acceptance tests should not be the creator of the formal integration and system test cases for the same system. The UAT acts as a final verification of the required business function and proper functioning of the system, emulating real-world usage conditions on behalf of the paying client or a specific large customer. If the software works as intended and without issues during normal use, one can reasonably extrapolate the same level of stability in production.
User tests, which are usually performed by clients or end-users, do not normally focus on identifying simple problems such as spelling errors and cosmetic problems, nor showstopper defects, such as software crashes; testers and developers previously identify and fix these issues during earlier unit testing, integration testing, and system testing phases.
The results of these tests give confidence to the clients as to how the system will perform in production. There may also be legal or contractual requirements for acceptance of the system.
[edit] Q-UAT - Quantified User Acceptance Testing
Quantified User Acceptance Testing (Q-UAT or, more simply, the "Quantified Approach") is a revised Business Acceptance Testing process which aims to provide a smarter and faster alternative to the traditional UAT phase.[citation needed] Depth-testing is carried out against business requirements only at specific planned points in the application or service under test. A reliance on better quality code-delivery from the development/build phase is assumed and a complete understanding of the appropriate business process is a pre-requisite. This methodology - if carried out correctly - results in a quick turnaround against plan, a decreased number of test scenarios which are more complex and wider in breadth than traditional UAT and ultimately the equivalent confidence-level attained via a shorter delivery-window, allowing products/changes to come to market quicker.
The Q-UAT approach depends on a "gated" three-dimensional model. The key concepts are:
- Linear Testing (LT, the 1st dimension)
- Recursive Testing (RT, the 2nd dimension)
- Adaptive Testing (AT, the 3rd dimension).
The four[which?] "gates" which conjoin and support the 3-dimensional model act as quality safeguards and include contemporary testing concepts such as:
- Internal Consistency Checks (ICS)
- Major Systems/Services Checks (MSC)
- Realtime/Reactive Regression (RTR).
The Quantified Approach was shaped by the former "guerilla" method of acceptance testing which was itself a response to testing phases which proved too costly to be sustainable for many small/medium-scale projects.
[edit] Acceptance testing in Extreme Programming
Acceptance testing is a term used in agile software development methodologies, particularly Extreme Programming, referring to the functional testing of a user story by the software development team during the implementation phase.
The customer specifies scenarios to test when a user story has been correctly implemented. A story can have one or many acceptance tests, whatever it takes to ensure the functionality works. Acceptance tests are black box system tests. Each acceptance test represents some expected result from the system. Customers are responsible for verifying the correctness of the acceptance tests and reviewing test scores to decide which failed tests are of highest priority. Acceptance tests are also used as regression tests prior to a production release. A user story is not considered complete until it has passed its acceptance tests. This means that new acceptance tests must be created for each iteration or the development team will report zero progress.[2]
[edit] Types of acceptance testing
Typical types of acceptance testing include the following
- User acceptance testing
- This may include factory acceptance testing, i.e. the testing done by factory users before the factory is moved to its own site, after which site acceptance testing may be performed by the users at the site.
- Operational Acceptance Testing (OAT)
- Also known as operational readiness testing, this refers to the checking done to a system to ensure that processes and procedures are in place to allow the system to be used and maintained. This may include checks done to back-up facilities, procedures for disaster recovery, training for end users, maintenance procedures, and security procedures.
- Contract and regulation acceptance testing
- In contract acceptance testing, a system is tested against acceptance criteria as documented in a contract, before the system is accepted. In regulation acceptance testing, a system is tested to ensure it meets governmental, legal and safety standards.
- Alpha and beta testing
- Alpha testing takes place at developers' sites, and involves testing of the operational system by internal staff, before it is released to external customers. Beta testing takes place at customers' sites, and involves testing by a group of customers who use the system at their own locations and provide feedback, before the system is released to other customers. The latter is often called “field testing”.
[edit] List of development to production (testing) environments
- Development Environment
- Development Testing Environment
- Testing Environment
- Development Integration Testing
- Development System Testing
- System Integration Testing
- User Acceptance Testing
- Production Environment
[edit] List of acceptance-testing frameworks
[edit] See also
[edit] References
[edit] External links
In software development and product management, a user story is one or more sentences in the everyday or business language of the end user or user of a system that captures what a user does or needs to do as part of his or her job function. User stories are used with Agile software development methodologies as the basis for defining the functions a business system must provide, and to facilitate requirements management. It captures the 'who', 'what' and 'why' of a requirement in a simple, concise way, often limited in detail by what can be hand-written on a small paper notecard. User stories are written by or for the business user as that user's primary way to influence the functionality of the system being developed. User stories may also be written by developers to express non-functional requirements (security, performance, quality, etc.)[1], though primarily it is the task of a product manager to ensure user stories are captured.
User stories are a quick way of handling customer requirements without having to create formalized requirement documents and without performing administrative tasks related to maintaining them. The intention of the user story is to be able to respond faster and with less overhead to rapidly changing real-world requirements.
A user story is an informal statement of the requirement as long as the correspondence of acceptance testing procedures is lacking. Before a user story is to be implemented, an appropriate acceptance procedure must be written by the customer to ensure by testing or otherwise determine whether the goals of the user story have been fulfilled. Some formalization finally happens when the developer accepts the user story and the acceptance procedure as a work specific order.
[edit] Creating user stories
When the time has come for creating user stories, one of the developers (or the product owner in Scrum) gets together with a customer representative. The customer is responsible for formulating the user stories. The developer may use a series of questions to get the customer going, such as asking if some particular functionality is desired, but must be careful not to dominate the idea creation process.
As the customer conceives the user stories, they are written down on a note card (e.g. 3x5 inches or 8x13 cm) with a name and a description which the customer has formulated. If the developer and customer find that the user story is lacking in some way (too large, complicated, imprecise), it is rewritten until it is satisfactory often using the INVEST guidelines from the Scrum project management framework. However, it is stressed in Extreme Programming (XP) that user stories are not to be definite once they have been written down. Requirements tend to change during the development period, which is handled by not carving them in stone.
User stories generally follow the following template:
"As a <role>, I want <goal/desire> so that <benefit>"but the shorter version is commonly used as well:
"As a <role>, I want <goal/desire>"Some practitioners place the benefit at the front, in order to keep the benefit at the forefront:
"In order to <receive benefit> as a <role>, I want <goal/desire>"[edit] Examples
As a user, I want to search for my customers by their first and last names.As a non-administrative user, I want to modify my own schedules but not the schedules of other users.As a mobile application tester, I want to test my test cases and report results to my management.Starting Application The application begins by bringing up the last document the user was working with.As a user closing the application, I want to be prompted to save if I have made any change in my data since the last save.Closing Application Upon closing the application, the user is prompted to save (when ANYTHING has changed in data since the last save!).alternatively...
As a user closing the application, I want to be prompted to save anything that has changed since the last save so that I can preserve useful work and discard erroneous work.The consultant will enter expenses on an expense form. The consultant will enter items on the form like expense type, description, amount, and any comments regarding the expense. At any time the consultant can do any of the following options. (1) Once this is completed the consultant will “Submit”. If the expense is under fifty (<50), the expense will go directly to the system for processes. (2) In the event the consultant has not finished entering the expense, the consultant may want to “Save for later”. This instance should then be displayed on a list (queue) for consultant with the status of “Incomplete”. (3) In the event the consultant decides to clear the data and close the form the consultant will “Cancel and exit”. This instance will not be saved anywhere.As a central part of many agile development methodologies, such as in XP's planning game, user stories define what is to be built in the software project. User stories are prioritized by the customer to indicate which are most important for the system and will be broken down in tasks and estimated by the developers.
When user stories are about to be implemented the developers should have the possibility to talk to the customer about it. The short stories may be difficult to interpret, may require some background knowledge or the requirements may have changed since the story was written.
Every user story must at some point have one or more acceptance tests attached, allowing the developer to test when the user story is done and also allowing the customer to validate it. Without a precise formulation of the requirements, prolonged nonconstructive arguments may arise when the product is to be delivered.
[edit] Benefits
XP and other agile methodologies favor face-to-face communication over comprehensive documentation and quick adaptation to change instead of fixation on the problem. User stories achieve this by:
- Being very short. They represent small chunks of business value that can be implemented in a period of days to weeks.
- Allowing developer and the client representative to discuss requirements throughout the project lifetime
- Needing very little maintenance
- Only being considered at the time of use
- Maintaining a close customer contact
- Allowing projects to be broken into small increments
- Being suited to projects where the requirements are volatile or poorly understood. Iterations of discovery drive the refinement process.
- Making it easier to estimate development effort
- Require close customer contact throughout the project so that the most valued parts of the software get implemented.
[edit] Limitations
Some of the limitations of user stories in agile methodologies:
- They can be difficult to scale to large projects.
- They are regarded as conversation starters.
[edit] User stories and use cases
While both user stories and use cases serve the purpose to capture specific user requirements in terms of interactions between the user and the system, there are major differences between them.
User Stories Use Cases
- Provide a small-scale and easy-to-use presentation of information. Are generally formulated in the everyday language of the user and contain little detail, thus remaining open to interpretation. They should help the reader understand what the software should accomplish.
- Must be accompanied by Acceptance Testing procedures (acceptance criteria) for clarification of behavior where stories appear ambiguous.
- Describe a process and its steps in detail, and may be worded in terms of a formal model. A use case is intended to provide sufficient detail for it to be understood on its own. A use case has been described as “a generalized description of a set of interactions between the system and one or more actors, where an actor is either a user or another system”.[2]
- May be delivered in a stand-alone document.
[edit] See also
[edit] References
- Daniel H. Steinberg and Daniel W. Palmer: Extreme Software Engineering, Pearson Education, Inc., ISBN 0-13-047381-2
- Mike Cohn, "User Stories Applied", 2004, Addison Wesley, ISBN 0-321-20568-5
- Mike Cohn: Agile Estimating and Planning, 2006, Prentice Hall, ISBN 0-13-147941-5
- ^ Davies, Rachel. "Non-Functional Requirements: Do User Stories Really Help?". http://www.methodsandtools.com/archive/archive.php?id=113. Retrieved 12 May 2011.
- ^ Advantages of User Stories for Requirements
[edit] External links