Size: a a a

QA — Автоматизация

2020 February 26

AV

Alexei Vinogradov in QA — Автоматизация
Можно же достать 100 рублей положить в конвертик "за хлеб". И тогда не надо будет кошелёк доставать на кассе.
источник

AV

Alexei Vinogradov in QA — Автоматизация
А если в второй конвертик "за жвачку" положить - то вообще ж экономия двойная.
источник

AV

Alexei Vinogradov in QA — Автоматизация
Vel
понял, спасибо. А вот этот метод как ребята выше советовали, сдеать инициализацию всех страниц в TestBase? Он избыточен?
Когда инициализация пустая - то что вы рассчитываете сэкономить? Переливать из пустого в порожнее на 10% быстрее?)
источник

AV

Alexei Vinogradov in QA — Автоматизация
Не надо бездумно следовать паттернам, это называется карго-культ
источник

AV

Alexei Vinogradov in QA — Автоматизация
Инициализацию пытаются сделать один раз вместо 10, когда она ресурсоёмкая - чтобы сэкономить эти ресурсы. На пустой инициализации ничего не экономится, только код раздувается
источник

V

Vel in QA — Автоматизация
Я как то запутался, по сути разница олно и другого метода выгдятит так:
new Form()
       .selectM(m)
       .selectE(e);
new Navigation().scrollUpTill(blabla);
new Asserts().shouldBeExactTexts(“bla”);

или

form.selectM(m)
       .selectE(e);
navigation.scrollUpTill(blabla);
asserts.shouldBeExactTexts(“bla”);
источник

AV

Alexei Vinogradov in QA — Автоматизация
Да, оно одинаково выглядит
источник

S

Sergey Sergey in QA — Автоматизация
Artem Bondar
@pleh4nov кстати я заметил что у тебя Content-type не правильно написан. Type должен быть с большой буквы. Может в этом ошибка
спасибо, еще раз все проверю
источник

AK

Andrey K in QA — Автоматизация
Vel
Я как то запутался, по сути разница олно и другого метода выгдятит так:
new Form()
       .selectM(m)
       .selectE(e);
new Navigation().scrollUpTill(blabla);
new Asserts().shouldBeExactTexts(“bla”);

или

form.selectM(m)
       .selectE(e);
navigation.scrollUpTill(blabla);
asserts.shouldBeExactTexts(“bla”);
Приведу пример, как у нас.
1) Есть глобальная переменная в SetUp:
public ApplicationManager app;

2) Есть его создание в SetUp (у нас класс называется TestBase):
app = ApplicationManager.GetInstance();

3) GetInstance() не создает его каждый раз:
if (!app.IsValueCreated)
           {
               ApplicationManager newInstanse = new ApplicationManager(true);
               app.Value = newInstanse;
           }
           return app.Value;

4) Во всех тестах наследование идет от TestBase:
public class SomeTests : TestBase

5) Если же какие-то тесты требуют предварительных действий, то для этих действий создается класс:
public class ActionBefore_ForOthersTests : TestBase

А тесты, где эти действия требуются выглядят так:
public class OthersTests : ActionBefore_ForOthersTests

Таким образом ApplicationManager есть везде. А вот уже в нём созданы экземпляры всех хелперов, что позволяет обращаться к ним внутри тестов:
app.Helper_1.DoThis();
app.Helper_2.DoThat();
источник

МЧ

Михаил Черепанов in QA — Автоматизация
Народ, подскажите пожалуйста, кто сталкивался с интеграцией снапшотов в selenium webdriver + testNG? Посоветуйте литературу, и по возможности примеры, что то в инете совсем не могу найти...
источник

V

Vyacheslav in QA — Автоматизация
Andrey K
Приведу пример, как у нас.
1) Есть глобальная переменная в SetUp:
public ApplicationManager app;

2) Есть его создание в SetUp (у нас класс называется TestBase):
app = ApplicationManager.GetInstance();

3) GetInstance() не создает его каждый раз:
if (!app.IsValueCreated)
           {
               ApplicationManager newInstanse = new ApplicationManager(true);
               app.Value = newInstanse;
           }
           return app.Value;

4) Во всех тестах наследование идет от TestBase:
public class SomeTests : TestBase

5) Если же какие-то тесты требуют предварительных действий, то для этих действий создается класс:
public class ActionBefore_ForOthersTests : TestBase

А тесты, где эти действия требуются выглядят так:
public class OthersTests : ActionBefore_ForOthersTests

Таким образом ApplicationManager есть везде. А вот уже в нём созданы экземпляры всех хелперов, что позволяет обращаться к ним внутри тестов:
app.Helper_1.DoThis();
app.Helper_2.DoThat();
Имхо, немного неправильно сравнивать инициализацию утильных классов и объектов аля пейдж обжект
источник

AK

Andrey K in QA — Автоматизация
Vyacheslav
Имхо, немного неправильно сравнивать инициализацию утильных классов и объектов аля пейдж обжект
Вполне это допускаю. Сам я как-то не оценил пока PO...
источник

V

Vel in QA — Автоматизация
Andrey K
Приведу пример, как у нас.
1) Есть глобальная переменная в SetUp:
public ApplicationManager app;

2) Есть его создание в SetUp (у нас класс называется TestBase):
app = ApplicationManager.GetInstance();

3) GetInstance() не создает его каждый раз:
if (!app.IsValueCreated)
           {
               ApplicationManager newInstanse = new ApplicationManager(true);
               app.Value = newInstanse;
           }
           return app.Value;

4) Во всех тестах наследование идет от TestBase:
public class SomeTests : TestBase

5) Если же какие-то тесты требуют предварительных действий, то для этих действий создается класс:
public class ActionBefore_ForOthersTests : TestBase

А тесты, где эти действия требуются выглядят так:
public class OthersTests : ActionBefore_ForOthersTests

Таким образом ApplicationManager есть везде. А вот уже в нём созданы экземпляры всех хелперов, что позволяет обращаться к ним внутри тестов:
app.Helper_1.DoThis();
app.Helper_2.DoThat();
Ну это по прниципу как в курсе Баранцева я проходил. Но также я видел примеры Виноградова где прямо в тесте создаются нужные экземпляры )) Вот эта разница меня и смущает
источник

V

Vyacheslav in QA — Автоматизация
Vel
Ну это по прниципу как в курсе Баранцева я проходил. Но также я видел примеры Виноградова где прямо в тесте создаются нужные экземпляры )) Вот эта разница меня и смущает
Так вроде уже написали, если логика сложная, то делаешь слой  steps, и там все будет инициализироваться. Логика простая, делаешь прям в тесте.
источник

N

Nikita in QA — Автоматизация
Artem Bondar
не правильно это как то.. не знаю почему именно, но не правильно. Не надо тебе создавать каждый раз новый объект, если ты его уже создал и можешь просто использовать в тестах. Работать то будет, но создавать новый оъект в каждом тесте для одного и того же класса это не правильно. Пусть Баранцев раскажет почему )
А в гриде как запускать будете?
У вас если от одного драйвера наследоваться будет - все тесты побегут в одной инстанции драйвера
источник

AB

Artem Bondar in QA — Автоматизация
Nikita
А в гриде как запускать будете?
У вас если от одного драйвера наследоваться будет - все тесты побегут в одной инстанции драйвера
не знаю.. во временя когда я был на Силениуме и использовал Селениду, там возиться с драйвером не надо было. И тесты запускали просто на SauceLabs без возьни с Гридом
источник

AB

Artem Bondar in QA — Автоматизация
сейчас на Сайпресе вообще не надо забивать голову этой ерундой
источник

AS

Andrei Solntsev in QA — Автоматизация
Artem Bondar
сейчас на Сайпресе вообще не надо забивать голову этой ерундой
Ну да, фломастер лучше кирпича. :)
Это другого класса инструмент, со своими плюсами и минусами.
источник

AB

Artem Bondar in QA — Автоматизация
Andrei Solntsev
Ну да, фломастер лучше кирпича. :)
Это другого класса инструмент, со своими плюсами и минусами.
Согласен )) но я назад в силениум больше ни ногой )
источник

AB

Artem Bondar in QA — Автоматизация
они кстати пару недель назад релизнули новую версию 4.0 с поддержкой Firefox.
источник