Войти
Идеи для бизнеса. Займы. Дополнительный заработок
  • Как составить резюме: наши советы соискателям
  • Сеть постаматов и пунктов выдачи PickPoint, Россия - «~Постамат PickPoint
  • Зачем нужно штатное расписание и как его составить
  • Растаможка перевозимых грузов — правила и условия
  • Боремся с пухопероедами у курочек Как обработать кур керосином и нашатырным спиртом
  • История создания старуха изергиль максима горького презентация
  • Тестирование. Фундаментальная теория. Чем опросник отличается от теста

    Тестирование. Фундаментальная теория. Чем опросник отличается от теста

    Подробно все базовые определения и понятия тестирования, а также разновидности и классы тестирования будут разобраны на примерах в отдельном разделе. В этой же статье будут рассмотрены только основные моменты, на которые стоит обратить особое внимание и сфокусироваться при подготовке к собеседованию: "Что такое тестирование ПО?" "Чем тестированеие отличается от QA?" "Что такое валидация и верификация и какая между ними разница?" "Какие бывают виды и типы тестирования?"

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

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

    Или таким:

    • Тестирование ПО – проверка реального поведения программного продукта на соответствие заявленным требованиям

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

    2. Многие интервьюеры интересуются, в чем отличие тестирования от QA. При ответе на этот вопрос лучше всего вспомнить и описать общую картину процесса обеспечения качества продукта. Есть 3 основных уровня:


    Здесь также важно показать свой взгляд на этот вопрос и сформулировать различия своими словами

    3. Часто на интервью встречаются вопросы про различие верификации и валидации продукта:

    • Верификация – это подтверждение, что были выполнены все требования предъявляемые к ПО.
    • Валидация – это проверка того, что ПО соответствует потребностям пользователей и его можно использовать в реальной жизни.

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

    4. Также важно представлять какие бывают классы, виды и типы тестов, зачем они необходимы. Это нужно знать, чтобы общаться с будущими коллегами по команде на одном языке и понимать какие проверки нужны в том или ином случае. Далее приведу некоторые основные виды тестирования, которые необходимо знать и различать:

    • По объекту тестирования: функциональное и нефункциональное:
      • Функциональное тестирование – проверка того, что продукт выполняет свое прямое назначение, предоставляет функции, требуемые заказчиком\пользователями.
      • Нефункциональное тестирование – это проверка качественных характеристик продукта: скорости работы, надежности, безопасности и т.п. Нефункциональное тестирование делиться на (приведу основные виды):
        • Тестирование производительности
        • Конфигурационное тестирование
        • Юзабилити-тестирование
        • Тестирование пользовательского интерфейса
        • Тестирование безопасности
        • Тестирование совместимости
    • По изолированности компонент: системное, интеграционное, модульное. Можно сказать, что это классификация по уровню, по масштабности тестирования:
      • Мы можем проверять работоспособность ПО на уровне одного отдельного программного модуля\блока – это модульное тестирование.
      • Можно проверять взаимодействие нескольких модулей друг с другом через какой-либо интерфейс – это интеграционное тестирование.
      • Самый большой масштаб, это системное тестирование – проверка работоспособности смей системы \ всего продукта в целом.
    • По версии функционала: тестирование новой функциональности и регрессионное тестирование:
      • С одной стороны мы можем проверять новые функции, которые включены в последнюю сборку продукта
      • С другой – проводить регрессионное тестирование, т.е. проверять что функционал из предыдущих версий не пострадал после внедрения нового. Понятие и цели регрессионного тестирования – являются важным и частым вопросом на интервью
    • По ожидаемому результату: позитивное и негативное тестирование:
      • Позитивное тестирование – проверки, цель которых получить положительный результат, правильную отработку системы
      • Негативное тестирование – проверка сценариев, когда действие не может быть выполнено системой, анализ того, как система реагирует на ошибки и некорректные запросы
    • По уровню знаний системы: тестирование методом черного, белого или серого ящика:
      • Метод тестирования черного ящика – это проверка ПО с точки зрения внешнего мира, когда внутреннее устройство продукта неизвестно. В данном случае мы сосредоточены на проверке функционалиности продукта
      • Метод тестирования белого ящика – проверка реализации ПО, когда мы представляем его внутреннюю структуру, имеем доступ к коду
      • Метод тестирования серого ящика – комбинация первых двух видов. При данном подходе мы концентрируемся на конечной функциональности ПО, но знаем его внутреннюю реализацию, что дает больше идей о том, как этот продукт тестировать
    • По степени автоматизации: ручное и автоматизированное тестирование:
      • Во первых, здесь нужно объяснить разницу между этими видами тестирования, что просто: ручное – выполняется вручную, автоматизированное – с использованием средств автоматизации, программных средств (т.е. одна программа тестирует другую)
      • Во вторых, часто требуется объяснить, когда выгодна, не выгодна автоматизация или невозможна автоматизация
    • По уровню планирования: тестирование по тестовым кейсам и исследовательское тестирование
      • В первом случае мы заранее планируем какие проверки будем выполнять и готовим их в виде тестовых кейсов\тестовых сценариев.
      • Во втором – мы исследуем продукт в «свободном плавании», выполняем те проверки и в той последовательности, которые кажутся необходимыми в данный момент времени.

    В данном вопросе главное – суметь объяснить на примерах назначения и различия видов тестирования. Очень важно помнить и понимать, что все эти виды и типы тестирования не обязательно являются взаимоисключающими, их нельзя перечислить в один ряд через запятую. Это скорее взгляд с разных точек зрения на то, как тестировать и что тестировать. Поэтому, например, функциональное тестирование может быть: в рамках белого и черного ящика; можно проводить его вручную, а можно использовать автоматизацию; мы можем проверять позитивные или негативные функциональные сценарии; можно проверять функционал проходя по тестовым сценариям или без них и т.д. С остальными видами дело обстоит также.

    В среде разработки программного обеспечения мы часто сталкиваемся с путаницей в понятиях «обеспечение качества ПО» и «тестирование». Из-за этой путаницы руководители молодых компаний пытаются улучшить качество продукта, ограничиваясь внедрением тестирования. Попробуем разобраться и понять, в чем состоит существенная разница между тестированием ПО (Testing) и обеспечением его качества (QA).

    Почему это важно

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

    «Разработчики все безответственные… Этот тестировщик неквалифицированный… Я нахожу баги через минуту использования продукта… Да вы кроме чаепитий там вообще что-то делаете?!» – выслушивали мы от директора после каждого релиза. Дальше последовало решение руководства о наборе команды опытных тестировщиков вместе с руководителем отдела. Всё это сопровождалось многочисленными разговорами о том, каким должен быть качественный продукт.

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

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

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

    В соответствии с глоссарием ISTQB, Тестирование – это процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ, с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и для определения дефектов. Только вдумайтесь! Оценка продукта и результатов работ… Разве может оценка улучшить качество? Качество же – это способность ПО при заданных условиях удовлетворять установленным или предполагаемым потребностям.

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

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

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

    Что делает QA-специалист:

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

    В идеальном мире с идеальными процессами тестировщики вообще не нужны! Специалисты QA примут превентивные меры, и на долю тестировщика останется так мало работы, и она будет настолько примитивная, что каждый участник процесса сможет отвечать за выполнение необходимых критериев на вверенном ему участке функционала. На тему современного обеспечения качества без бюрократии и простоев очень советую прочитать потрясающую книгу «Как тестируют в Google» . Описанные в ней идеи просты и понятны, и в то же время от них веет масштабностью и результативностью.

    Что могут сделать тестировщики для улучшения качества продукта

    Многие ли компании себе целый отдел обеспечения качества? Задумаемся: действительно ли тестировщики – такие ограниченные в правах, замкнутые в оковы регламентов и инструкций люди, которые не в состоянии повлиять на качество продукта? Чаще всего, это не так. Все, кто хочет изменить мир к лучшему, начинают с себя, со своей работы над продуктом. Например, руководители в тестировании – с работы своей команды, ведь качественная организация процесса позволяет повысить эффективность тестирования.

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

    Например, если есть жалобы на пропускаемые дефекты, то мы начинаем их фиксировать для анализа причин пропуска. Допустим, после пары итераций станет понятно, что причина в недостаточном покрытии функционала тестами. Отлично! Начинаем фиксировать процент покрытия. Ага, у нас недостаточно тестов. Почему? Да потому, что сроки на подготовку и тестирование слишком сжатые, и мы не успеваем писать тесты в требуемом для полного покрытия объеме. Оценка сроков адекватная, только вот передача версии в тестирование происходит позже запланированной даты, а сроки релиза отодвигать нельзя. В чем проблема? Разработчики не успевают – их оценка на разработку всегда оказывается на 2-3 дня меньше фактического времени на реализацию. Почему? Допустим, менеджер подбрасывает незапланированные задачи в середине итерации. Зачем? Заказчик требует – он не видит разницы между разработкой сайта-каталога и сайта-магазина.

    Всё, корень проблемы ясен, и можно действовать. Само собой, решение этой проблемы не ляжет на плечи отдела тестирования, а вот менеджеру проекта будет гораздо проще объяснить клиенту важность стабилизации задач версии, имея красивые таблички статистики и графики влияния незапланированных задач на качество продукта на выходе. За чашечкой чая заказчик и менеджер решат: либо стоит развивать продукт итеративно, стараясь соблюдать поставленные сроки – и тогда придется умерить желания заказчика; либо любое изменение в составе версии будет сопровождаться повторной оценкой и откладыванием срока релиза.

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

    Влияние процесса тестирования на качество ПО

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

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

    Но попробуем разобраться, чем же опросник отличается от теста?

    Опросник - разновидность психологических тестов?

    В "Энциклопедическом словаре: Психология труда, управления, инженерная психология и эргономика" , изданном в 2005 году, читаем:

    Опросник одна из разновидностей психологических тестов .

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

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

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

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

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

    Какая разница?

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

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

    Опросник изучает черты характера.

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

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

    И последнее очень важное отличие опросника от теста:

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

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

    В качестве примеров опросников можно назвать следующие:

    • опросник потребности в достижении Ю.М. Орлова;
    • опросник Шмишека, позволяющий определить тип акцентуаций личности;
    • опросник Е.А. Климова, определяющий направленность личности, чтобы помочь определиться с предпочтительным типом профессии, и многие другие.

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

    В терминах бывает сложно разобраться, особенно когда значения схожи или пересекаются. Сегодня речь пойдет об обеспечении качества (QA – от англ. Quality Assurance). Это неотъемлемая часть разработки мобильных приложений, роль которой часто недооценивают. А зря.

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

    Что есть что?

    Существует 3 термина, которые легко перепутать: тестирование (Testing), контроль качества (QC – Quality Control) и обеспечение качества (QA — Quality Assurance). Все они связаны друг c другом: QA – самое широкое понятие, оно включает в себя QC, в которое входит тестирование.

    1. Обеспечение качества (QA) отвечает за весь процесс разработки, поэтому должно быть интегрировано во все этапы разработки: от описания проекта до тестирования, релиза и даже пост-релизного обслуживания. Специалисты QA создают и реализуют различные тактики для повышения качества на всех стадиях производства: подготовка и установление стандартов, анализ качества, выбор инструментов, предотвращение появления ошибок и постоянное усовершенствование процесса.
    2. Задача Контроля качества (QC) — гарантировать соответствие требованиям (поиск ошибок и их устранение). QC ориентирован на проверку продукта, включает в себя многие процессы, такие как анализ кода, технические обзоры, анализ дизайна, тестирование и пр.
    3. Тестирование — это проверка результатов работы на соответствие требованиям.

    Почему необходимо обеспечение качества?

    Не экономьте на QA! Закладывайте эти расходы в бюджет разработки вашего приложения. Да, ценник от этого значительно вырастет — обеспечение качества может составить 25-50% от стоимости разработки приложения.

    Помните: вы выпускаете продукт на высококонкурентный рынок (каким является рынок мобильных приложений) — нельзя делать его как попало. Лучше до релиза по максимуму «выловить» баги, чтобы не обрабатывать негативные отзывы. Не факт, что вам дадут второй шанс после крайне неудачного опыта, даже если вы все исправите. Не рискуйте лояльностью пользователей и своей репутацией. Вложитесь в QA, это оправданные траты.

    Критичных проблем вы сможете избежать, но небольшие ошибки возможны. Даже в продуктах, выпускаемых Microsoft, Google и Facebook, которыми каждый день пользуются миллионы, находятся проблемы и недоработки. Способа создать идеальное приложение с первой попытки пока не изобрели, но есть методы, позволяющие свести вероятность ошибок к минимуму и предотвратить их появление.

    Что вы получаете в результате?

    • Тест-план (Test plan) . Документ, описывающий полный объем работ, служит основой для тестирования. Тест-план включает описание объекта тестирования, задачи тестирования и объемы работ, тестовые сценарии, распределение обязанностей членов команды, ожидаемые результаты тестирования, указание тестовой среды и инструментов.
    • Тестовые сценарии (Test cases) . Тестовый сценарий — перечень действий, которые необходимо выполнить, чтобы проверить определенную функцию или функции приложения.
    • Доступ к аналитике . Получив доступ к системе отслеживания ошибок, вы сможете увидеть все обнаруженные баги и убедиться, что они были устранены.

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