Эффективность автоматизации тестирования

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

Исторически сложилось, что автоматизацию часто рассматривают в сравнении с ручным тестированием, и потому, если у вас нет специфических задач, которые могут быть решены только с помощью автоматизации – сравнение имеет смысл.

Итак, автоматизацию в общей случае имеет смысл реализовывать если соблюдается условие:

TAcr/N + TAerrval + TAupd < TMval* N,
где
N – количество выполнений в течении одной итерации;
TAcr – время на создание автоматического теста;
TAerrval – среднее время на понимание причины “падения” авто-теста;
TAupd – среднее время на апдейт авто-теста;
TMval – среднее время ручной проверки.

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

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

  • почему не выгодно автоматизировать функционал, который нужно проверить всего несколько раз;
  • почему выгодно автоматизировать регрессию;
  • почему тестирование API всегда более выгодно автоматизировать;
  • почему очень важно иметь высокий уровень абстракции в инструменте автоматизации;
  • почему так важно иметь иметь качественное логгирование результатов выполнения авто-тестов

Уменьшить время проверки можно эффективной схемой анализа результатов и дизайна авто-скриптов.
Ответы на следующие вопрос должны быть получены как можно ранее:

  • К какому функционалу каждая из ошибок принадлежит?
  • Какие действия выполнял скрипт в момент появления ошибки?
  • В каком состоянии было приложение и какими были динамические данные в момент выполнения авто-теста?

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

Сказка о тестировании

Детская сказка о тестировании, или “тестируйте быстрее”. А вообще, меня всегда удивляло почему разработчики ПО считают свою работу чем-то сродни искусству, а обеспечение качества программного обеспечения – тупым кликаньем по кнопкам.

Проводение собеседование “на тестировщика”

Как проводить собеседование на тестировщика соискателя, который еще не имеет опыта тестирования?

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

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

Для начала, советую прочитать статью “Теоретик или практик” – это поможет определится с тем, на что делать упор во время собеседования. Как и в тестировании, интересней и полезней находить “пробелы в знаниях”, нежели прийти к выводу, что соискатель всё знает. И потому теоретиков мы спрашиваем практические решения, практиков – спрашиваем теорию.

Определение кругозора соискателя.
Спрашиваем по несколько простых и по несколько сложных вопросов по разным областям: операционные системы(Windows, *nix), сети, программирование, БД, технологии, веб.
Continue reading

Требования к тестировщикам

Требования к тестировщикам – перечень тех качеств, которыми должен обладать тестировщик для плодотворной работы в коллективе.

Хорошие технические знания. Компьютер не должен быть иконой, это должен быть инструмент для выполнения работы.
Внимательность. Важно замечать лююбое поведение тестируемого продукта и делать выводы о наличии дефектов.
Решительность и уверенность. Без этих качеств, трудно отстоять свою точку зрения. В итоге много времени(и своего и чужого) будет тратится чтобы решится на submit дефекта или написание письма руководителю.
Инициатива. Без этого качества у нас будет отряд хороших роботов, способных хорошо(допустим) выполнять только те задачи, которые мы перед ними ставим.
Стрессоустойчивость. Накануне релиза, все начинают очень быстро шевелится и часто нервозность приводит к неадватным постановкам заданий, напряженному общению, потери внимательности и так далее.
Умение работать в коллективе. Очень важная характеристика потому как вся работа строится на взаимоотношениях с коллегами.
Умение логически мыслить. Здесь все ясно.

Тестировщики теоретики и практики

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

Сама статья без изменений:

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

Так уж повелось, что собеседование у нас было построено на 4-ех уровневой основе. То есть проводили его 4 человека по очереди, у каждого были свои вопросы на свои темы, были свои тестовые задания ну и свой стиль, такой как “плохой и хороший полицейский”… шутка…
Continue reading

Nikto – сканер уязвимостей

Особенности:

  1. Uses rfp”s LibWhisker as a base for all network funtionality
  2. Main scan database in CSV format for easy updates
  3. Fingerprint servers via favicon.ico files
  4. Determines “OK” vs “NOT FOUND” responses for file type, if possible
  5. Determines CGI directories for each server, if possible
  6. Switch HTTP versions as needed so that the server understands requests properly
  7. SSL Support (Unix with OpenSSL or maybe Windows with ActiveState”s Perl/NetSSL)
  8. Output to file in plain text, HTML or CSV
  9. Plugin support (standard PERL)
  10. Checks for outdated server software
  11. Proxy support (with authentication)
  12. Host authentication (Basic)
  13. Watches for “bogus” OK responses
  14. Attempts to perform educated guesses for Authentication realms
  15. Captures/prints any Cookies received
  16. Mutate mode to “go fishing” on web servers for odd items
  17. Builds Mutate checks based on robots.txt entries (if present)
  18. Scan multiple ports on a target to find web servers (can integrate nmap for speed, if available)
  19. Multiple IDS evasion techniques
  20. Users can add a custom scan database
  21. Supports automatic code/check updates (with web access)
  22. Multiple host/port scanning (scan list files)
  23. Username guessing plugin via the cgiwrap program and Apache ~user methods

Описание:
Nikto – это Perl сканер под GPL лицензией, который выполняет всесторонние тесты для веб-серверов, включая более 3500 потенциально опасных уязвимостей, вариантами для более чем 900 серверов, и специфическими проблемами для более чем 250 серверов. Позволяет находить ошибки в конфигурациях серверов и программ, ошибки в байлах, проблемы с безопасностью файлов и программ, устаревшие программы. Сканер поддерживает SSL, прокси сервера, аутентификацию, IDS evasion. База уязвимостей а также плагины очень часто обновляются и процесс обновления можно сделать автоматическим.
Continue reading

Жизненный цикл дефекта

Заметка от 19 сентября 2009 года:

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

Каждый день мы слышим слова – “глюк” и “баг”. Я попробую описать что же такое дефект в программном обеспечении и какова у него “жизнь”.

Дефект – это один из видов измерения эффективности тестировщика и программиста, только в первом случае – чем больше, тем лучше, а во втором – наоборот, а также одно из мерил качества программного обеспечения.

Каждый дефект, который был найден специально и который будет обработан, имеет ряд обязательных описательных “свойств” в defect tracking systems:
Continue reading

Что такое тестирование?

Заметка 2009 года, сентября месяца:

Ответим на вопрос: что такое тестирование?

Тестирование – это получение удовольствия от нахождения ошибок других людей. И это совсем не скучно! Некрасиво.. А что делать? :)
В классической терминологии, тестирование – процесс, позволяющий определить корректность, полноту и качество разработанного программного обеспечения (ПО).
Continue reading

Что такое “качество”?

Попробуем ответить на вопрос: что же такое качество?

С точки зрения ISO 9126, Качество (программных средств) можно определить как совокупную характеристику исследуемого ПО, с учётом следующих составляющих:

  • Сопровождаемость
  • Надёжность
  • Удобство использования
  • Эффективность
  • Универсальность
  • Функциональность

А классическое определение звучит так: это степень, в которой товар соответствует потребностям покупателя.

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