Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Андрей Ганин «Автоматизация, ожидания и реальность»

DotNetRu
October 25, 2018

Андрей Ганин «Автоматизация, ожидания и реальность»

Многие сталкивались с автоматизацией тестирования, кто-то этим занимался, кого-то это обошло, но у всех возникают вопросы: что и зачем нужно автоматизировать и кто же должен заниматься разработкой автотестов? В своём докладе Андрей расскажет зачем стоит внедрять BDD, при чём тут овощи и с чего можно начать процесс автотестирования.

DotNetRu

October 25, 2018
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. 1

  2. 2

  3. 4

  4. 5

  5. 7

  6. Проверка требований Доработка ПО Сокращение времени Программный продукт • Бизнес

    требования • Пользовательские требования • Функциональные требования Цикл разработки ПО 8
  7. 9

  8. 11

  9. 12

  10. 13

  11. 14

  12. 15

  13. 16

  14. 17

  15. 18

  16. 19

  17. 21

  18. 22

  19. 23

  20. 24

  21. 25

  22. 26

  23. 29

  24. public IWebDriver browser { get; set; } using OpenQA.Selenium; [BeforeScenario]

    public void BeforeScenario() { browser = new ChromeDriver(); } [AfterScenario] public void AfterScenario() { browser.Quit(); } 30
  25. using OpenQA.Selenium; [BeforeScenario] public void BeforeScenario() { browser = new

    ChromeDriver(); } [AfterScenario] public void AfterScenario() { browser.Quit(); } 30 public IWebDriver browser { get; set; }
  26. using OpenQA.Selenium; [BeforeScenario] public void BeforeScenario() { browser = new

    ChromeDriver(); } [AfterScenario] public void AfterScenario() { browser.Quit(); } // POST /session 30 public IWebDriver browser { get; set; }
  27. using OpenQA.Selenium; [BeforeScenario] public void BeforeScenario() { ChromeOptions chromeOptions =

    new ChromeOptions(); chromeOptions.AddArgument( "--headless" ); chromeOptions.AddArgument( "--disable-gpu" ); chromeOptions.AddArgument( "--window-size=1920,1080" ); browser = new ChromeDriver(chromeOptions); } Without UI 31 public IWebDriver browser { get; set; }
  28. Selenium Code WebDriver (HTTP Server) Browser (IE/Chrome/Firefox/Safari) POST /session GET

    /status DELETE /session /:sessionId POST /session /:sessionId /timeouts /implictic wait GET /session /:sessionId /url 32
  29. [StepDefinition(@"я открываю веб-страницу '(.+)'")] public void StepDef_I_OpenSite( string site )

    { browser.Navigate().GoToUrl( "http://"+site ); } // GET /session/:sessionid/url 33
  30. [Given(@"я ввожу в поле '(.+)' веб-страницы значение '(.+)'")] public void

    Given_I_Input_Into_Field_By( string element, string value ) { var Page_Element = Web.GetPageObjectElement( element ); if( Page_Element != null ) { Page_Element.Clear(); Page_Element.SendKeys( value ); } else { Assert.Fail( "Элемент '{0}' не был найден", element ); } } 34
  31. [Then(@"элемент '(.+)' отображается на веб-странице")] public void Then_I_View_With_Element_By( string element

    ) { var Page_Element = Web.GetPageObjectElement( element ); if( Page_Element != null ) { Assert.IsTrue( Page_Element.Displayed ); } else { Assert.Fail( "Элемент '{0}' не был найден", element ); } } 35
  32. [Scope( Tag = "WebService" )] [When(@"я вызываю метод \""(.+)\"" веб-сервиса

    \""(.+)\"" с JSON запросом:")] public void When_I_SendToWS_JSON( string method, string url, string json ) { var json = SharedDefs.ReplaceVariables( json, ( val ) => HttpUtility.JavaScriptStringEncode( Reflection.ConvertObject< string >( val ) ), ( val ) => $"{{{val}}}" ); SharedDefs.WS_lastResponse = new SharedDefs.WebMethodResponse( WebServiceRaw.CallWebServiceMethod_Raw( url, method, WebServiceType.REST, json ) ); } 36
  33. 37

  34. 37

  35. SpecFlow Feature A Scenario I Background … Given … When

    … Then … Clean up test data Upgrade database Clean up test data Setup test data Scenario II Background … Given … When … Then … Clean up test data Setup test data Step: Given … Operati on Feature B Scenario I Background … Given … When … Then … Page 1 Component Action A Action B Action C Page 2 Component Action D Action E Action F Selenium Chrome(Chrome Driver) 38
  36. Gherkin Scenario C# + Specflow Database MQ message Web Services

    Desktop WEB UI Build + Run Test Model Winium Selenium Ibm.mq.dll Native metod Native metod Local PC *Nix Server Jenkins Node Jenkins 39
  37. 47