'

Инструментарий Разработчика

Понравилась презентация – покажи это...





Слайд 0

Инструментарий Разработчика Кардаш Николай red green refactor Agile


Слайд 1

Что будем обсуждать Agile-Автоматизация Хорошие тесты Инструменты для тестирования


Слайд 2

Что НЕ будем обсуждать Какой именно фреймворк для юнит тестирования круче? Какой tool круче?


Слайд 3

Начнем?


Слайд 4

Обычные средства автоматизации SilkTest WinRunner … Почему не подходят?


Слайд 5

Обычные средства автоматизации Процесс


Слайд 6

Обычные средства автоматизации [+] appstate ActTestStart() basedon none //none [-] if(!ActivTestAdministration.exists()) [ ] ActivTestAdministration.Invoke() [-] else [ ] ActivTestAdministration.SetActive() [ ] [+] appstate AfterSuperLogin() basedon ActTestStart [ ] ActivTestAdministration.SetActive() [ ] LogIn.Invoke() [ ] ConnectionType = LogIn.Connection.ConnectionTable.RadioWebService.GetContents()[GetConnecType] [ ] Login(System, Administrator, Server, ConnectionType) [ ] ActivTestAdministration.SetActive() [ ] [ ] ////-----------------------//TesCases//--------------------------------------- [ ] //------------------------------------------------------------------------- [-] //Testcases for WinAdminShell [+] testcase TLoginFirst()appstate AfterSuperLogin [-] do [ ] ActivTestAdministration.Help.Contents.Pick() [ ] ActivTestAdministrationShell.Close() [ ] ActivTestAdministration.Exit() [-] except [ ] Print("Failed") [ ] ActivTestAdministration.Exit() [ ] [ ] [+] testcase TLogout() appstate none [-] do [ ] Logout() [-] except [ ] Print("Failed") [ ] [ ] [+] testcase TCreateHierarhy()appstate SystemAdministratorStart [-] do [ ] SuperUser = SystemAdministration.VerticalSplitter.SWFSplitter.HierarchyPanel.OrganisationalHierarchy.GetContents()[1] [ ] RecoveryInfo.HierarchyLevel = SuperUser [ ] CreateHNode(IDHierarchy[1], NameHierarchy[1]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1] [ ] CreateHNode(IDHierarchy[2], NameHierarchy[2]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2] [ ] CreateHNode(IDHierarchy[3], NameHierarchy[3]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3] [ ] CreateHNode(IDHierarchy[4], NameHierarchy[4]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4] [ ] CreateHNode(IDHierarchy[5], NameHierarchy[5]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4]+"/"+NameHierarchy[5] [ ] [ ] EditTestCentreLab() [ ] [ ] EditTestCentreLab() [ ] [ ] CreateHNode(IDHierarchy[6], NameHierarchy[6]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4]+"/"+NameHierarchy[5]+"/"+NameHierarchy[6] [ ] SystemAdministration.VerticalSplitter.SWFSplitter.HierarchyPanel.OrganisationalHierarchy.Select (SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4]) [ ] CreateHNode(IDHierarchy[7], NameHierarchy[7]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4]+"/"+NameHierarchy[7] [ ] SystemAdministration.VerticalSplitter.SWFSplitter.HierarchyPanel.OrganisationalHierarchy.Select (SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4]) [ ] CreateHNode(IDHierarchy[8], NameHierarchy[8]) [ ] RecoveryInfo.HierarchyLevel = SuperUser+"/"+NameHierarchy[1]+"/"+NameHierarchy[2]+"/"+NameHierarchy[3]+"/"+NameHierarchy[4]+"/"+NameHierarchy[8] [ ] [ ] ActivTestAdministration.Exit() [-] except [ ] Print("Failed") [ ] ActivTestAdministration.Exit() [ ] [+] testcase TManageUserAttributes()appstate UserAttributesStart [-] do [ ] UserAttributes() [ ] ActivTestAdministration.Exit() [-] except [ ] Print("Failed") [ ] ActivTestAdministration.Exit() [ ] [+] testcase TCreateUKAdmin()appstate SystemAdministratorStart [-] do [ ] CreateAdministrator(SuperUser+"/"+NameHierarchy[1], ukadmin, ukadmin, NameHierarchy[1], "Admin", ukadmin, 1, NonePermission) [ ] ActivTestAdministration.Exit() [-] except [ ] Print("Failed") [ ] ActivTestAdministration.Exit() [ ] [ ] [+] testcase TPackageInstallation()appstate ActTestStart [-] do [ ] ActivTestAdministration.SetActive() [ ] LogIn.Invoke() [ ] ConnectionType = LogIn.Connection.ConnectionTable.RadioWebService.GetContents()[GetConnecType] [ ] Login(ukadmin, ukadmin, Server, ConnectionType)//Change login information [ ] //-------------------------------------------------------- [ ] Agent.SetOption (OPT_WINDOW_TIMEOUT, 1500) [ ] ActivTestAdministration.SetActive() [ ] PackageInstallation(Packages)//Change path to the packages [ ] Agent.SetOption (OPT_WINDOW_TIMEOUT, 15) [ ] ActivTestAdministration.Exit() [-] except [ ] Print("Failed") [ ] ActivTestAdministration.Exit() [ ] [ ] [ ] [+] testcase TPacAssignment()appstate ActTestStart [-] do [ ] ActivTestAdministration.SetActive() [ ] LogIn.Invoke() [ ] ConnectionType = LogIn.Connection.ConnectionTable.RadioWebService.GetContents()[GetConnecType] [ ] Login(ukadmin, ukadmin, Server, ConnectionType)//Change login information [ ] ActivTestAdministration.Edit.SystemAdministration.Pick () [ ] SystemAdministration.VerticalSplitter.SWFSplitter.HierarchyPanel.OrganisationalHierarchy.TypeKeys ("<#Times>") [ ] int tmp [-] for (tmp = 2; tmp < (ListCount(NameHierarchy)-1); ++tmp) [ ] RecoveryInfo.HierarchyLevelNum = tmp [-] do [ ] SystemAdministration.SetActive () [ ] SystemAdministration.Tools.PackageAssignment.Pick () [-] if(PackageAssignment.Exists()) [ ] PackageAssignment() [-] else


Слайд 7

Обычные средства автоматизации Еще проблемы? Знания по программированию Лицензия Не интересно


Слайд 8

Agile-Инструментарий


Слайд 9

Agile-Инструментарий Немедленный старт Тесты и реализация отдельно Best Practices Нормальные языки программирования Профессиональный рост


Слайд 10

Agile-Инструментарий Немедленный старт


Слайд 11

Agile-Инструментарий Тесты и реализация отдельно


Слайд 12

Agile-Инструментарий Поощрять Best Practices


Слайд 13

Agile-Инструментарий Профессиональный рост


Слайд 14

Что можно тестировать? Интерфейс пользователя Бизнес логика Данные


Слайд 15

Как начать писать тесты? Необходимо ответить на три вопроса: Как тестируем? Что тестируем? Что ожидаем?


Слайд 16

Бизнес логика приложения


Слайд 17

Бизнес логика приложения Это программный код


Слайд 18

От чего зависит тест? Базы данных Компоненты Сервисы Файлы Код


Слайд 19

Какие бывают тесты? Модульный тест (unit) Системный тест (system) Приемочные Интеграционные И т.д.


Слайд 20

Как написать хороший тест? Придумайте ему хорошее имя public void Я_очень_хороший_тест_потому_что_в_имени_много_букаф { //… } public void Класс_должен_уметь_сравнивать_пустые_значения_с_ _непустыми_причем_пустые_должны_быть_всегда_ниже() { //… } public void ИмяФункции_выдать_ArgumentNullException_если _передан_null() { //… }


Слайд 21

Как написать хороший тест? Стандартная структура! (1) Arrange (2) Act (3) Assert


Слайд 22

Как написать хороший тест? Тест – это код. Избегайте дублирования Проводите рефакторинг Проводите ревью тестов


Слайд 23

Как написать хороший тест? Независимость TEST TEST TEST TEST TEST TEST TEST TEST


Слайд 24

Как написать хороший тест? Время выполнения теста


Слайд 25

Тест фреймворки Семейство xUnit фреймворков nUnit mbUnit xUnit jUnit jsUnit … ну очень много.


Слайд 26

Mock Object Frameworks Базы данных Компоненты Сервисы Файлы Код


Слайд 27

Mock Object Frameworks Изолируют зависимости Базы данных Компоненты Сервисы Файлы Код


Слайд 28

Demo


Слайд 29

Данные


Слайд 30

База данных SQL – это программный код тоже! Тест состоит из: 1 2 3 4


Слайд 31

Demo


Слайд 32

Интерфейс пользователя


Слайд 33

Интерфейс пользователя Хорошая, понятная архитектура ? Шаблоны проектирования (MVC, MVP, Application Controller, Mediator, etc.) Архитектура в стиле «as designed»


Слайд 34

Интерфейст пользователя Model View Controller (MVC) Какие данные отображаются? View Controller Model


Слайд 35

Интерфейст пользователя Архитектура в стиле «as designed» Пишем приёмочные тесты Устанавливаем приложение Подготавливаем тестовые данные Запускаем


Слайд 36

Demo


Слайд 37

Командная работа


Слайд 38

Командная работа Fitnesse


Слайд 39

Demo


Слайд 40

И так... Тестировать можно все! Важно – определить, какие средства удобны для вашей команды.


Слайд 41

Вопросы?


×

HTML:





Ссылка: