Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Jenkins pipeline запускается циклично, не дожидаясь прохождения сборки



Software-Testing.Ru - портал тестировщиков  

Новые темы форума тестировщиков


Jenkins pipeline запускается циклично, не дожидаясь прохождения сборки
2018-08-07 08:59

Всем привет. 

Есть два репозитория в gitlab один с основным проектом, второй репозиторий с автотестами.

Создан Jenkins pipeline, со следующими конфигурациями:

Build triggers:

    Poll SCM Schedule: * * * * * (то есть проверять изменения каждую минуту).

В разделе Pipeline указан репозиторий основного проекта: 

Definition: Pipeline script from SCM

SCM: Git

Repositories:

   Repository URL: https://gitlab.com/App/Application.git

   Credentials: Creds/******

Branches to build:

   Branch Specifier (blank for 'any'): */master

Repository browser: Auto

Script Path: pipelines/Jenkinsfile

 

Содержимое Jenkinsfile примерно следующее:

try {
    node('Slave') {
        stage('Build') {
            dir('Backend') {
                git url: "https://$gitRepo", branch: 'master', credentialsId: gitlabCredentialsId

                def commitHash = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
                version = "${getDateTime()}-$commitHash"

                sh 'chmod +x gradlew && ./gradlew clean build --no-daemon'


                withCredentials([usernamePassword(credentialsId: gitlabCredentialsId,
                        passwordVariable: 'GITLAB_PASSWORD', usernameVariable: 'GITLAB_USERNAME')]) {
                    sh("docker login $registryName -u $GITLAB_USERNAME -p $GITLAB_PASSWORD")
                }

                docker.withRegistry("https://$registryName") {
                    def image = docker.build(imageName)
                    image.push(version)
                    image.push('latest')
                }
                sh 'docker system prune -af || true'
            }
        }

        stage('Integration tests') {
            dir('Autotests') {
                try {
                    url: "https://$autotestsGitRepo", branch: 'master', credentialsId: gitlabCredentialsId

                    withCredentials([usernamePassword(credentialsId: gitlabCredentialsId,
                            passwordVariable: 'GITLAB_PASSWORD', usernameVariable: 'GITLAB_USERNAME')]) {
                        sh("docker login $registryName -u $GITLAB_USERNAME -p $GITLAB_PASSWORD; docker-compose pull backend; docker-compose up -d")
                        waitUntilAppIsUp(localhost)
                        sh('./gradlew clean test')
                    }

                } finally {
                    sh("docker-compose down")
                    step([$class: 'JUnitResultArchiver', keepLongStdio: true, testResults: 'build/test-results/test/*.xml'])
                }
            }
        }

        stage('Staging deployment') {
            withCredentials([usernamePassword(credentialsId: gitlabCredentialsId,
                    passwordVariable: 'GITLAB_PASSWORD', usernameVariable: 'GITLAB_USERNAME')]) {
                sshagent(credentials: [sshInstanceCredentialsId]) {
                    dir('Backend') {
                        sh "scp -o StrictHostKeyChecking=no docker-compose.yml $instanceHost:"
                        sh "ssh -o StrictHostKeyChecking=no $instanceHost 'docker login $registryName -u $GITLAB_USERNAME -p $GITLAB_PASSWORD; docker-compose pull backend; docker-compose up -d'"
                        waitUntilAppIsUp(stagingHost)
                    }
                }
            }
        }
    }
} catch (e) {
    throw e
}

Вкратце - сначала приложение клонируется из репозитория основного проекта на jenkins слэйве,  билдится, собирается в докер образ и пушится в докер регистри.

Второй этап это клонирование репозитория с автотестами тоже на jenkins слэйв, далее из докер регистри пулится образ с приложением и разворачивается с помощью docker-compose. После чего запускаются автотесты с помощью команды ./gradlew clean test.

Третий этап заходим по ssh на стэйджинг и разворачиваем там приложение.

 

Суть вопроса:

Когда делаю мерж в мастер в основном проекте Application, через минуту проверяется, что есть изменения и сборка запускается, как и должно быть и проходит или падает один раз.

Но если я делаю мерж в мастер в другом репозитории - в проекте автотестов Autotests, то сборка запускается как и должна через 1 минуту, далее не дожидается пока пройдёт сборка запускается через минуту ещё одна(та же самая), потому через минуту ещё одна(та же самая) и так до бесконечности, пока хотя бы одна сборка не пройдёт или не упадёт. Кто нибудь с этим сталкивался? Как это исправить. Не совсем понимаю почему отслеживается автотестовый репозиторий на изменения, если в Repository URL указан репозиторий основного проекта https://gitlab.com/App/Application.git.



Семь типов тестировщиков
2018-08-07 11:00

Автор: Джеймс Бах (James Bach)

Оригинал статьи: http://www.satisfice.com/blog/archives/893

Перевод: Ольга Алифанова

 

Большая часть моей работы посвящена обучению, тренировке и оценке тестировщиков. Как гуманисту, мне хочется применить тут эвристику разнообразия: наши различия могут сделать команду сильнее. Это означает, что я не могу выбрать один-единственный тип тестировщиков и оценивать людей согласно этому шаблону. С другой стороны, я вижу интересные модели навыков и темперамента у тестировщиков, и имеет смысл обсудить эти модели в широком ключе. Да, все снежинки различаются, но также верно, что все снежинки похожи друг на друга.

 

Итак, я выделяю как минимум семь различных типов тестировщиков: административный, технический, аналитический, социальный, эмпатический тестировщик, пользователь и разработчик. Когда я начну углубляться в объяснения, я хочу, чтобы вы поняли следующее: это модель, а не тюрьма. Это кластеры эвристик или – в некоторых случаях – ролей. Ваш стиль работы или ситуация могут подходить для нескольких моделей сразу.

 

Читать статью полностью...



QA lead Казань
2018-08-07 11:38

В команду тестировщиков (7 человек) компании MAXIMA г. Казань (в офис в штат) ищем руководителя отдела тестирования,который сможет возглавить и развивать команду, в то же время сможет быть инженером, который не только тестирует приложения, но и влиять на качество процессов и продукта

Чем предстоит заниматься:

  • Руководство группой тестировщиков (6 человек)
  • Планирование, реализация и контроль тестовых активностей
  • Тестирование серверного приложения (API сервера, БД)
  • Тестирование клиентских приложений (десктопных, веб и мобильных)
  • Ревью функциональных спецификаций, взаимодействие с аналитиками


Необходимые навыки:

  • Опыт организации процесса тестирования
  • Опыт фронтэнд и бэкэнд тестирования сложных систем
  • Опыт автоматизированного тестирования
  • Опыт работы с реляционными СУБД, знание SQL
  • Экспертные знания видов, техник, инструментов тестирования и практический опыт их применения
  • Умение и желание доводить дело до конца

Плюсами будут:

  • Знание фреймворков Microsoft UI Automation, Selenium
  • Опыт тестирования платежных систем
  • Опыт изменения CI/CD процессов в соответствии с потребностями тестирования
  • Сертификация ISTQB

 

Мы предлагаем:

  • Комфортный, просторный офис в собственном здании.
  • Охраняемая авто- и велопарковка во дворе здания.
  • Свой спортзал (тренажёры, железо, беговая дорожка, мешок) с душем, настольный теннис.
  • Кафе, кухня с соками/кофе/чаем.
  • ДМС после испытательного срока.
  • Оплачиваемые конференции/курсы после испытательного срока.
  • Курсы английского языка.
  • Помощь с релокацией для иногородних.

Контакты:  MAXIMA ул. Габдуллы Тукая 125

Вопросы по телефону 8 937 622 52 58 или WhatsApp

Telegram @MariaNabieva

 



Selenium java не всегда срабатывает findElements
2018-08-07 14:37

Здравствуйте!

 

Суть моей программы в том, что она должна каждые две секунды обновлять страницу сайта и и парсить с нее  одну строку.

 

Вот, собственно, код части программы, в которой возникает проблема:

 

while(true) {        

      driver.get("адрес сайта");

     number = driver.findElements(By.tagName("b"));   // записываем в список элементы с тегом b
     string = number.get(2).getText();                             // записываем в строку текст элемента с индексом 2

        if (string.trim().length() == 0) {                             // проверяем если строка пустая, то выводим в консоль ошибку

                    System.out.println("ошибка");
        } else{
                 System.out.println(string);                         // если же нет, то выводим в консоль строку
        }

           try {
             Thread.sleep(2000);                                     //останавливаем на 2 секунды
        } catch (Exception e){};

}

    Дело в том, что строка иногда остается пустой и в консоль выводится "ошибка", но в основном все работает как надо (в консоль выводится строка)

 

    То есть, 20 раз в консоль может вывестись строка как положено, а потом раз 5 ошибка, дальше все снова продолжает работать как нужно

    

    Буду благодарен если кто-нибудь поможет решить проблему.

 

 

 

 



Quality Analyst (Москва/МО)
2018-08-07 14:59
В российский офис компании Wiley (крупная американская издательская компания, www.wiley.com) приглашается Quality Analyst
Офис расположен по адресу г. Королёв, Дзержинского, 29. 
 
 

Responsibilities and skills:

∙ Analyze requirements/use cases and determine test cases needed.

∙ Prepare and maintain all test deliverables including but not limited to test plans, test scenarios, and test cases.

∙ Testing approach and activities should comply with the selected flavor of iterative and incremental software development process.

∙ Detect and report a large variety of issues to ensure smooth and quick resolution through the development lifecycle.

∙ Perform all testing activities on complex web and mobile architectures.

∙ Provide proper level of communicating up accomplishments, issues, and suggested ways of resolving these issues.

∙ Knowledge of and experience with tool sets necessary for requirements management, test management, and issues tracking.

∙ Experience with multiple test case management tools (RQM, HP, Jira Plugins).

∙ Experience with requirements and defect management test tools (JIRA).

∙ Experience with agile and other software development methodologies.

∙ English (reading &writing).

 

Corporate benefits:

∙ Opportunities for professional and career growth.

∙ Compliance with Russian labor Law.

∙ Corporate medical insurance.

∙ Sports activities and corporate events.

∙ Technical and business related trainings.

∙ Friendly atmosphere.

∙ English classes.

∙ Salary will be discussed individually with the successful candidate.

 

О компании. 

Компания John Wiley & Sons, Inc. (www.wiley.com) является стабильной (более 200 лет успешной истории бизнеса) транснациональной компанией. На сегодняшний день в нашей компании работают более 5000 сотрудников, офисы компании открыты в США, Канаде, Великобритании, Дании, Германии, России, а также в Азиатском и Тихоокеанском регионах. Головной офис компании расположен в городе Хобокен (США).

 

Основными направлениями работы копании является публикация научного и технического контента, предоставление сервисов для образовательных, научных учреждений и исследовательских компаний по всему миру. В настоящее время наиболее быстро развивающимся направлением работы компании является публикация контента и предоставление информационных сервисов в электронном виде.

 

Наиболее известные бренды компании: For Dummies, Bloomberg Press, Sybex, Pfeiffer. В мае 2006 Wiley стала официальным партнёром Microsoft для публикации всех Microsoft Official Academic Course по всему миру.

 

Мы следуем стратегии найма только лучших специалистов на рынке и предоставления сотрудникам долгосрочных перспектив роста. Многие сотрудники продолжают работать в нашей компании более 10-15 лет.

 

Отвечу на все вопросы: itincorp@gmail.com , +7 (916) 0722958 (WhatsApp, Telegram, Viber), Skype: valeriya390 
Крылова Валерия, рекрутер компании Wiley

 



Selenium Webdriver Java. Цикл If
2018-08-07 17:07

Добрый день!

Возник вопрос как записать цикл if на Selenium. Необходимо сравнить значение в ячейке x и заданное число c, если они равны, то задается значение ячейке y, иначе выходим из цикла.

 

Char c =1234;

WebElement x = driver.findElement(By.id("example"));  //находим ячейку x
 System.out.println(x.getAttribute("value")); // получаем значение x
WebElement y = driver.findElement(By.id("example2")); // находим ячейку y

Я пыталась написать цикл :

   if (x=c)

          { y== значениедляy

          }

Но Selenium ругается ( и правильно, наверно, делает), что  не может сравнить значение WebElement и char (если изменить на int, то тоже не проходит), но если писать через Assert: Assert.assertEquals(x, c);, то никакой ошибки нет. Это странно или так и должно быть? Только начала изучать Selenium и программировать, поэтому вопросов пока больше, чем ответов)



Как уменьшить количество вызовов классов?
2018-08-07 21:58

Всем доброго времени суток.

С недавних пор работаю авто-тестировщиком, пишу тесты на java и selenium webdriver, в процессе изучения того и другого. 
В данный момент у меня возник вопрос ответ на который мне в данный момент совершенно неочевиден, а проблема стоит остро и в дальнейшем неизбежно будет прогрессировать.. очень прошу помочь с решением.

Я написал что-то вроде надстройки над селениумом, которая выглядит следующим образом:

есть, скажем, класс Element который определяет наличие элемента или нескольких на странице, а так же некоторых их свойств
от него наследуются классы типа Tools (каждый из которых содержит методы для работы с определенными элементами), затем их все собирает через композицию еще один класс, и от него уже наследуются все классы отождествляемые с непосредственно вебстраницами которые я тестирую.

Иерархически схема в данный момент выглядит так:
class A

class B extends A

class C extends B

class Buttons extends C

class Breadcrumbs extends C

class Table extends C

...

class Page собирает все что после C (там около полутора десятка элементов каждому из которых посвящен отдельный класс)
и от Page как раз наследуются все тестируемые "страницы".

В данный момент все отлично работает (с точки зрения затраченного на тесты времени), но.. я поместил в конструктор каждого класса код вида System.out.println("init classname"); и ужаснулся количеству инициализаций этих классов, сообщений об инициализации в консоли больше трех десятков. :(

С ростом кода во вспомогательных страницах а так же с количеством тестов или тестируемых страниц мне кажется что вся эта конструкция грозит неоправданным расходом ресурсов тестовой машины, или дикими тормозами при прогонах.

У меня устойчивое ощущение что я что-то делаю не так, и что количество инициализаций можно значительно сократить или вообще свести к одному-единственному.
Подскажите пожалуйста, что можно для этого сделать? Буду рад любым предложениям или советам.



© 2010 | Software-Testing.Ru


В избранное