Уровень 1

Определение тестирования и качества

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

Обеспечивать поддержкой процесс разработки ПО и управления проектом.

Эй, умники! А что насчет QC? Я все время слышу про QA и QC, но что такое QC и чем отличается "это" от QA ?

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

Quality Assurance включает в себя Quality Control наряду с другими процессами по улучшению качества работы компании.

 

Говоря другими словами, Quality Assurance гарантирует, что процесс поставлен правильно и дает предсказуемый результат, в то время как Quality Control гарантирует, что продукт удовлетворяет указанному набору требований.

 

Давайте разберемся: что же такое качество?

 

Я думаю, что качество - это отсутствие ошибок!

  • Автомобиль Мерседес признан качественным автомобилем, но речь не идёт об ошибках.

  • Смартфон Apple IPhone признан качественным телефоном. При этом его нельзя назвать "идеальным"

Тогда я думаю, что качество - это удовлетворённость заказчика. Съел ?!

Тогда скажу так: качество - это соответствие ожиданиям. Делает то, что должен, не делает того, чего не должен

 

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

R2D2, какие ты знаешь факторы качества?

Да! Те ужасы, что они творят, придают мне силы для борьбы. Теперь я хочу спросить - откуда берётся Качество?

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

Несравненный Глен Маерс в своей книге "Надежность программного обеспечения" [М:Мир, 1980], дал определение:

 

Тестирование - это процесс выполнения программ с намерением найти ошибки. (классика)

Старый, значит опытный! Это все еще актуально!

Я тебя перепрограммирую в мойщика унитазов после таких определений!

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

 
 

Ура! Ты справился. Делаешь первые успехи. Ну как, почувствовал себя тестировщиком?

Успехов тебе! Что касается определения тестирования. Обрати внимание на это слово: 

Тестирование - это процесс выполнения программ с намерением найти ошибки.

 

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

Каждый тест, в данном случае - вариант вводимых в форму данных. Например ты вводишь цифру 3, она попадает в диапазон от 0 до 9. Тест пройден если форма выдала VALID. Затем вводишь 342, и форма не возвращает VALID. В таком случае тест также пройден. Смысл задания состоит в том, чтобы придумать такой минимальный набор тестов, который позволит убедиться на 100%, что форма работает правильно. И учесть все возможные пары: ввод - ответ, при этом не перебирая все цифры мира

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

Преимущества определения:

фокус процесса тестирования смещён в сторону проверки требований

И не забывай про здравый смысл! Главная аксиома тестировщика - все ошибаются. Программисты, аналитики, составители требований и документации. Всех нужно проверять!

Итак эволюция представлений о тестировании

  • Процесс выполнения программы с намерением найти ошибки. [Г.Майерс. Надежность программного обеспечения. М:Мир, 1980]

 

  • Процесс наблюдения за выполнением программы в специальных условиях и вынесения на этой основе оценки каких-либо ее аспектов. [ANSI/IEEE standard 610.12-1990: Glossary of SE Terminology. NY:IEEE, 1987]

 

  • Это не действие. Это интеллектуальная дисциплина, имеющая целью получение надежного программного обеспечения без излишних усилий на его проверку. [B. Beizer. Software Testing Techniques, Second Edition. NY:van Nostrand Reinhold, 1990]

  • Техническое исследование программы для получения информации о ее качестве с точки зрения определенного круга заинтересованных лиц. [С. Kaner, 1999]

 

  • Проверка соответствия между реальным поведением программы и ее ожидаемым поведением на конечном наборе тестов, выбранном определенным образом. В более широком смысле, тестирование - это одна из техник контроля качества, включающая в себя активности по планированию работ, проектированию тестов, выполнению тестирования и анализу полученных результатов. [IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2012]

Окей, мы выяснили наконец что такое тестирование. Я понял, что задачи тестирования намного шире, чем просто поиск дефектов! Но у меня накопились вопросы конкретного характера. На которые вся ваша теория конкретного ответа не дает. 

Допустим, я нашёл определённое количество ошибок. Как понять - N найденных багов - это много или мало? Например 3 ошибки при тестировании предыдущей формы?

Вопрос из области философии тестирования. Почему наши пользователи находят ошибки, если мы потратили на тестирование столько времени?!

Мне все-таки хочется уточнить, ну нашел я свои N багов, допустим 82 бага на всем сайте. Я же могу спокойно сказать что работа окончена и я все протестировал? 

Вопрос простой. Ты сам догадаешься, если минутку подумаешь. 

Вот только подумать. Если пользователи все равно увидят баги и тестировщики не отловят их на 100%, зачем они вообще нужны тогда? Почему не поручить все пользователям?

Эх молодежь... Да никакие пользователи не захотят покупать программный продукт с ошибками. Давно прошла эра синих экранов в windows. Конкуренцию выигрывает самый качественный продукт, даже если он стоит дороже. Я для тебя спроектирую график стоимости исправления дефектов. Тогда ты поймешь, что тестировщики необходимы в самом начале создания ПО. Ведь с каждым этапом все больше людей будет задействовано в исправлении.

Пользуясь моментом, хотел бы преподнести вам важные факты о практике тестирования:

 

  • Тестирование программного обеспечения занимает от 30 до 50 процентов от всей стоимости разработки (классическая метрика)

 

  • Тестировать эффективно – значит решать проектные задачи  в рамках процесса с применением интегрируемых решений

 

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

 

Твоя задача - тестировать эффективно. Понятно?!

Будь вежлив R2D2. Перед тобой будущий тестировщик. Магистр им очень доволен. Итак, давай подведём итоги:

 

  • Основной целью процесса тестирования является достижение определённого уровня качества Продукта или Системы, которая находится в разработке

 

  • Процесс тестирования может не только выявлять и определять дефекты, но и предотвращать их

 

  • Тестирование становится процессом, эффективность которого кардинально влияет на стоимость Продукта и Сроки его выхода на рынок

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

Протестируй сайт и найди максимальное количество дефектов. Отправить список этот мне через форму или на email

 
Силы зла готовятся к наступлению

Ты наверное устал немного. В моменты когда я устаю, я иду наблюдать - чем занимаются силы зла. Это придает мне новые силы

Слишком много умных слов. Вот расскажи лучше простыми словами что такое QA.

А я говорю, что нужна практика, только практика и еще раз практика. Без реального применения - все знания фуфло!

Я буду давать тебе много тестов, практических задач и просить магистра проверить все тщательно, тщательно!

Уважаемый студент! Наш курс позволит лучше понимать цели процесса тестирования ПО в разрезе существующих проектных ролей, связанных задач и соответствующих им артефактов.

Хороший Заказчик всегда недоволен 

ISO cтандарт дает такое определение: "Качество программного обеспечения - это способность программного продукта при заданных условиях удовлетворять установленным или предполагаемым потребностям."

Но я согласен с тем, что отсутствие ошибок - это фактор качества. Кстати, давайте поговорим подробнее

о факторах качества

  • Надежность — работает ли приложение без сбоев, «зависания» или вызова исключений;

 

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

 

  • Практичность - назначение ПО должно быть понятным из самой программы и документации;

 

  • Эффективность -  насколько рационально программа относится к ресурсам (память, процессор) при выполнении своих задач;

 

  • Производительность — работает ли приложение с приемлемой скоростью при доступе к нему многих пользователей;

 

  • Мобильность - лёгкость в адаптации программы к другому окружению: другой архитектуре, платформе, операционной системе или её версии;

 

  • Функциональность — делает ли приложение то, что от него требуется;

 

  • Удобство использования: простота и удобство использования программы. Это требование относится прежде всего к интерфейсу пользователя;

 

  • Безопасность. Имеется в виду защищенность ПО от взлома.

Ёжичек! Сколько пунктов. Думаю мы встретимся с этими понятиями еще, когда дойдем до видов тестирования

  • Качество Продукта определяется только Качеством Процесса его разработки

 

  • Качество Процесса определяется только Уровнем Культуры разработки в Компании

 

  • Качество Продукта определяется используемой методологией и подходом к управлению процессов разработки / тестирования

Ты старая консервная банка! Даешь людям определение 1980 года. Тогда интернет был только по dial-up. Это бесполезное старье!

Это что-то вроде такого?

Я ничего не понял. Как проводить тесты? Просто какая-то форма ввода странная... Что я с ней должен делать?

Пожалуй тут я соглашусь с тобой. После такой-то работы. И дам обобщённое определение:

Тестирование – это процесс проверки соответствия заявленных к продукту требований и реально реализованной функциональности

 

Понял о чем шла речь в первом уроке? Серьезно?

Супер! Тогда вот тебе первый теоретический тест. Если тест будет пройден - запустится резервный генератор корабля. Энергии будет достаточно для перехода на другой уровень. Но знай, результаты тестов вносятся в рейтинг тестировщиков только у пользователей купивших подписку

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

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

Нужно выполнить вам задание. Для сил духовных восстановления

Представьте себе форму валидации введённого значения.

Требование: если введено целочисленное значение от 0 до 9 (включительно), форма должна возвращать значение VALID

В дополнение этой темы я хочу привести определение придуманное Полом Йоргенсеном:

Тестирование сфокусировано на ошибках и сбоях. Тест - это выполнение действий над ПО с целью найти ошибки или продемонстрировать его работоспособность.

Уровень 2

Как говорит нам  стандарт ISO 9000:2005

 

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

Отличный вопрос. Он волновал не одно поколение роботов. Поговаривают, что у робота R1F1 перегорели все транзисторы при поиске ответа. Подумай и ты. 

Я дам тебе минуту подумать самому.  

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

Большинство багов возникают из-за ошибок, допущенных разработчиками программы в её исходном коде, логике поведения или дизайне. Все-все о багах Вы узнаете на 5 уровне QA Academy.

Итак, уточним, наконец, определение:

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

Это техническая страница.

This is technical page.

Перейти на уровень 1 desktop

Перейти на уровень 1 mobile

  • Facebook Social Icon
  • Instagram
  • Vkontakte Social Icon
  • YouTube Social  Icon
  • mail_icon

© 2017 Galaxy QA Academy. All rights are protected.