Эффект SpecFlow Алёна Попова IndyCode Вторая конференция.NET разработчиков
План 1.Что такое тестовый сценарий? 2.Схема работы тестов 3.Пример, как было до SpecFlow (демо) 4.Откуда взялся SpecFlow у нас (демо) 5.История развития проекта SpecFlow 6.Преимущества использования
Что такое тестовые сценарии? Система Функция 1 Описание использования 1 Описание использования 2 Функция 2 Описание использования 1
Схема работы тестов База данных xUnit Web-приложение Тестовый сценарий 1 Тестовый сценарий 2 … Selenium
Реализация тестового сценария [ExtendedFact] public void UserCanLogOn() { const string userPassword = "123"; Account user = EmployeeWorkspaceDatabase.AddUser(Configuration.GenerateUniqueLogin(), Configuration.GenerateUniqueName(), Configuration.GenerateUniqueName(), userPassword); Website.LogOn(user.Login, userPassword); Website.VerifyTextPresent(StringConstants.PersonalPage); Website.VerifyTextPresent(user.ShortName); AssertExtensions.HasLog(user, AuthorizationActType.LogIn, DateTime.Now); }
Проблемы этой реализации 1.Неуправляемый код в тестах 2.Сценарий и код в одном 3.Сценарий на C# приходится переводить на живой язык
Решение проблем
Тот же сценарий на огурце Фича: Log On Ввeсти корректный логин и корректный пароль. Предыстория: Дано заходим на форму авторизации Сценарий: ввeсти корректный логин и корректный пароль Дано добавляем пользователя в базу данных И вводим корректный логин И вводим корректный пароль Когда пользователь нажимает кнопку Вход Тогда пользователь попадает в личный кабинет
Демо
Преимущества 1.Разделение сценария и кода 2.Разделение работы по написанию сценария и его реализации 3.Сценарии на языке заказчика 4.Повторное использование шагов
В процессе внедрения – оптимизация кода После – оптимизация самих сценариев
Демо для продвинутых Параметры Структура сценариев
SpecFlow и CI
Спасибо за внимание Алёна Попова IndyCode