A1QA - Лекция - SMART Java Framework.pptx
- Количество слайдов: 21
SMART Framework
План лекции § Принципы построения фреймворка § Необходимость фреймворка § Структура фреймворка § Описание основных классов, которые должны присутствовать в любом фреймворке § Использование фреймворка www. a 1 qa. ru
SMART Framework: концепции § Фреймворк – это такая организация проекта, которая позволяет упростить разработку, поддержку и модификацию программного кода. ü Page Object Pattern ü Конфигурируемость ü Независимость и стабильность тестов ü Data-driven Testing www. a 1 qa. ru
SMART Framework: технологии § Java (1. 6) § Maven § Test. NG § Report. NG www. a 1 qa. ru
Преимущества SMART Framework § Гибкая конфигурация параметров фреймворка § Поддержка популярных браузеров (IE, FF, Chrome, Opera, Safari) § Простая адаптация для большинства веб-приложений § Поддержка взаимодействия с БД и почтовыми серверами § Интегрируемость с CI (Jenkins, Bamboo) § Удобный и простой формат отчетности www. a 1 qa. ru
Код теста без фреймворка 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. 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 Base. Form Button Custom Tests … Text. Box Custom Forms www. a 1 qa. ru
Java Framework: Base Entity Базовый класс от которого наследуется большинство классов фреймворка. Описывает методы самого высокого уровня: ü @Before. Class public void before(ITest. Context context) ü @After. Class public void after() ü protected String make. Screen(final Class extends Base. Entity> name) www. a 1 qa. ru
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 ü 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 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 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. 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 Абстрактный класс, описывающий базовые действия с элементом интерфейса приложения ü 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 Абстрактный класс, описывающий базовый методы работы с формами интерфейса приложения /** * 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 Абстрактный базовый класс теста, от которого наследуются все тесты. Класс содержит методы для старта и окончания теста. 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 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 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 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. ru www. a 1 qa. ru