2008/12/26

Как приручить AJAX в Selenium

Технология AJAX сейчас встраивается в большинство web-приложений и я столкнулась с проблемой как автоматизировать тест-кейсы, в которых используется AJAX.

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

При перезагрузке элементов Selenium их не видит, а ставить просто паузу - это некорректно.

Я использую такой прием:

boolean el = false; //логическая переменная
for (int second = 0; second < 1000; second++) {
try {
if (selenium.isElementPresent("name")) {
el = true; // если нужный элемент появился то логическая переменная получает значение true
break;

}
}
catch (Exception ignore) {
}
pause(1000);
}
assertTrue(el);

2008/12/25

Добавление пользовательских типов результата в TestLink

Мы активно используем TestLink как систему менеджмента тестирования. Так же очень удобно его использовать в связке с автотестами. Немного позже расскажу как.

Но вот, например, мне не хватает стандартных типов результата при выполнении тест-кейса:

Passed
Failed
Blocked

Я добавила еще свои статусы:

Test Error
Test Data Error
In Process





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

Как я это делала описано ниже. (Testlink 1.7):


Добавляем статус Ошибка Теста - Test Error
1. Файл констант
/cfg/const.inc.php
$g_tc_status = array (
"failed" => 'f',
"blocked" => 'b',
"passed" => 'p',
"not_run" => 'n',
"not_available" => 'x',
"unknown" => 'u',
"test_error" => 't',
"all" => 'all'
);
$g_tc_status_verbose_labels = array(
"all" => "test_status_all_status",
"not_run" => "test_status_not_run",
"passed" => "test_status_passed",
"failed" => "test_status_failed",
"blocked" => "test_status_blocked",
"not_available" => "test_status_not_available",
"test_error" => 'test_status_test_error',
"unknown" => "test_status_unknown"
);
$g_tc_status_for_ui = array(
"passed" => "test_status_passed",
"failed" => "test_status_failed",
"blocked" => "test_status_blocked",
"test_error" => "test_status_test_error"
);
// radio button selected by default
$g_tc_status_for_ui_default="blocked";
$g_reports_cfg->tc_status = array(
"passed" => "test_status_passed",
"failed" => "test_status_failed",
"blocked" => "test_status_blocked",
"not_run" => "test_status_not_run",
"test_error" => "test_status_test_error"
);
2. Файл языков
/locale/en_GB/string.txt
$TLS_test_status_all = "All";
$TLS_test_status_any = "Any";
$TLS_test_status_not_run = "Not Run";
$TLS_test_status_blocked = "Blocked";
$TLS_test_status_failed = "Failed";
$TLS_test_status_passed = "Passed";
$TLS_test_status_not_available="Not Available";
$TLS_test_status_unknown="Unknown";
$TLS_test_status_test_error="Test Error";
/locale/ru_RU/string.txt
$TLS_test_status_test_error="Ошибка Теста";
3. Цвет статуса
Копируем тему theme_m1 в theme_m2
/gui/themes/theme_m2/css/testlink.css
.passed {
color: white;
background: green;
}
.failed {
color: white;
background: red;
}
.blocked {
color: white;
background: blue;
}
.not_run {
color: white;
background: black;
}
.not_available {
color: black;
background: yellow;
}
.unknown {
color: black;
background: cyan;
}
.test_error {
color: black;
background: #e51cb8;
}
4. config.inc
/* CSS themes - modify if you create own/
define('TL_THEME_CSS_DIR','gui/themes/theme_m2/css/');

В процессе In Process process
Ошибка тестовых данных Test Data Error test_data_error

2008/12/16

Советы для новичков в тестировании

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



Советы ниже, несомненно, помогут вам правильно подойти к построению карьеры в тестировании ПО.

Эти "неоспоримые истины" так же применимы и полезны для опытных гуру-тестировщиков. Применение упомянутых ниже правил в вашей карьере, поможет вам не совершать поступков, о которых придется жалеть.


Знайте свое приложение


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


Изучайте новые технологии

Нет сомнений, старые подходы и методы все еще играют важную роль в повседневной работе тестировщика, но необходимо пытаться вводить новые процедуры тестирования. Не полагайтесь на скучные книжки. Теория суха. Будьте практичны. Ваши новые идеи в тестировании будут работать на Вас и для Вас.


Стройте хорошие отношения с разработчиками

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



100% покрытие тестами - сказка

Не стремитесь сделать 100% покрытие кода тестами. Существуют миллионы тестовых комбинаций, которые просто невозможно охватить. Используйте такие методы, как граничный анализ и декомпозиционное тестирование, чтобы ограничить количество тест кейсов до приемлемых размеров.

2008/12/09

Упростит ли автоматизация процесс тестирования?

Возможно!
Для небольших проектов, время, необходимое для изучения инструмента автоматизации и ее внедрения может не окупится. Для более крупных проектов или текущих долгосрочных проектов, автоматизация просто незаменима.


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

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

Автоматизация - процесс дорогостоящий
Исследования показывают, что создание автоматизированного тест сьюта может занять от 3 до 10 раз дольше чем создание и выполнение ручных тест кейсов.

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



Обычно инструмент для автоматизации ориентирован на "запись / воспроизведение"

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

Обработка и анализ полученных результатов часто бывает тяжелым и утомительным процессом. Так же поддержка тестов, созданных путем простой записи тоже очень неудобна - так как любое изменение кода (даже самое незначительное) влечет за собой неработоспособность таких автоматизированных тестов.


2008/08/22

Откуда берутся баги?

Это жутко интересный вопрос, волнующий всю братию айтишников.


- Ошибки программистов

Программисты тоже люди, а людям свойственно ошибаться

- Изменения требований

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

Любые мелкие или крупные изменения требований влекут за собой новые баги, и нужны огромные усилия для сохранения целостности проекта после любых изменений.

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

- Проблема времени

Не всегда время на проекты планируется правильно. Иногда все самое важное делается в последний момент. Когда на носу дедлайн и времени совсем нет - тогда и появляются баги.

- Элементарная нехватка коммуникаций

Программисты не поняли как правильно сделать, а не уточнили. Тестировщики подумали что программисты сделали правильно. Заказчик увидел и испугался. Этого бы ничего не было при правильной наладке процесса коммуникаций заказчик-менеджер-разрабочик-тестировщик.

Что любят говорить разработчики?

- Здесь нет ошибки. Винды у вас кривые.
- Это сделать раз плюнуть
- Да я за часик это все исправлю, а вы раздули глобальную проблему
- Проще будет обновить старый код...

Вместо...

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

2008/08/21

Кто такой хороший тестировщик?

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


Что сделает очень плохой тестировщик?

- Он даже не запустит программу. Скажет все работает.

Что сделает плохой тестировщик?

- Кто-то ему сказал что программа возводит число в квадрат. Он ввел число 4, получил

в результате 2 и сказал что программа работает неправильно. Вернул разработчикам.

Что сделает не очень плохой тестировщик?

- Прочитает спецификацию. Поймет что делает программа. Введет число 4, на выходе получит число 2. Скажет что программа классно работает и даст зеленый свет на релиз.

Что сделает хороший тестировщик?

- Прочитает спецификацию. Поймет что делает программа. Введет число 4, на выходе получит число 2. Введет число -2, на выходе получит число эксепшн - занесет баг.

Введет букву а в поле для числа, на выходе получит число эксепшн - занесет опять баг.

Что сделает тестировщик-профессионал?

- Изучит спецификацию.

- Напишет детальные тест-кейсы

- Проверит реакцию программы на целые, дробные числа, на ноль, на длинные числа, на отрицательные числа, на очень маленькие числа

- Проверит округление результата

- Проверит реакцию программы на неправильные данные (буквы, спецсимволы и т.д)

- Проверит действительно ли программа выдает правильный результат во всех случаях

- Протестирует интерфейс пользовталея

- Протестирует программу в разных ОС

- И сделает еще много-много полезных вещей и команда выпустит действительно качественный продукт

2008/08/20

Тренинги по тестированию ПО в Черкассах от компании QATestlab

В конце сентября - начале ноября компания QATestlab будет проводить тренинги по тестированию ПО в Черкасском Государственном технологическом университете (ЧДТУ).


Цели тренинга:

1. Раскрыть особенности достаточно новой профессии - тестировщика ПО;

2. Получить как теоретические знания, так и некоторый практический опыт работы с различными проектами, решения реальных задач, с которыми работают тестировщики;

3. Научиться применять разные методики для тестирования программного обеспечения;

4. Научиться описывать ошибки программного обеспечения и писать тест-кейсы;

5. Научится правильно использовать ручное и автоматизированное тестирование в реальных проектах;

6. Научиться анализировать и разумно использовать собственное время в работе;

Структура программы тренинга:

Тема 1. Введение в процесс тестирования. Роль тестирования в жизненном цикле разработки программного продукта. Как в действительности тестируются программы.

Тема 2. Ошибки в программах. Описание программных ошибок и их анализ. Жизненный цикл программных ошибок.

Тема 3. Разработка тестов и структура тест-кейсов. Характеристики хорошего теста. Регрессионное тестирование.

Тема 4. Автоматизированное и нагрузочное тестирование. Использование программного обеспечения для тестирования ПО.



ПРОГРАММА


Тема 1. Введение в процесс тестирования. Роль тестирования в жизненном цикле разработки программного продукта. Как в действительности тестируются программы.



1. Ознакомление с основными теоретическими вопросами, определениями и терминами.

2. Тестирование «белого ящика» и «чёрного ящика»

3. Цель работы тестировщика

4. Цикл разработки ПО

5. Роль тестирования в жизненном цикле разработки программного продукта



Тема 2. Ошибки в программах. Описание программных ошибок и их анализ. Жизненный цикл программных ошибок.



1. Определение программной ошибки и условия жизни программных ошибок. Причины появления багов.

2. Что такое качество. Разоблачение концепции о 100% тестировании ПО.

3. Типы багов. Атрибуты бага.

4. Описание программных ошибок и работа с багтрекинговой системой

5. Жизненный цикл программных ошибок.




Тема 3. Разработка тестов и структура тест-кейсов. Характеристики хорошего теста. Регрессионное тестирование.



1. Структура и детализация тест-кейсов.

2. Результаты исполнения тест-кейсов. Анализ полученных результатов.

3. Регрессионное тестирование.

4. Проверка исправленных ошибок.


Тема 4. Автоматизированное и нагрузочное тестирование. Использование программного обеспечения для тестирования ПО.



1. Использование автоматизированного тестирования с помощью Watir, Selenium, Rational Robot.

2. Нагрузочное тестирование с помощью Wapt, AB.exe, LoadRunner.

Использование программного обеспечения для тестирования ПО: программы для обнаружений утечек памяти, отслеживания сбоев, программы для web-тестирования.

По вопросам записи на тренинги:

ICQ: 82-0-четыре-5-5-два-0

E-mail: irinachсобачкаqa-testlabточкаcom

Нагрузочное тестирование с LoadRunner

Loadrunner - прекарсный продукт от компании Hewlett-Packard, предназаначеный для проведения нагрузочного тестирования и тестирования производительности.



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

Визуальные обучалки

2008/07/02

Наша задача не только найти баг, но и правильно его описать. Как правильно описать баг?

Зачем нужен хороший баг репорт?

Если вы правильно описали баг, шансы на то, что его профиксят взлетают
до немереных высот. Поэтому существует зависимость от описания бага с исходным результатом (пофиксят или отложат до лучших времен). Чтобы правильно описать баг нужны определенные навыки и знания. Я постараюсь поведать вам это таинство.

"Цель описания бага в том, чтобы его профиксили" - Сэм Канер.

Если тестировщик некорректно опишет баг, то программист с большой вероятностью влепит ему статус "не воспроизводим" и пока-пока. Баг возвращается тестировщику и он опять должен его описывать - но уже более подробно. Цепочка может быть бесконечной, пока программист не даст щелбан тестировщику. А баг пойдет в релиз.

Где же критерии идеального баг репорта???

Каждый может описать баг. Но далеко не каждый может его описать эффективно. Вы должно тонко чувствовать разницу между обычным сереньким баг репортом и действительно хорошим баг репортом.

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


1) Каждому багу - личный номерок

У каждого бага должен быть свой уникальный номер. Это поможет его отыскать и идентифицировать. Если вы используете какой-то инструмент для автоматизированного репорта багов - этот номер должен генерится автоматически, когда вы заносите баг.

Тестирование полей ввода. Предусмотреть все.

Часто возникает необходимость тестировать поля ввода на обработку различных данных. И часто это делается спонтанно - введём спецсимвол, оставим поле пустым, введём слишком длинную строку....

Поэтому я делаю попытку все эти действия структурировать и выполнять последовательно для всех тестовых полей - желательно автоматизированным тестом.

Итак у нас есть текстовое поле в форме регистрации - е-mail.

1) Проверяем на обязательность заполнения

Система должна реагировать на пустое поле е-mail соответствующим сообщением.

2) Проверяем на граничное значение - введем е-mail длиной в 200 символов.

Например, vasyaaaaa(200 буков a)@.mail.ru.

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

2008/06/30

Джентельменский набор тестировщика - что в него входит?

C каким минимальным набором инструментов можно приступить к тестированию
программного продукта?

1) Самая незаменимая вещь - это утилита для снятия скриншотов с экрана монитора.
Здесь я на 100% рекомендую использовать SnagIt.



Эта утилита умеет делать не только статичные графические "снимки" выбранной области, но и, например, записать в видео то, что происходит на экране, а также захватить картинку из приложений, использующих Direct X, DirectDraw и Direct 3D.

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

Кроме этого, программа позволяет "выдергивать" текст оттуда, откуда он не перемещается с помощью команд Копировать/Вставить.


2) Второй незаменимый инструмент - это линкчекер. Линкчекеры - это программы для проверки сайта на битые ссылки.

Наиболее популярным бесплатным линкчекером на данный момент является Xenu.



Я так же еще использую из платных Fast Link Checker, Link CheckerPro. Они более устойчивы к многопоточности. Xenu часто зацикливает при глубокой проверке больших порталов.

3) Я не могу обходиться без Internet Explorer Developer Toolbar (Плагин для браузера Internet Explorer).



С помощью этого плагина можно:

  • работать с документно-объектной моделью (DOM) HTML-страницы
  • просматривать имена классов HTML, идентификаторов и других элементов, таких, как: пути ссылок, значения индексных вкладок и ключей доступа
  • выделять на веб-странице таблицы, ячейки, картинки и другие теги
  • выбирать элемент кликом: "Inspect element"
  • очищать кеш браузера/cookie (меню cache)
  • масштабировать окно (tools)
  • выделять различные элементы, показывать размеры картинок, линейку и т.п.
  • отключать настройки IE
Очень рекомендую! Особенно когда приступите к автоматизации.

4) Selenium IDE - плагин для Firefox (библиотека Selenium в GUI-обвязке.)



С помощью Selenium IDE вы можете записать часто выполняемую последовательность действий на веб-приложении (например, заполнение формы регистрации). Никаких особых навыков не требуется. Просто нажал кнопку записи, сделала действия, сохранил и запустил нужное количество раз.

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

2008/06/27

Создание маркетингового описания - как выгодно продать проект


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

Язык должен быть лёгким, живым и понятным рядовому пользователю - потенциальному клиенту.

Предлагаю приблизительную структуру маркетингового описания:

  1. О системе
  2. Возможности системы
  3. Область применения
  4. Назначение продукта
  5. Состав программного продукта
  6. Безопасность
  7. Модули системы
  8. Примеры использования
  9. Методология

1. О системе

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

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

2. Возможности системы

Здесь нужно красиво описать все возможности вашей системы на понятном потенциальному клиенту языке. Можно еще пофантазировать и рассказать о эффекте от внедрения вашего продукта...

3. Область применения

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

4. Назначение продукта

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

5. Состав программного продукта

Здесь на понятном языке опишите технические аспекты реализации продукта

2008/06/25

Закон Парето в тестировании

Закон Парето часто называют законом соотношения 20/80.



Принцип 80/20 гласит, что небольшая доля причин, вкладываемых средств или прилагаемых усилий, отвечает за большую долю результатов, получаемой продукции или заработанного вознаграждения. Например, на получение 80% результатов, достигаемых в работе, у вас уходит 20% всего затраченного времени. Выходит, что на практике 4/5 приложенных вами усилий (немалая доля) не имеют к получаемому результату почти никакого отношения. Это, кстати, расходится с тем, чего люди обычно ожидают.

Кому следует становится тестировщиком

Вам следует становиться
тестировщиком:

  • если Вам нравится постоянно разбираться с новыми задачами
  • если Вам нравится анализировать и делать выводы
  • если Вы усидчивы и способны надолго сосредоточиться на выполнении задачи
  • если Вы умеете чётко и понятно объяснять

Вам не следует становиться тестировщиком:

  • если Вы на самом деле хотите быть программистом
  • если Вы умеете решать только четко поставленные задачи
  • если Вы типичный интроверт
Пройти тест на профпригодность

Создание файла помощи CHM с помощью Help & Manual

Вот столкнулась с проблемой - с помощью какой программы создать файл помощи CHM для тестируемого приложения.

CHM - это расширение файла в формате Compressed HTML Help.

У меня был файл помощи, созданный с помощью HTML Help Workshop, но он выглядит как куча отдельных html страниц, которые потом нужно компилировать. Это очень неудобно. Хотелось просто загрузить проект, редактировать через визуальный редактор, быстро компилировать, легко редактировать.

Поэтому я импортировала существующий chm в очень удобную программу Help&Manual.

Как это сделать?

Импорт скомпилированного chm файла в Help&Manual.

Создаем новый проект и выбираем опцию import existing documentation from (Compiled HTML Help File).



После импорта Help&Manual отобразит страницы каталога в дереве, где очень наглядно представлена структура файла помощи и легко передвигаться между страницами. Так же в дереве есть раздел файлов проекта и раздел конфигурирования.



У меня возникла проблема после импорта, что в каждой html странице картинки назывались одинаково image01, image02 и т. д. Help&Manual почему-то не переименовывает импортированные картинки, если у них одинаковые названия и на разных страницах я получила одинаковые картинки. Пришлось их переименовывать и заливать заново.

Редактирование страниц файла помощи.
Help&Manual предлагает довольно мощный визуальный редактор, с помощью которого можно быстро и легко отредактировать или создать страницу. Основные операции форматирования находятся во вкладке "Write".


Добавление русского словаря.
По умолчанию русского словаря нет в файле установки. Его нужно скачать с официального сайта разработчика. Скачать русский словарь можно здесь. После этого его нужно положить в папку c:\Program Files\EC Software\HelpAndManual5\.

Компиляция chm.
Ну и после завершения работы над проектом его нужно скомпилировать. В Help&Manual это делается очень просто.

В панели инструментов нажимаем кнопку Publish, вводим путь для нашего chm файла, выбираем скин, ставим галочку, что на выходе мы хотим получить именно chm файл и ву-а-ля - через несколько секунд вы получите готовый chm файл. Добавляйте его к программе и задача выполнена.



Полезные ссылки:

Создание HTML Help файлов
http://www.oszone.ru/display.php?id=3789
Create Windows Help Files
http://svdpro.info/page.php?id=53

2008/06/24

Кто такая Багзилла (BugZilla)? Все не так страшно.

Багзилла (BugZilla) - это система управления багами (широко применяется как система менеджмента проектов и управления задачами).

Системы багтрекинга позволяют разработчику или группе разработчиков эффективно отслеживать задачи и проблемы разрабатываемого продукта.

Багзилла заменила недоразвитую и неудобною систему багтрекинга, которая использовалась в Netscape Communications. Сейчас большинство коммерческих систем багтрекинга требуют кучу лицензий, и Багзилла быстро стала любимицей из толпы систем с открытым кодом. Багзилла является сейчас стандартом де-факто для систем отслеживания ошибок.

А что ж в ней такого?

- мощный поиск

- возможность конфигурирования нотификаций о любых изменениях статусов багов

- полная история изменений для любой задачи/бага

- система зависимости багов

- отличное управление аттачами

- надежный и стабильный RDBMS бек енд

- мощная способность к изменению конфигурации

Официальный сайт - http://www.bugzilla.org/

2008/06/23

Презентация по автоматизированному тестированию

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





















Скачать презентацию полностью можно здесь