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 раз дольше чем создание и выполнение ручных тест кейсов.

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



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

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

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