Скачать презентацию SMART Framework План лекции Принципы построения Скачать презентацию SMART Framework План лекции Принципы построения

A1QA - Лекция - SMART Java Framework.pptx

  • Количество слайдов: 21

SMART Framework SMART Framework

План лекции § Принципы построения фреймворка § Необходимость фреймворка § Структура фреймворка § Описание План лекции § Принципы построения фреймворка § Необходимость фреймворка § Структура фреймворка § Описание основных классов, которые должны присутствовать в любом фреймворке § Использование фреймворка www. a 1 qa. ru

SMART Framework: концепции § Фреймворк – это такая организация проекта, которая позволяет упростить разработку, SMART Framework: концепции § Фреймворк – это такая организация проекта, которая позволяет упростить разработку, поддержку и модификацию программного кода. ü Page Object Pattern ü Конфигурируемость ü Независимость и стабильность тестов ü Data-driven Testing www. a 1 qa. ru

SMART Framework: технологии § Java (1. 6) § Maven § Test. NG § Report. SMART Framework: технологии § Java (1. 6) § Maven § Test. NG § Report. NG www. a 1 qa. ru

Преимущества SMART Framework § Гибкая конфигурация параметров фреймворка § Поддержка популярных браузеров (IE, FF, Преимущества SMART Framework § Гибкая конфигурация параметров фреймворка § Поддержка популярных браузеров (IE, FF, Chrome, Opera, Safari) § Простая адаптация для большинства веб-приложений § Поддержка взаимодействия с БД и почтовыми серверами § Интегрируемость с CI (Jenkins, Bamboo) § Удобный и простой формат отчетности www. a 1 qa. ru

Код теста без фреймворка IWeb. Driver driver = new Firefox. Driver(); driver. navigate(). to( Код теста без фреймворка IWeb. Driver driver = new Firefox. Driver(); driver. navigate(). to("http: //www. google. com/"); IWeb. Element query = driver. find. Element(By. Name("q")); query. send. Keys("Cheese"); query. submit(); Web. Driver. Wait wait = new Web. Driver. Wait(driver, Time. Span. From. Seconds(10)); wait. until((d) => { return d. title. to. Lower(). starts. With("cheese"); }); System. console. write. Line("Page title is: " + driver. title); driver. quit(); www. a 1 qa. ru

Код теста с фреймворком log. Step(); Google. Page search = new Google. Page(); search. Код теста с фреймворком log. Step(); Google. Page search = new Google. Page(); search. Search. By. Text(search. Text); log. Step(); Results. Page results = new Results. Page(); log. Step(); results. assert. Link. Is. Present(search. Text); www. a 1 qa. ru

Структура SMART Framework Utils Logger Base Entity Common Browser Functions Base. Element Base. Test Структура SMART Framework Utils Logger Base Entity Common Browser Functions Base. Element Base. Test Base. Form Button Custom Tests … Text. Box Custom Forms www. a 1 qa. ru

Java Framework: Base Entity Базовый класс от которого наследуется большинство классов фреймворка. Описывает методы Java Framework: Base Entity Базовый класс от которого наследуется большинство классов фреймворка. Описывает методы самого высокого уровня: ü @Before. Class public void before(ITest. Context context) ü @After. Class public void after() ü protected String make. Screen(final Class name) www. a 1 qa. ru

Java Framework: Browser Factory Класс выбора и инициализации экземпляра браузера. Имплементирует Factory pattern public Java Framework: Browser Factory Класс выбора и инициализации экземпляра браузера. Имплементирует Factory pattern public static Remote. Web. Driver set. Up(final Browsers type){ … case FIREFOX: … Firefox. Profile ff. Profile = new Firefox. Profile(); try { Java. Script. Error. add. Extension(ff. Profile); } catch (IOException e) { … } driver = new Firefox. Driver(new Firefox. Binary(), ff. Profile, capabilities. Proxy); break; } driver = new Firefox. Driver(capabilities. Proxy); break; www. a 1 qa. ru

Java Framework: Browser Класс описывает взаимодействие с экземпляром браузера, расширяя возможности стандартного Webdriver ü Java Framework: Browser Класс описывает взаимодействие с экземпляром браузера, расширяя возможности стандартного Webdriver ü public static Browser get. Instance() ü private static void init. Properties() ü public Remote. Web. Driver get. Driver() ü public void navigate(final String url) ü public void wait. For. Page. To. Load() ü public void refresh() ü public void select. New. Window() ü public void exit() www. a 1 qa. ru

Java Framework: Logger Класс применяется для реализации расширенного логирования. Имплементирует Singleton pattern ü public Java Framework: Logger Класс применяется для реализации расширенного логирования. Имплементирует Singleton pattern ü public static synchronized Logger get. Instance() ü public void log. Test. Name(final String test. Name) ü public void step(final int step) ü public void info(final String message) ü public void warn(final String message) ü public void error(final String message) ü public void fatal(final String message) www. a 1 qa. ru

Java Framework: Common Functions Класс предоставляет набор статических функций общего назначения ü public static Java Framework: Common Functions Класс предоставляет набор статических функций общего назначения ü public static String regex. Get. Match(String text, String regex) ü public static String get. Current. Date(String pattern) ü public static String get. Timestamp() ü public static String format. Date(Date date, String pattern) ü public static Date increase. Date. By. XDays(final Date date, final int days) ü public static String escape. Meta. Characters(final String text) ü public static void center. Mouse() ü public static void away. Mouse() www. a 1 qa. ru

Java Framework: Utils Пакет Utils содержит набор вспомогательных классов: § public class Data. Base. Java Framework: Utils Пакет Utils содержит набор вспомогательных классов: § public class Data. Base. Utils extends Base. Entity ü Описывает взаимодействие с базами данных § public class Http. Utils extends Base. Entity ü Описывает работу с HTTP запросами § public class Image. Magic. Util extends Base. Entity ü Описывает работы с графическими изображениями § public class Mail. Utils extends Base. Entity ü Описывает взаимодействие с почтовыми серверами www. a 1 qa. ru

Java Framework: Base Element Абстрактный класс, описывающий базовые действия с элементом интерфейса приложения ü Java Framework: Base Element Абстрактный класс, описывающий базовые действия с элементом интерфейса приложения ü public Remote. Web. Element get. Element() ü public boolean is. Enabled() ü public By get. Locator() ü public String get. Name() ü public void wait. For. Is. Element. Present() ü public void send. Keys(Keys key) ü public void click. Via. Action() ü public void click. Ext() ü public void double. Click() www. a 1 qa. ru

Java Framework: Base Form Абстрактный класс, описывающий базовый методы работы с формами интерфейса приложения Java Framework: Base Form Абстрактный класс, описывающий базовый методы работы с формами интерфейса приложения /** * Contructor * @param locator Locator * @param form. Title Name */ protected Base. Form(final By locator, final String form. Title) { init(locator, form. Title); assert. Is. Open(); } www. a 1 qa. ru

Java Framework: Base Test Абстрактный базовый класс теста, от которого наследуются все тесты. Класс Java Framework: Base Test Абстрактный базовый класс теста, от которого наследуются все тесты. Класс содержит методы для старта и окончания теста. public abstract void run. Test(); @Test public void x. Test() throws Throwable ü Base. Test. Param ü Base. Test. Data. Driven www. a 1 qa. ru

Использование фреймворка public class Login. Test extends Productive. Base. Test { private Users. Controller Использование фреймворка public class Login. Test extends Productive. Base. Test { private Users. Controller users = Users. Controller. get. Instance(); public void run. Test() { Login. Form login. Form = new Login. Form(); User admin = users. get. User. By. Index(User. Type. ADMIN, 2); Log. Step(); Welcome. Form welcome. Form = login. Form. login. New. Account(admin. get. Login(), admin. get. Password()); Log. Step(); welcome. Form. assert. Is. Opened(); } www. a 1 qa. ru

Использование фреймворка public class Login. Form extends Base. Form { private final Text. Box Использование фреймворка public class Login. Form extends Base. Form { private final Text. Box txb. Login = new Text. Box(By. id("input. Username"), "Username"); private final Text. Box txb. Password = new Text. Box(By. id("input. Password"), "Password"); … /** * Constructor by default */ public Login. Form() { super(By. id("input. Username"), "Login Page"); } … www. a 1 qa. ru

Использование фреймворка /** * Performs login action for new accounts * @param user User Использование фреймворка /** * Performs login action for new accounts * @param user User Login * @param pwd User Password * @return Welcome Form */ public Welcome. Form login. New. Account(final String user, final String pwd) { do. Login(user, pwd); return new Welcome. Form(); } … public void do. Login(final String user, final String pwd) { txb. Login. set. Text(user); txb. Password. set. Text(pwd); btn. Login. click. And. Wait(); } www. a 1 qa. ru

Спасибо Contact us 5910 Countryard Drive, Ste. 170 Austin, TX 78731 info@a 1 qa. Спасибо Contact us 5910 Countryard Drive, Ste. 170 Austin, TX 78731 info@a 1 qa. ru www. a 1 qa. ru