Har du prøvet at stå i den situation, at det du har bygget virker, men at det ikke var præcist som kunden forventede?
Eller har du oplevet, at noget der plejede at virke, pludselig ikke gør det længere?
Så er det måske tid til at overveje at gøre dine specifikationer og acceptkriterier testbare.
Behat er et værktøj, der gør det muligt at skrive specifikationer i almindeligt sprog og eksekvere dem som automatiske tests i en browser.
Slides er fra gå-hjem møde den 4. december 2013, hvor Rikke Simonsen demonstrerede, hvordan Behat og metoden bag (BDD) kan bruges i en udviklingsproces, og hvilke fordele det giver. Lige fra bedre beskrivelse af krav, til overholdelse af acceptkriterier, regressionstest og levende dokumentation.
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Softwaretest den 28. september 2010.
Læs mere om interessegruppen på http://www.infinit.dk/dk/interessegrupper/softwaretest/softwaretest.htm
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Softwaretest den 26. maj 2009.
Læs mere om interessegruppen på http://www.infinit.dk/dk/interessegrupper/softwaretest/softwaretest.htm
1) The document discusses common pitfalls of test automation and provides recommendations to avoid them. It identifies pitfalls such as automating everything without prioritization, viewing automation as solely the tester's responsibility, being overly reliant on automation tools, treating test code as less important, and having unrealistic expectations of return on investment.
2) The recommendations are to prioritize what to automate based on risk and value, involve the whole team in automation, select the right tools for the job with critical thinking, follow good coding practices for test code, and take a long term and realistic view of the costs and benefits of automation.
3) The key takeaway is that automation requires investment of time and resources, but can
Ryk i skyen eller dø - cloud erfaringer fra virkelighedenReload! A/S
I Reload har vi de seneste år været på en rejse mod skyen - dvs. vi har for alvor dyppet tæerne i en perlerække af cloud teknologier og -hosting. Dette er slides tilhørende denne livestream: https://reload.dk/events/ryk-i-skyen-eller-do-cloud-erfaringer-fra-virkeligheden
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Softwaretest den 28. september 2010.
Læs mere om interessegruppen på http://www.infinit.dk/dk/interessegrupper/softwaretest/softwaretest.htm
Oplægget blev holdt ved et seminar i InfinIT-interessegruppen Softwaretest den 26. maj 2009.
Læs mere om interessegruppen på http://www.infinit.dk/dk/interessegrupper/softwaretest/softwaretest.htm
1) The document discusses common pitfalls of test automation and provides recommendations to avoid them. It identifies pitfalls such as automating everything without prioritization, viewing automation as solely the tester's responsibility, being overly reliant on automation tools, treating test code as less important, and having unrealistic expectations of return on investment.
2) The recommendations are to prioritize what to automate based on risk and value, involve the whole team in automation, select the right tools for the job with critical thinking, follow good coding practices for test code, and take a long term and realistic view of the costs and benefits of automation.
3) The key takeaway is that automation requires investment of time and resources, but can
Ryk i skyen eller dø - cloud erfaringer fra virkelighedenReload! A/S
I Reload har vi de seneste år været på en rejse mod skyen - dvs. vi har for alvor dyppet tæerne i en perlerække af cloud teknologier og -hosting. Dette er slides tilhørende denne livestream: https://reload.dk/events/ryk-i-skyen-eller-do-cloud-erfaringer-fra-virkeligheden
This document provides an overview of Reload, Danfoss' product-as-a-service platform. It introduces Reload and discusses how devices can connect to the mother ship system. The first projects using Reload are mentioned, along with the development process. Challenges are outlined such as ensuring peace of mind for customers when temperatures fluctuate. Finally, questions from the audience are invited.
Scan & betal how do we do agile and what do we learn - reload 26 9-19Reload! A/S
Hej
The document discusses key performance indicators (KPIs) for Coop stores and their digital checkout options. It notes that Coop stores aim to be the most attractive places to shop and must remove friction to compete with online retailers. The goal is for customers to shop at their own pace without delays and bypass queues. It provides statistics on the number of stores, mobile checkout users, and transactions made using self-checkout options. It also discusses agile development processes and building digital products quickly to learn from outcomes.
Anders Hooge og Peter Tranevig fra Det Danske Spejderkorps fortæller om deres erfaring med at stå på kundesiden og arbejde tæt sammen med et bureau om en webløsning.
Magnus Christensson er partner i Reload. I denne præsentation fortæller han om hvordan vores organisationer og måden vi arbejder på forandres og udfordres, hvordan vi må arbejde sammen for at møde disse udfordringer og hvordan det at arbejde sammen stiller nye krav til lederskabet i vores organisationer.
Rune Huvendick Jensen er digital udviklingschef i Dansk Arkitektur Center. I denne præsentation fortæller han om hvordan de strategiske udviklingsprojekter han lavet sammen med Reload har påvirket DACs organisation og skubbet DACs digitale transformation i den rette retning.
Vi var inviteret til et lederseminar hos Statens Museum for Kunst i september, hvor vi gennemgik nogle af de mere agile og iterative udviklingstanker for den digitale grupper samt ledergruppen.
Her er slides fra dagen.
Dette er vores standard-præsentation omkring Reload og vores proces. Det handler om, hvem vi er, hvordan vi arbejder og hvorfor vi synes, at det giver mening.
Det handler om hvorfor en agil tilgang og en proces omkring fast pris og et minimumsscope (MVP) giver mening.
Læs mere på https://reload.dk/proces
The document discusses how to successfully implement agile and Scrum methodologies on projects, highlighting the importance of managing expectations, using the right tools like Jira and Greenhopper to plan sprints and track progress, and identifying the right projects and knowing when to walk away from projects that are not a good fit for an agile approach.
Bdd - how to solve communication problemsReload! A/S
1) The document discusses BDD (Behavior Driven Development) and how it can be used as a communication tool to align understanding between stakeholders. BDD involves having conversations about examples in order to explore requirements rather than just discussing abstract requirements.
2) Some exercises are provided to demonstrate how communication breakdowns can occur and how BDD techniques like conversation and examples help to prevent misunderstandings.
3) BDD is presented as being more about the conversations than just automating test cases. The goal is for stakeholders to understand why something needs to be built rather than just what should be built.
This document provides an overview of Reload, Danfoss' product-as-a-service platform. It introduces Reload and discusses how devices can connect to the mother ship system. The first projects using Reload are mentioned, along with the development process. Challenges are outlined such as ensuring peace of mind for customers when temperatures fluctuate. Finally, questions from the audience are invited.
Scan & betal how do we do agile and what do we learn - reload 26 9-19Reload! A/S
Hej
The document discusses key performance indicators (KPIs) for Coop stores and their digital checkout options. It notes that Coop stores aim to be the most attractive places to shop and must remove friction to compete with online retailers. The goal is for customers to shop at their own pace without delays and bypass queues. It provides statistics on the number of stores, mobile checkout users, and transactions made using self-checkout options. It also discusses agile development processes and building digital products quickly to learn from outcomes.
Anders Hooge og Peter Tranevig fra Det Danske Spejderkorps fortæller om deres erfaring med at stå på kundesiden og arbejde tæt sammen med et bureau om en webløsning.
Magnus Christensson er partner i Reload. I denne præsentation fortæller han om hvordan vores organisationer og måden vi arbejder på forandres og udfordres, hvordan vi må arbejde sammen for at møde disse udfordringer og hvordan det at arbejde sammen stiller nye krav til lederskabet i vores organisationer.
Rune Huvendick Jensen er digital udviklingschef i Dansk Arkitektur Center. I denne præsentation fortæller han om hvordan de strategiske udviklingsprojekter han lavet sammen med Reload har påvirket DACs organisation og skubbet DACs digitale transformation i den rette retning.
Vi var inviteret til et lederseminar hos Statens Museum for Kunst i september, hvor vi gennemgik nogle af de mere agile og iterative udviklingstanker for den digitale grupper samt ledergruppen.
Her er slides fra dagen.
Dette er vores standard-præsentation omkring Reload og vores proces. Det handler om, hvem vi er, hvordan vi arbejder og hvorfor vi synes, at det giver mening.
Det handler om hvorfor en agil tilgang og en proces omkring fast pris og et minimumsscope (MVP) giver mening.
Læs mere på https://reload.dk/proces
The document discusses how to successfully implement agile and Scrum methodologies on projects, highlighting the importance of managing expectations, using the right tools like Jira and Greenhopper to plan sprints and track progress, and identifying the right projects and knowing when to walk away from projects that are not a good fit for an agile approach.
Bdd - how to solve communication problemsReload! A/S
1) The document discusses BDD (Behavior Driven Development) and how it can be used as a communication tool to align understanding between stakeholders. BDD involves having conversations about examples in order to explore requirements rather than just discussing abstract requirements.
2) Some exercises are provided to demonstrate how communication breakdowns can occur and how BDD techniques like conversation and examples help to prevent misunderstandings.
3) BDD is presented as being more about the conversations than just automating test cases. The goal is for stakeholders to understand why something needs to be built rather than just what should be built.
2. Rikke Simonsen
rikke@reload.dk
Teknisk tester hos Reload! A/S
Oversat til dansk:
“Skriver specifikationer
sammen med kunden
og implementerer dem
som automatiserede tests”
torsdag den 5. december 13
2
3. Hvad vil jeg tale om?
torsdag den 5. december 13
3
9. Specifikationsdrevet udvikling
Hvorfor?
“Hvis du kan svare ja
på nogle af disse spørgsmål
så er det måske på tide
at overveje
at gøre jeres specifikationer
eksekverbare”
torsdag den 5. december 13
9
14. Testdrevet udvikling (TDD)
•
•
•
Ryd op i produktionskode
Ryd op i testkode
Kør test igen
•
•
torsdag den 5. december 13
•
•
Skriv en test der fejler
Kør den fejlende test
Skriv kode der implementerer funktionalitet og test
Kør test der passerer
14
16. Behavior Driven Development
BDD blev udviklet af Dan North i 2009
på baggrund af en række spørgsmål han stødte
på i testdrevet udvikling:
Hvor skal man starte i processen?
Hvad skal testes og hvad skal ikke?
Hvor meget skal man teste på een gang?
Hvad skal man kalde testene?
Hvordan tolker man en test der fejler?
torsdag den 5. december 13
16
17. Behavior Driven Development
Dan North foreslog at:
Unit test navne skulle være hele sætninger, der begyndte med
ordet "Should" og skulle skrives i den rækkefølge, der giver
mest værdi for forretningen.
Testbeskrivelsen skulle skrives som brugerhistorie:
"Som [ rolle ] vil jeg have [ funktion], så [ værdi ]."
Godkendelseskriterier skulle skrives i form af scenarier:
Givet [ indledende kontekst ] , når [ begivenhed indtræffer ], så
[ giv resultat ]
http://dannorth.net/whats-in-a-story/
torsdag den 5. december 13
17
22. •
Framework til at teste forretningsmæssige og funktionelle krav
•
Test skrives i det menneskelæsbare sprog Gherkin
•
Og eksekveres som automatiserede tests
•
Testene kan køres med eller uden browser
•
Der findes udvidelser der giver adgang til foruddefinerede
sætninger (kaldet steps)
torsdag den 5. december 13
22
24. Kør din første feature
Trin 4:
$bin/behat --init
Trin 5:
$vim features/your_first.feature
Feature: Your first feature
In order to start using Behat
As a manager or developer
I want to try
Scenario:
Given there is something
When I do something
Then I should see something
Trin 6:
torsdag den 5. december 13
$bin/behat your_first.feature
24
25. Skriv din test i Gherkin
Feature: [Title of the feature]
In order to [achieve some goal]
As a [user/role]
I want to [do action]
Background: [Optional
description]
Given [Precondition]
Scenario: [Optional description]
Given [Precondition]
When [Statement]
And [another statement]
Then [Postcondition]
But [another postcondition]
[more scenarios]
torsdag den 5. december 13
25
26. Skriv din test i Gherkin (på dansk)
Egenskab: [Titel på feature]
For at [opnå et givent mål]
Som [bruger/rolle]
Vil jeg have [feature]
Baggrund: [Valgfri beskrivelse]
Givet [Forudsætning]
Scenarie: [Valgfri beskrivelse]
Givet [Forudsætning]
Når [Erklæring]
Og [en anden erklæring]
Så [Postcondition]
Men [en anden postcondition]
[Flere scenarier]
torsdag den 5. december 13
26
27. Eksempel 1
Egenskab: Arrangementssøgning
For at kunne finde et arrangement
Som bruger
Vil jeg kunne søge på del af titel
Baggrund:
Givet arrangementet “Automatiseret test
af Drupal Sites med behat” eksisterer
Scenarie: Søgning på del af titel
Givet jeg er på siden “Arrangementer”
Når jeg søger efter arrangementer med
titlen “Behat”
Så skal søgningen returnere
arrangementet “Automatiseret test af
Drupal Sites med behat”
torsdag den 5. december 13
27
28. Eksempel 2
Egenskab: Arrangementssøgning
For at kunne finde et arrangement
Som bruger
Vil jeg kunne søge på del af titel
Baggrund:
Givet arrangementet “Automatiseret test
af Drupal Sites med behat” eksisterer
Scenarie: Søgning på del af titel
Givet jeg er på siden “/arrangementer”
Når jeg indtaster “Behat” i feltet
“#search”
Og jeg trykker på knappen “Søg”
Og jeg venter på at “Søgeresultat”
dukker op
Så skal jeg se teksten “Automatiseret test
af Drupal Sites med behat” i
“Søgeresultat” regionen
torsdag den 5. december 13
28
30. Behat parametre
Arguments:
features
Could be:
Feature(s) to run.
- a dir (features/)
- a feature (*.feature)
torsdag den 5. december 13
Options:
--format (-f)
How to format features. pretty is default.
Default formatters are:
- pretty: Prints the feature as is.
- progress: Prints one character per step.
- html: Generates a nice looking HTML report.
- junit: Generates a report similar to Ant+JUnit.
- failed: Prints list of failed scenarios.
--out
Write formatter output to a file/directory
instead of STDOUT (output_path).
--lang
Print formatter output in particular language.
--definitions (-d) Print all available step definitions:
- use -dl to just list definition expressions.
- use -di to show definitions with extended info.
- use -d 'needle' to find specific definitions.
Use --lang to see definitions in specific language.
--name
Only execute the feature elements which match
part of the given name or regex.
--tags
Only execute the features or scenarios with tags
matching tag filter expression.
--append-snippets Appends snippets for undefined steps into
main context.
--help (-h)
Display this help message.
--config (-c)
Specify config file to use.
--profile (-p)
Specify config profile to use.
30
32. Mink Extension
Given /^(?:|I )am on (?:|the )homepage$/
When /^(?:|I )go to "(?P<page>[^"]+)"$/
When /^(?:|I )press "(?P<button>(?:[^"]|")*)"$/
When /^(?:|I )follow "(?P<link>(?:[^"]|")*)"$/
When /^(?:|I )fill in "(?P<field>(?:[^"]|")*)" with "(?P<value>(?:[^"]|")*)"$/
When /^(?:|I )select "(?P<option>(?:[^"]|")*)" from "(?P<select>(?:[^"]|")*)"$/
When /^(?:|I )check "(?P<option>(?:[^"]|")*)"$/
When /^(?:|I )uncheck "(?P<option>(?:[^"]|")*)"$/
When /^(?:|I )attach the file "(?P[^"]*)" to "(?P<field>(?:[^"]|")*)"$/
Then /^(?:|I )should be on "(?P<page>[^"]+)"$/
Then /^(?:|I )should be on (?:|the )homepage$/
Then /^(?:|I )should see "(?P<text>(?:[^"]|")*)"$/
Then /^(?:|I )should not see "(?P<text>(?:[^"]|")*)"$/
Then /^the (?i)url(?-i) should match (?P<pattern>"([^"]|")*")$/
Then /^the response status code should be (?P<code>d+)$/
Then /^the checkbox "(?P<checkbox>(?:[^"]|")*)" is (?:unchecked|not checked)$/
Then /^print current URL$/
Then /^print last response$/
Then /^show last response$/
torsdag den 5. december 13
32
33. Mink Extension
// @Givet /^(?:|jeg )er på hjemmesiden$/
/**
* Opens homepage.
*
* @Given /^(?:|I )am on (?:|the )homepage$/
* @When /^(?:|I )go to (?:|the )homepage$/
*/
public function iAmOnHomepage()
{
$this->getSession()->visit($this->locatePath('/'));
}
torsdag den 5. december 13
33
34. Drupal Extension
Given /^I am viewing (?:a|an) "(?P<type>[^"]*)" node with the title "(?P<title>[^"]*)"$/
Given /^"(?P<type>[^"]*)" nodes:$/
Then /^I should be able to edit (?:a|an) "([^"]*)" node$/
Given /^(?:a|an) "(?P<vocabulary>[^"]*)" term with the name "(?P<name>[^"]*)"$/
Given /^users:$/
Given /^"(?P<vocabulary>[^"]*)" terms:$/
Then /^I should see the error message(?:| containing) "([^"]*)"$/
Then /^I should see the success message(?:| containing) "([^"]*)"$/
Given /^I run drush "(?P<command>[^"]*)" "(?P<arguments>[^"]*)"$/
Then /^drush output should contain "(?P<output>[^"]*)"$/
Given /^I press "(?P<button>[^"]*)" in the "(?P<region>[^"]*)"(?:| region)$/
Given /^(?:|I )fill in "(?P<value>(?:[^"]|")*)" for "(?P<field>(?:[^"]|")*)" in the
"(?P<region>[^"]*)"(?:| region)$/
Given /^I click "(?P<link>[^"]*)" in the "(?P<row_text>[^"]*)" row$/
Given /^the cache has been cleared$/
Given /^I run cron$/
torsdag den 5. december 13
34
35. Drupal Extension Drivers
Feature
Blackbox
Drush
Drupal API
Map Regions
Yes
Yes
Yes
Create users
No
Yes
Yes
Create nodes
No
No
Yes
Create vocabularies
No
No
Yes
Create taxonomy
terms
Run tests and site on
different servers
No
No
Yes
Yes
Yes
No
torsdag den 5. december 13
35