четверг, 10 октября 2013 г.

Слайдкаст «10 принципов Agile тестировщика»

       Замечательный вдохновляющий слайдкаст от Андрея Дзыни «10 принципов Agile тестировщика». Вроде бы все перечисленные правила очевидны сами по себе, но к каждому пункту даются хорошие советы и рекомендации (где прочитать про техники тест-дизайна, как задавать вопросы программистам...). Все очень хорошо и по существу.

       Вот сами правила:
  1. Быть смелым и решительным
  2. Задавать неудобные вопросы
  3. Обладать техническими знаниями
  4. Дружить с программистом
  5. Знать все практики тест дизайна
  6. Исследовать и экспериментировать
  7. Смотреть по сторонам
  8. Заряжать духом тестирования
  9. Приносить ценность продукту
  10. Постоянно улучшаться

четверг, 12 сентября 2013 г.

Zabbix: Срабатывание триггера для net.tcp.service

      Еще немного про zabbix…

      Нужно было создать триггер, который бы срабатывал, если сервис не отвечает более 5 минут.
      Вроде бы логично предположить, что триггер будет выглядеть так:
            net.tcp.service[http,,8080].last(300)=0
      Но это решение неверно, т.к. в описании функции триггера last сказано, что параметр сек – игнорируется.

      А правильно использовать avg() вместо last():
            net.tcp.service[http,,8080].avg(300)=0

      В таком виде триггер будет работать именно так, как нам и нужно.

среда, 28 августа 2013 г.

Когда ищешь, смотри по сторонам...

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

      Почему так происходит? Может быть zabbix не воспринимает перевод на новую строку? Может быть нужно использовать в шаблоне сообщения какой-то особый символ для переноса строки? Или это какой-то баг zabbix?..

      Сначала я пыталась как-нибудь изменить шаблон, чтобы переносы в получаемом сообщении отображались корректно. Так как успехом это не закончилось, то я решила поискать решение в интернете, вдруг кто-то с этим тоже столкнулся? Но ничего конкретного найти не удалось…

      А через некоторое время я обнаружила, в чем была причина. Я просто не там ее искала! Видимо из-за того, что с zabbix я работала впервые, мне казалось, что все ошибки будут только из-за неправильной настройки zabbix. А причина была в почтовом клиенте Outlook! Нужно было всего лишь запретить удаление дополнительных переносов строк в сообщениях, и теперь сообщения от zabbix приходят именно в том виде, как это указано в шаблоне.

      Итак, в Outlook идем на вкладку Файл, переходим к пункту Параметры, далее в разделе Почта убираем флаг для «Удалять дополнительные переносы строк в текстовых сообщениях», и перестаем ругать Zabbix – он тут не виноват. :)

      Еще раз убедилась, что на любую проблему надо смотреть шире. Ведь все гораздо проще, чем мы думаем ;)

вторник, 27 августа 2013 г.

Оформление таблицы со списком в Excel

      Очень часто я создаю для себя различные таблицы с параметрами, требованиями или чек-листы. Все это удобно делать в виде таблиц в Excel. При этом для удобства я использую следующие «очевидности»:
  1. Использую сворачиваемые списки для группировки значений (Данные - > Группировать). Если свернуть все группы, то по заголовкам групп первого уровня можно быстрее найти нужную группу.
  2. Закрепляю верхнюю строку с заголовком (Вид - > Закрепить области). Это очень упрощает просмотр длинных таблиц, всегда понятно , как называется столбец, даже если он находится в самом конце длинной таблицы.
  3. Использую цветовое выделение различных групп.
В результате мои таблицы имеют такой вид:

В свернутом виде


В развернутом виде

четверг, 15 августа 2013 г.

Сворачивание списка в Excel

      Очень часто при создании таблиц в Excel хотелось бы использовать сворачиваемые списки. Оказывается, это очень просто!

      Итак, как же это сделать?
      1. Выделяем строки раздела, которые нужно сгруппировать, кроме заголовка.
      2. Выбрать Данные -> Группировать
      3. Если были выделены не целые строки при помощи их заголовков, а просто группа ячеек, то отобразится диалоговое окно, в котором пользователю будет предложено уточнить, что он группирует — строки или столбцы.
      4. Готово!

      Теперь раздел строк можно свернуть или развернуть, нажав на кнопки «+» или «-».
      Для отображения строк определенного уровня нужно нажать на кнопки 1, 2 и т.п., соответствующие уровню.

      По умолчанию кнопки «+»/ «-» расположены внизу, но чаще всего это неудобно и некрасиво. Поэтому сделаем небольшие изменения и разместим кнопку для группировки сверху.
      Для этого в настройках раздела «Структура» в Excel нужно откорректировать расположение итоговых данных и снять флаг «итоги в строках под данными»:

      Теперь сгруппированный список выглядит так:


пятница, 9 августа 2013 г.

Selenium: проверка присутствия элемента на странице

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

   public static boolean isElementPresent(By by) {
     try {
       driver.findElement(by);
       return true;
     } catch (NoSuchElementException e) {
       return false;
     }
   }

понедельник, 5 августа 2013 г.

Selenium: сохранение скриншота при неуспешном выполнении теста

После выполнения автоматического теста на Selenium необходимо проанализировать результаты, а если тест оказался провален, то нужно еще и понять причину. Для нахождения ошибки при выполнении теста можно пользоваться записями в логе. Но иногда записей бывает недостаточно И вообще, лучше один раз увидеть, чем сто раз… прочитать лог.

Для того, чтобы снять скриншот экрана, у Selenium есть метод getScreenshotAs. Снятый скриншот помещается во временный файл в формате .png. Нужно скопировать этот временный файл куда-нибудь, чтобы его сохранить, иначе он будет автоматически удален после окончания выполнения тестов. 
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("C:/Work/screenshot.png"));


Итак, с сохранением скриншота все довольно просто. Но как сделать так, чтобы скриншот сохранялся только при неуспешном выполнении теста?

Для этого нужно воспользоваться возможностями фреймворка TestNG, а именно аннотацией @AfterMethod. Метод с такой аннотацией будет запускаться всегда после выполнения каждого тестового метода (для аннотации нужно обязательно указать alwaysRun = true). Далее нужно проверить результат выполнения теста ITestResult, и если результат неуспешный, то делаем скриншот.

В результате получаем: 
@AfterMethod(alwaysRun = true)
public void takeScreenshot(ITestResult result) { 

   if (! result.isSuccess()) {       File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
      try {
         String scrFilePath = "C:/Work/screenshot.png";
         FileUtils.copyFile(scrFile, new File(scrFilePath));
         log.log(Level.SEVERE, "<a href='file:///" + scrFilePath + "'>"+ result.getMethod().getMethodName()</a>");
      } catch (IOException ex) {
         log.log(Level.SEVERE, null, ex);
      }
   }
}