Upload
gaspar-nagy
View
152
Download
0
Embed Size (px)
Citation preview
Scaffolding a legacy app with BDD scenarios using SpecFlow/Cucumber
HUSTEF 2016, Budapest24/10/2016
Gáspár Nagycoach • trainer • bdd addict • creator of specflow @gasparnagy • [email protected]
Copyright © Gaspar Nagy
[HttpPost]public ActionResult Answer(int answer){
TriviaEntities db = new TriviaEntities();var question = db.FindQuestion(CurrentQuestion);
if (question.Type == QuestionType.Easy){
db.AddScore(question, user, 10);}else{
db.AddScore(question, user, 50);}
var model = new GameModel{ Score = db.GetScore(question, user) };
return View(model);}
implement
feedback
Classic model
Copyright © Gaspar Nagy
Scenario: Correct easy answer scores 10
Given I register a team
When I submit a correct easy answer
Then my score should be 10
CollaborationAutomation with
Cucumber/SpecFlow
BDD Process
Copyright © Gaspar Nagy
My Story
The project was delivered in cooperation with TechTalk (www.techtalk.at)
Copyright © Gaspar Nagy
… and other challenges
• 17 GB test database
• 46 projects
• 300k lines of code
• >2 minutes build time
Copyright © Gaspar Nagy
0. Get the infrastructure ready
We need a healthy local dev and CI environment!
• Make a dummy test and get it running!
• Ignore/skip/delete unstable tests
• Setup the desired testing model (e.g. SpecFlow)
• Test core dependencies (e.g. “When I do something with the database”)
Copyright © Gaspar Nagy
1. Capture current behavior
• Based on the way it was demoed to you
• Do not worry about automation
• Do not worry about details
• Do not worry about exact phrasing
Copyright © Gaspar Nagy
3. Automate “When” with hard-wired data
• We have something to start with!
• (But its obviously nasty with “2347599”)
Green
Copyright © Gaspar Nagy
6. Automate and implement it
• You can even forget that your are maintaining a legacy app here…
Green
Copyright © Gaspar Nagy
7. Pick low hanging fruits
• We have developed an automation interface for a part of the application
• Can we use it to cover other usual cases?
Copyright © Gaspar Nagy
Summary: The first change request
• We addressed the system through a new feature
• Ensured that the test infrastructure works
• Scaffolded the app with a test for the current behavior using hard wired data
• Refactored the automation to eliminate some parts of these data – taken apart a bit of the scaffolding
• Described and implemented the new feature
• Used the automation infrastructure for further tests
Copyright © Gaspar Nagy
The strategy also works for bugs
1. Capture current behavior
2. Describe bug as a scenario
3. Fix the bug
Copyright © Gaspar Nagy
Working on a legacy app does not mean that you cannot apply BDD process.
The scenarios can guide you to discover more and more from the application!
As you learn more, the scaffolding can be removed…
Gáspár Nagycoach • trainer • bdd addict • creator of specflow
@gasparnagy • [email protected]
Thank you!
bddaddict.com