Thursday, September 17, 2009

FAQ по QA

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

1. Что такое баг? Синонимы понятия…

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

2. Кто такой бета-тестер? Синонимы понятия…
Популярное, но неверное название для "тестировщика", вообще правильно бы разделять понятия QA инженера и QC инженера, но у нас обычно все кидают в кучу и называют единым словом "тестировщик", "тестер", "кьюэй".

3. С чего нужно начинать освоение тестирования?
Для начала надо осознать, на каком уровне находятся знания компьютера и программ вообще. Компьютер - это инструмент, и если им не уметь пользоваться, то дальше некуда идти. Надо знать основные разделы, но необязательно очень глубоко. Тестирование же лучше начинать с чтения документации о самом тестировании, видах тестирования, понятии дефекта, приоритета, научится правильно описывать дефект, понять для чего нужно описание дефекта, для кого оно нужно и на что дефект влияет, не лишним будет изучить Жизненные Цикл Программного Обеспечения.

4. Какая учебная литература есть по тестированию ("классика жанра")? Где ее взять?
Литературы появилось немало, но в основном она отражает теоретическую часть, которая может отличаться в разных компаниях. Т.е. теорию надо знать, но некоторые теоретические и практические аспекты могут отличаться от компании к компании.

5. Какими качествами должен обладать тестер для работы?
Обучаемость, усидчивость, внимание, уверенность, адекватность и работа в команде.

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

6. Как выглядит примерный перечень основ компьютерной грамотности, который необходим тестеру?
Смотрим пункт 3. Надо знать основы программирования, операционные системы Windows и *nix, сети, базы данных, как минимум понимание некоторых технологий, английский язык не ниже elementary.

7. Где проводится подготовка и обучение бета тестеров?
Я не знаю таких мест. В основном тестеры с которыми я работаю - выпускники политехнических ВУЗов.
Некоторые компании имеют так называемые "центры подготовки" - где выпускников и просто прошедших начальное собеседование
натаскивают интенсивной программой по QA и своим проектам

8. Какие есть онлайн ресурсы, посвященные тестированию?
Бывшый tester.com.ua->software-testing.ru а ныне it4business.ru, software-tester в ЖЖ, блог Алексея Булата. Есть и много других в том числе и зарубежных.

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

10. Какое программное обеспечение должен освоить тестер для работы (операционная система, специальный софт, иное…)?
Опять же, project-related тема. Разные компании используют разный софт для хранения и выполнения тест кейсов а также для bug tracking.
В принципе, неплохо бы изучить VMware и знать бесплатное ПО для автоматизации и нагрузочного тестирования.

11. Какова длительность рабочего дня?
От 8 часов в обычном режиме до 13-14 часов накануне релизов

12. Какова структура команды?
Не берусь судить о всех компаниях, у меня в команде так называемые QA инженеры и QA team lead.

13. Кто отвечает за качество ПО - тестер или разработчик?
И тот и другой. Оба в одной связке с общей целью - выпустить качественный продукт в отведенное время.
И тем и другим особенно трудно накануне релизов - но тестеров еще и обязательно спросят - "how do you feed about quality of product"? Т.е. тестеры - последняя инстанция перед выходом в продакшн (на самом деле, для продуктов, которые позиционируются не как продукты, а как сервисы, есть еще и промежуточная стадия).

14. Какие методы тестирования используются тестером в работе?
Опишу виды тестирования:
Есть Black box testing - тестирование "черного" ящика - вся реализация скрыта от тестера, есть входящие данные и есть алгоритм, по которому можно понять какими должны быть выходные данные ну и есть сами выходные данные.
White box testing - тестирование параллельное кодингу - тестирование с доступом к коду. Обычно начальное тестирование делают сами программисты (Unit testing).

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

16. Какая документация нужна тестеру?
Любая по проекту :)
Пригодятся и мануалы из предыдущих версий и техническая спецификация, презентации для кастомеров, разговоры с девелоперами. На выходе от тестера имеем тест-кейсы, дефекты(своего рода тоже документация) и пожелания на улучшение.

17. Кто пишет эту документацию?
Аналитики, менеджеры, привлеченные профи. Часто используются базы с отзывами от клиентов в плане "а чего бы вы хотели еще видеть в нашем продукте?".

18. Существует ли список терминов и понятий, которыми должен владеть тестер? Если да, то где его можно посмотреть/почитать/изучить?
Нужно знать и понимать все слова, описанные выше :)

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

20.
А) Что такое бизнес задание (Business Requirements)?
Б) Что включает в себя этот документ?
В) Какие требования к его написанию существуют?
Г) Что должен извлечь для себя тестер из этого документа для работы?
Д) Существует ли в природе подобный документ, который можно изучить в качестве примера для ознакомления?

А) Business Requirements это требования к системе с точки зрения руководства и людей, которые заказывают программу. Им безразлично как их идеи будут реализованы.
Б) Этот документ включает в себя бюджет, партнеров, основные моменты, которые программа должна уметь делать. В этом документе не описаны технические подробности.
В) В каждой фирме свои стандарты. Я не сталкивался с созданием документа такого уровня. Конечно существуют стандарты что должно быть в этих документах, но это отдельный курс.
Г) Тестер должен уделять внимание срокам, техническим аспектам, если есть. Из документа необходимо почерпнуть как можно больше информации о том, что ожидается от системы. Не всегда такая информация там есть.
Д) Не известно, потому как такой документ содержит информацию, подпадающую под защиту авторских прав. Возможно шаблоны таких документов лежат в интернете.

21.
А) Что такое техническое задание (Functional specifications)?
Б)Что включает в себя этот документ?
В) Какие требования к его написанию существуют?
Г) Что должен извлечь для себя тестер из этого документа для работы?

А) Functional specifications - это техническое описание программы. Какие функции система должна уметь выполнять.
Б) Документ включает в себя подробное описание всех элементов системы.
В) Каждая компания имеет свои стандарты. Чем подробнее документ, тем легче писать программу и ее тестировать.
Г) Это базовый документ для тестера. Основываясь на этом документе, тестер пишет test cases.

22. Что такое тест кейсы (test cases)?
Набор тестов сгруппированных по критериям: областям, виду тестирования, итерации и т.д.

23. Как правильно составлять тест кейсы? Примеры уже готовых тест кейсов?
Идея такая:
1. Кроме автора теста, ни у одного человека, которые будет использоваться этот тест далее не должно возникнуть вопросов "как этот шаг сделать"
2. Тесты должны быть автономными - т.е. не без ссылок на "левые" FTP, линки на дополнительные программы, лежащие в сети(версии меняются, сайты умирают), ссылки на людей(которые через месяц могут уже и не работать в компании), весь материал для теста должен быть подключен к тесту.
3. Тесты не должны быть "пустышками", т.е. написанными только для отчетности и которые никогда не позволят найти новых дефектов.

24. Я нашел баг. Что дальше?
1) Убедится что это баг, а не задуманная функциональность.
2) Убедится что баг воспроизводится каждый раз
3) Убедится, что такой баг не был найдет кем-то раньше.
4) Локализовать его, т.е. найти граничные условия для воспроизведения
5) Проверить его на других платформах
6) Правильно описать баг и внести в bug tracking system
7) Отслеживать его статусы до тех пор, пока нельзя его будет перевести в "Closed".

Для багов есть свой жизненный цикл, этому будет посвящена отдельная тема.

25. Какую еще документацию (по мимо Test Case) пишет тестер?
Перед тестированием должен быть написан STP, а после тестирования должен быть сделан отчет по проделанной работе.
Опять же - в каждой компании по своему.

26. Что такое план тестирования (Test Plan)? Для чего он нужен?
Он нужен для менеджеров, чтобы правильно оценивать основные параметры: время, обьем, ресурсы, возможно деньги, риски.
Он нужен для тестеров, чтобы понять какие виды тестирования необходимо провести, покрытие, платформы.

27. Кто пишет план тестирования?
Team leader, хотя думаю что в разных компаниях по-разному.
В отдельной статье я приведу пример плана тестирования.

28. Существуют ли стандарты, регламентирующие структуры и содержание этого документа?
Я не встречал такого.

29. Из каких разделов состоит план тестирования? В чем смысл каждого раздела? Мне несколько раз попадались template (если я не ошибся в написании), которые сходны с Вашим примером плана тестирования, я не совсем понял что такое template, зачем он нужен и пользуются ли им в реальной работе?

Template - это шаблон. Чаще всего он включает полный список разделов, которые потом или используются или удаляются. Ну и наполнение разделов выполняется в соответствии с проектом.

30. Какими правилами следует пользоваться при написании плана тестирования?
Нет заморочкам! Должно быть просто и понятно.

31. Где и как сертифицируют специалистов по тестированию?
Знаю только про Brainbench - видел на сайтах по поиску работы что некоторые компании начали спрашивать именно этот сертификат.

No comments:

Post a Comment