Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 15 лет назад пользователемMikalai_Kardash
1 Инструментарий Разработчика Кардаш Николай red green refactor Agile
2 Что будем обсуждать Agile-Автоматизация Хорошие тесты Инструменты для тестирования
3 Что НЕ будем обсуждать Какой именно фреймворк для юнит тестирования круче? Какой tool круче?
4 Начнем?
5 Обычные средства автоматизации SilkTest WinRunner … Почему не подходят?
6 Обычные средства автоматизации Процесс
7 Обычные средства автоматизации [+] 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]+"/"+NameHierarc hy[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 (" ") [ ] 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
8 Обычные средства автоматизации Еще проблемы? – Знания по программированию – Лицензия – Не интересно
9 Agile-Инструментарий
10 Немедленный старт Тесты и реализация отдельно Best Practices Нормальные языки программирования Профессиональный рост
11 Agile-Инструментарий Немедленный старт
12 Agile-Инструментарий Тесты и реализация отдельно
13 Agile-Инструментарий Поощрять Best Practices
14 Agile-Инструментарий Профессиональный рост
15 Что можно тестировать? Интерфейс пользователяБизнес логикаДанные
16 Как начать писать тесты? Необходимо ответить на три вопроса: – Как тестируем? – Что тестируем? – Что ожидаем?
17 Бизнес логика приложения
18 Это программный код
19 От чего зависит тест? Базы данных Компоненты Сервисы Файлы Код
20 Какие бывают тесты? Модульный тест (unit) Системный тест (system) – Приемочные – Интеграционные – И т.д.
21 Как написать хороший тест? 1. Придумайте ему хорошее имя public void Я_очень_хороший_тест_потому_что_в_имени_много_букаф { //… } public void Класс_должен_уметь_сравнивать_пустые_значения_с_ _непустыми_причем_пустые_должны_быть_всегда_ниже() { //… } public void ИмяФункции_выдать_ArgumentNullException_если _передан_null() { //… }
22 Как написать хороший тест? 2. Стандартная структура! (1) Arrange (2) Act (3) Assert
23 Как написать хороший тест? 3. Тест – это код. Избегайте дублирования Проводите рефакторинг Проводите ревью тестов
24 Как написать хороший тест? 4. Независимость TEST
25 Как написать хороший тест? 5. Время выполнения теста
26 Тест фреймворки Семейство xUnit фреймворков – nUnit – mbUnit – xUnit – jUnit – jsUnit – … ну очень много.
27 Mock Object Frameworks Базы данных Компоненты Сервисы Файлы Код
28 Mock Object Frameworks Изолируют зависимости Базы данных Компоненты Сервисы Файлы Код
29 Demo
30 Данные
31 База данных SQL – это программный код тоже! Тест состоит из: 1234
32 Demo
33 Интерфейс пользователя
34 Хорошая, понятная архитектура – Шаблоны проектирования (MVC, MVP, Application Controller, Mediator, etc.) Архитектура в стиле «as designed»
35 Интерфейст пользователя Model View Controller (MVC) – Какие данные отображаются? View Controller Model
36 Интерфейст пользователя Архитектура в стиле «as designed» – Пишем приёмочные тесты 1.Устанавливаем приложение 2.Подготавливаем тестовые данные 3.Запускаем
37 Demo
38 Командная работа
39 Fitnesse
40 Demo
41 И так... Тестировать можно все! Важно – определить, какие средства удобны для вашей команды.
42 Вопросы?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.