Перейти к содержимому

Публикации Drenjy

7 публикаций создано Drenjy (учитываются публикации только с 26 апреля 2023)


#165902 Специалист по автоматическому тестированию ПО(Краснодар)

Отправлено автор: Drenjy 24 апреля 2018 - 08:58 в Работа/Росcия

Резюме присылайте на Anna.Afanaseva@south.rt.ru




#165901 Специалист по автоматическому тестированию ПО(Краснодар)

Отправлено автор: Drenjy 24 апреля 2018 - 07:38 в Работа/Росcия

Требуемый опыт работы: от 1 года.

 

Полная занятость, полный день.

 

ООО «Ростелеком-Интеграция» - интегратор программных решений, оказывает полный комплекс услуг по разработке и внедрению программных решений, обеспечивающих развитие и повышение эффективности бизнеса ОАО «Ростелеком».
Успешной работе компании способствует выбранная стратегия развития – курс на инновации, собственная экспертиза по всему спектру программных решений и аккумуляция интеллектуального потенциала лучших российских ИТ-специалистов.
ООО «Ростелеком-Интеграция» входит
в группу компаний ОАО «Ростелеком», создано в 2014 году.

Также ознакомиться с нашей компанией можно на нашем сайте http://www.rt-integration.ru/

 

Обязанности:

  • Анализ требований
  • Разработка планов по тестированию и тест-кейсов
  • Разработка автоматических тестов

Требования:

  • От года в области автоматического тестирования программного обеспечения
  • Знание и опыт применения различных методик тестирования
  • Опыт написания автоматических тестов для web-приложений
  • Опыт нагрузочного тестирования
  • Опыт тестирования интеграционных сервисов
  • Знание Java/Python/javascript будет рассматриваться как преимущество
  • Selenium, JMeter
  • SOAP UI/Postman
  • Опыт работы с базой данных.

Условия:

  • Оформление в штат компании ООО "Ростелеком-Интеграция";
  • Полностью "белая" заработная плата: оклад + премия 20%
  • Работа в дружном коллективе;
  • ДМС после испытательного срока, включая стоматологию;
  • Работа в одной из ведущих компаний на российском рынке телекоммуникаций;
  • Корпоративное обучение;
  • Офис находится в г. Краснодар
  • Полная занятость, полный день
  • Курсы, сертификации за счет компании.
  • Карьерный и профессиональный рост.
Адрес
Краснодар, Центральный микрорайон, Красная улица, 59



#160900 Нужна помощь по BeforeClass TestNg dataProvider

Отправлено автор: Drenjy 04 июля 2017 - 19:28 в Автоматизированное тестирование

 

Привет, форумчане. Снова нужна ваша помощь!.

 

Есть тесты, для которых использую дата провайдер, получающий данные из Json файла.

Хотелось бы перед начало класса, запускать проверку на существование данных.

Вот как у меня построено.

public class DocumentTests extends TestBase {
    private final BillData billData;
    AddCustomerBill addCustomerBill = new AddCustomerBill();

    @Factory(dataProviderClass = DataProviderForTests.class, dataProvider = "validBillsFromJson")
    public DocumentTests(BillData billData){
        this.billData=billData;
    }
    @BeforeClass
    public void checkBillForUser(BillData billData) throws InterruptedException {
        app.getUserHelper().loginAs(USER);
        if (app.getUserHelper().userHasBill(billData.getNumber() + " " + billData.getCompanyname())) {
            return;
        }
        app.getUserHelper().logout();
        addCustomerBill.addPersonalAccount(billData);
    }

    @Test(dataProviderClass = DataProviderForTests.class, dataProvider = "validBillsFromJson")
    public void selectBill(BillData billData) {
            app.getUserHelper().loginAs(USER);
            app.getSubdivisionPage().openSubdivisionWin();
            app.getSubdivisionPage().searchBill(billData.getNumber());
            app.getSubdivisionPage().selectSubdivisionBy(billData.getNumber() + " " + billData.getCompanyname());
        if (app.getUserHelper().userHasBill(billData.getNumber() + " " + billData.getCompanyname()) == false) {
            System.out.println("Счёт не найден: " + billData);
        }
    }

    @Description("Проверяем наличие элементов на странице")
    @Test(dataProviderClass = DataProviderForTests.class, dataProvider = "validBillsFromJson")
    public void assertOneTimeOrderPageElements(BillData billData) {
        app.getUserHelper().loginAs(USER);
        selectBill(billData);
            app.getSubdivisionPage().closeWindow();
            app.getNavigationHelper().toDocuments();
.....
}

@BeforeTest как я понимаю, не позволяет использовать параметры.

@Factory отрабатывает нормально, а после всё падает с ошибкой:

org.testng.TestNGException: 
Can inject only one of <ITestContext, XmlTest> into a BeforeClass annotated checkBillForUser.

Подскажите пожалуйста, какое решение более верное?




#160191 Нужна помощь с раскрытием всех элементов дерева меню

Отправлено автор: Drenjy 22 мая 2017 - 07:35 в Автоматизированное тестирование

1. Тебе надо грамотно подобрать локаторы, т.к. в каждом меню добавляются новые div, то нужно, использовать "//". Как-то так

2.

equals("width: 16px; height: 16px; background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAX0lEQVR42t2TwQkAMQgE07w95JtPIKWkCsGfEH2kgQ25EhQO7qaAYdHdgiTlx4I5J/becUHvHWMMiEhcYGZorYGZY4LLWgu1Vrh7THBRVRDRk+jdBOkbpL6Q7sF3tnAAAyDoFbr+8FgAAAAASUVORK5CYII=\") 0px 0px no-repeat;"

 

Это вообще жесть какая-то, постарайся не привязываться к стилю или хотя бы используй contains

3. Тоже странная строка

String opentree= element.getAttribute("style");

 

 

В строковую переменную opentree  записываешь стиль элемента ....

Виктор, спасибо. Про "contains" я и забыл совсем :(
Да, приходится использовать такой ужас т.к страница генерируется автоматически из Б.Д и Java, Вообще странная конструкция, но что есть... С while - пожалуй именно то, что нужно!




#160107 Нужна помощь с раскрытием всех элементов дерева меню

Отправлено автор: Drenjy 16 мая 2017 - 07:06 в Автоматизированное тестирование

Привет, форумчане! Снова нужна ваша помощь. Есть дерево меню,
http://joxi.ru/J2beaDQFkYzvm6
По xpath (.//*[@name='org_struct_admin1']//table/tbody/tr/td[1]/img) нахожу все элементы которые мне нужны,
клик делаю если стиль соответствует закрытому меню.
Нужно раскрывать все элементы, что бы просмотреть содержимое и найти нужное.
Сделал вот такую конструкцию:

 public void openStructureTree(){
        List<WebElement> elements=driver.findElements(By.xpath(".//*[@name='org_struct_admin1']//table/tbody/tr/td[1]/img"));
        for (WebElement element:elements){
            String opentree= element.getAttribute("style");
            System.out.println("Значение для элементов: "+element.getAttribute("style"));
        if (opentree.equals("width: 16px; height: 16px; background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAX0lEQVR42t2TwQkAMQgE07w95JtPIKWkCsGfEH2kgQ25EhQO7qaAYdHdgiTlx4I5J/becUHvHWMMiEhcYGZorYGZY4LLWgu1Vrh7THBRVRDRk+jdBOkbpL6Q7sF3tnAAAyDoFbr+8FgAAAAASUVORK5CYII=\") 0px 0px no-repeat;")) {
            
            click(By.xpath(".//*[@name='org_struct_admin1']//table/tbody/tr/td[1]/img"));
        }
        }
    }

Понятное дело, нажимается первый найденный элемент.
Проблема в том, что каждое меню это добавление новых div, например

Первый элемент - .//*[@name='org_struct_admin1']/div[5]/div/div[2]/table/tbody/tr/td[1]/img

Второй элемент- .//*[@name='org_struct_admin1'']/div[5]/div/div[2]/div/div/table/tbody/tr/td[1]/img

Следовательно не получится замутить что-то вроде div["+i+i"]
Понимаю, что нужно записать найденный элемент с нужным стилем, и клик произвести именно по нему, но вот как это сделать технически, я пока не придумал.




#159994 Нужен совет по качественному переиспользованию кода в тестах

Отправлено автор: Drenjy 03 мая 2017 - 13:12 в Автоматизированное тестирование

В идеале, нужно разбить этот тест на много. Несколько ассертов в одном тесте, да еще в цикле - это не считается нормальным.

  1. Делаем по 1 тесту на каждое поле.
  2. Что мы ожидаем в поле type, мы не знаем? Должны знать, если известны входные данные к тесту. Или если это покрыто другими тестами, тогда надо хотя бы проверить, что там список допустимых типов документов, а не абракадабра. Можно это вынести в отдельный метод, возвращающий booleаn, и делать assertTrue(). (И зачем вообще дата провайдер, если там одно значение?)
  3. Лучше не делать ассерт в цикле, а собрать информацию в список, и в конце сравнить список с эталонным. Так можно вывести в лог более полную информацию.

Если не хватает ресурсов, чтобы проверить всё по отдельности, то нам нужен по крайней мере максимум информации в логе. Надо убрать все ассерты, собрать всю информацию по таблице, вывести в лог, сравнить с эталоном, вывести все несовпадения, и уже в конце сделать 1 ассерт, что несовпадений > 0.

Спасибо! Подумаю над Вашим решением.




#159971 Нужен совет по качественному переиспользованию кода в тестах

Отправлено автор: Drenjy 02 мая 2017 - 11:23 в Автоматизированное тестирование

Сам тест

@DataProvider
    public Object[][] type() {
        return new Object[][]{
                {ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ}
        };
    }
    @DataProvider
    public Object[][] status() {
        return new Object[][]{
                {ДАННЫЕЗАУКАЗАННЫЙПЕРИОД}
        };
    }
    @Test(priority = 4)
    public void testFilterByDataPeriod() {
        app.getUserHelper().loginAs(USER);
        app.getUserHelper().isLoggedInAs(USER);
        app.getNavigationHelper().toDocuments();
        app.getOrderedDocumentsPage().selectLSfromSelectList("130-Б102 ЗАО \"Секретно\"");
        app.getOrderedDocumentsPage().getOrderedDocList();
        //Ручной ввод даты не работает
       // app.getOrderedDocumentsPage().filterByDate("01.04.2017","30.04.2017");
        app.getOrderedDocumentsPage().filterByDocType(ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ);
        app.getOrderedDocumentsPage().filterByStatus(ДАННЫЕЗАУКАЗАННЫЙПЕРИОД);
        app.getOrderedDocumentsPage().showSearchResult();//Просто клик по копне "Показать"
        app.getOrderedDocumentsPage().assertFilterOrderedDocuments(ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ,ДАННЫЕЗАУКАЗАННЫЙПЕРИОД);
    }

Фильтр по типу аналогичен с фильтр по типу

public void filterByStatus(Status status) {
        click(By.xpath("//*[@name=\"Список 2\"]/div[2]"));
        switch (status) {
            case НЕТДАННЫХ:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Нет данных']/div")).click();
                break;
            case ВОБРАБОТКЕ:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='В обработке']/div")).click();
                break;
            case ОТПРАВЛЕН:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Отправлен']/div")).click();
                break;
            case ОШИБКА:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Ошибка']/div")).click();
                break;
            case ДАННЫЕЗАУКАЗАННЫЙПЕРИОД:
                driver.findElement(By.xpath(".//div[@class='uniapp input-field select__opt' and @title='Данные за указанный период не найдены']/div")).click();
                break;
        }
    }

Основная проблема здесь.

public void assertFilterOrderedDocuments(Type type,Status status) {
        List<WebElement> elements=driver.findElements(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[1]/td[1]/div/span"));
        int i=1;
        for (WebElement element:elements) {
            String doc_type = element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[" + i + "]/td[3]/div/span")).getText();
            String doc_period=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[" + i + "]/td[4]/div/span")).getText();
            String doc_status=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText();
            String doc_delivery=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText();
            String doc_format=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr[1]/td["+i+"]/div/span")).getText();
            String doc_LS=element.findElement(By.xpath("//*[@name='GRID_DOCUMENTS']/table[1]/tbody[1]/tr["+i+"]/td[5]/div/span")).getText();
            i++;
            assertEquals(doc_type,type);
            assertEquals(doc_period, "01.01.2017 - 31.01.2017, 01.02.2017 - 28.02.2017, 01.03.2017 - 31.03.2017, 01.10.2016 - 31.10.2016, 01.11.2016 - 30.11.2016, 01.12.2016 - 31.12.2016");
            assertEquals(doc_status, status);
            assertEquals(doc_delivery, "Andrey.Samoylov@south.rt.ru");
            assertEquals(doc_format, "PDF");
            assertEquals(doc_LS, "ЛС: 8451651");
        }

Суть проблемы:

1) Понятное дело сейчас в сравнении получается подстановка "ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ", что приводит к результату:

Expected :ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ
Actual   :Счет-фактура, Счет, Расшифровка счета, Акт выполненных работ

Какие есть способы для подстановки мне требуемых данных, например алиас, что-то вроде: если выбран -"ПАКЕТФИНАНСОВЫХДОКУМЕНТОВ" то ожидается текст .... и т.д
2) Вообще не уверен в верности решения в методе "assertFilterOrderedDocuments", возможно есть более элегантные решения?