BDD para projetos
.NET
Por que?
Facilidade
Facilidade
Praticidade
Facilidade
Praticidade
Lingua nativa
Facilidade
Praticidade
Lingua nativa (ou quase isso)
Testes end-to-end
Testes end-to-end
Como assim?
Testes end-to-end
Interface Controller Repositorio
BD
Testes end-to-end
Interface Controller Repositorio
BD
User (browser)
Testes end-to-end
Interface Controller Repositorio
BD
User (browser)
Testa todas as camadas
Ferramentas
Ferramentas?
Ferramentas
Selenium
Ferramentas
Selenium (browser)
Ferramentas
Selenium (browser)
SpecFlow
Ferramentas
Selenium (browser)
SpecFlow (solução BDD)
Ferramentas
Selenium (browser)
SpecFlow (solução BDD)
NUnit
Ferramentas
Selenium (browser)
SpecFlow (solução BDD)
NUnit (framework de testes - asserções)
Sintaxe
Sintaxe
Feature file:
Sintaxe
Feature file:
Feature: Login
In order to access my account
As a user of the website
I want to log into the website...
Sintaxe
Feature file:
Feature: Login
In order to access my account
As a user of the website
I want to log into the website...
Sintaxe
Feature file:
Feature: Login
In order to access my account
As a user of the website
I want to log into the website...
Sintaxe
Feature file:
Feature: Login
In order to access my account
As a user of the website
I want to log into the website...
Sintaxe
Feature file:
Feature: Login
In order to access my account
As a user of the website
I want to log into the website...
Sintaxe
Sintaxe
Resultado:
Sintaxe
Resultado:
Sintaxe
Sintaxe
Vamos incrementar esse teste!
Sintaxe
Feature file:
Feature: Login
In order to access my account
As a user of the website
I want to log into the website...
Sintaxe
Resultado:
Sintaxe
xtrumanx
P@55w0Rd
O que testar?
O que testar?
O que for importante
O que testar?
O que for importante
E porque não tudo?
Testes de aceitação tendem:
Testes de aceitação tendem:
1. Difícil escrita
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
3. Execução lenta
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
3. Execução lenta
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
3. Execução lenta
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
3. Execução lenta
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
3. Execução lenta
4. Feedback demorado
Testes de aceitação tendem:
1. Difícil escrita
2. Difícil manutenção
3. Execução lenta
4. Feedback demorado
Cenário ideal:
Cenário ideal:
*quase* ideal
Cenário ideal:
ideal
Por que?
Feedback rápido é importante
Por que?
Feedback rápido é importante
Por que?
Feedback rápido é importante
Por que?
Feedback rápido é importante
Sugestão
Sugestão
http://www.infoq.com/br/presentations/o-que-nao-testar
Upcoming SlideShare
Loading in...5
×

BDD in .NET projects

135

Published on

Talk presented to Atlântico Team.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
135
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

BDD in .NET projects

  1. 1. BDD para projetos .NET
  2. 2. Por que?
  3. 3. Facilidade
  4. 4. Facilidade Praticidade
  5. 5. Facilidade Praticidade Lingua nativa
  6. 6. Facilidade Praticidade Lingua nativa (ou quase isso)
  7. 7. Testes end-to-end
  8. 8. Testes end-to-end Como assim?
  9. 9. Testes end-to-end Interface Controller Repositorio BD
  10. 10. Testes end-to-end Interface Controller Repositorio BD User (browser)
  11. 11. Testes end-to-end Interface Controller Repositorio BD User (browser) Testa todas as camadas
  12. 12. Ferramentas
  13. 13. Ferramentas?
  14. 14. Ferramentas Selenium
  15. 15. Ferramentas Selenium (browser)
  16. 16. Ferramentas Selenium (browser) SpecFlow
  17. 17. Ferramentas Selenium (browser) SpecFlow (solução BDD)
  18. 18. Ferramentas Selenium (browser) SpecFlow (solução BDD) NUnit
  19. 19. Ferramentas Selenium (browser) SpecFlow (solução BDD) NUnit (framework de testes - asserções)
  20. 20. Sintaxe
  21. 21. Sintaxe Feature file:
  22. 22. Sintaxe Feature file: Feature: Login In order to access my account As a user of the website I want to log into the website Scenario: Logging in with valid credentials Given I am at the login page When I fill in the following form | field | value | | Username | xtrumanx | | Password | P@55w0Rd | And I click the login button Then I should be at the home page
  23. 23. Sintaxe Feature file: Feature: Login In order to access my account As a user of the website I want to log into the website Scenario: Logging in with valid credentials Given I am at the login page When I fill in the following form | field | value | | Username | xtrumanx | | Password | P@55w0Rd | And I click the login button Then I should be at the home page Feature definition:
  24. 24. Sintaxe Feature file: Feature: Login In order to access my account As a user of the website I want to log into the website Scenario: Logging in with valid credentials Given I am at the login page When I fill in the following form | field | value | | Username | xtrumanx | | Password | P@55w0Rd | And I click the login button Then I should be at the home page [Binding] class LoginStepDefinitions { [Given("I am at the login page")] public void GivenIAmAtTheLoginPage() { // TODO } } Feature definition:
  25. 25. Sintaxe Feature file: Feature: Login In order to access my account As a user of the website I want to log into the website Scenario: Logging in with valid credentials Given I am at the login page When I fill in the following form | field | value | | Username | xtrumanx | | Password | P@55w0Rd | And I click the login button Then I should be at the home page [Binding] class LoginStepDefinitions { [Given("I am at the login page")] public void GivenIAmAtTheLoginPage() { // TODO } } Feature definition:
  26. 26. Sintaxe Feature file: Feature: Login In order to access my account As a user of the website I want to log into the website Scenario: Logging in with valid credentials Given I am at the login page When I fill in the following form | field | value | | Username | xtrumanx | | Password | P@55w0Rd | And I click the login button Then I should be at the home page [Binding] class LoginStepDefinitions { [Given("I am at the login page")] public void GivenIAmAtTheLoginPage() { driver.Navigate.GoToUrl("www.gmail.com") } } Feature definition:
  27. 27. Sintaxe
  28. 28. Sintaxe Resultado:
  29. 29. Sintaxe Resultado: Sintaxe
  30. 30. Sintaxe Vamos incrementar esse teste!
  31. 31. Sintaxe Feature file: Feature: Login In order to access my account As a user of the website I want to log into the website Scenario: Logging in with valid credentials Given I am at the login page When I fill in the following form | field | value | | Username | xtrumanx | | Password | P@55w0Rd | And I click the login button Then I should be at the home page [Binding] class LoginStepDefinitions { [When("I fill in the following form")] public void WhenIFillInTheFollowingForm(TechTalk.SpecFlow.Table table) { foreach(var row in table.Rows) { var textField = driver.FindElement(By.Id(row["field"])); if(!textField.Exists) Assert.Fail("Expected to find a text field with the name of '{0}'.", row["field"]); textField.TypeText(row["value"]); } } } Feature definition:
  32. 32. Sintaxe Resultado: Sintaxe xtrumanx P@55w0Rd
  33. 33. O que testar?
  34. 34. O que testar? O que for importante
  35. 35. O que testar? O que for importante E porque não tudo?
  36. 36. Testes de aceitação tendem:
  37. 37. Testes de aceitação tendem: 1. Difícil escrita
  38. 38. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção
  39. 39. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção 3. Execução lenta
  40. 40. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção 3. Execução lenta
  41. 41. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção 3. Execução lenta
  42. 42. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção 3. Execução lenta
  43. 43. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção 3. Execução lenta 4. Feedback demorado
  44. 44. Testes de aceitação tendem: 1. Difícil escrita 2. Difícil manutenção 3. Execução lenta 4. Feedback demorado
  45. 45. Cenário ideal:
  46. 46. Cenário ideal: *quase* ideal
  47. 47. Cenário ideal: ideal
  48. 48. Por que? Feedback rápido é importante
  49. 49. Por que? Feedback rápido é importante
  50. 50. Por que? Feedback rápido é importante
  51. 51. Por que? Feedback rápido é importante
  52. 52. Sugestão
  53. 53. Sugestão http://www.infoq.com/br/presentations/o-que-nao-testar
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×