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

  • 08.08.2021

Отказ от тестирования часто связан с критическим отношением к нему со стороны рекламных (особенно творческих) работников, а также с экономией денежных средств и времени. Тестирование может затормозить запуск рекламной кампании, а значит – и самого продукта. Вместе с тем очевидно, что при больших бюджетах тестирование помогает избежать многомиллионных ошибок. Оно также может быть полезным и для некрупных рекламодателей, для которых несложно подобрать простые, недорогие тесты. Как говорят классики рекламы, «тестирование может быть ограни­ченным или даже неудачным, но оно все равно даст что-то, от чего можно отталкиваться, чем можно руководствоваться».

Исследователи насчитывают несколько тысяч видов тестов. Не меньше существует и мнений о полезности и правильности проведения тех или иных тестов.

Один из основных вопросов оценочных иссл дований: «Что собственно тестировать?» Те же классики рекламы утверждали, что «эффект рекламы (за исключением рекламы посылторга) в основном не поддается измерению... Рекламодатели, конечно же, хотят иметь возмож­ность учета, но рекламу часто приходится измерять методами более скромными и более неосязаемыми, чем хотелось бы. Боюсь, нам придется примириться с тем, что большая часть рекламы сможет полностью окупить себя только по прошествии длительного отрезка времени, а степень окупаемости невозможно проверить сколь-нибудь точно».

Действительно, выявить решающий фактор зависимости между самим рекламным обращением и его воздействием (или отсутствием этого воздействия) на отдельного человек весьма затруднительно. Например, в ходе одного из исследований группу, состоящую из управляющих по товару и управляющих службой рекламы фирм, руководителей рабочих групп рекламных агентств, творческих работников, спе­циалистов по средствам рекламы и специалистов исследователь­ских служб, «попросили отобрать лучшие объявления из числа тех, что были уже тщательно проверены на рынке. Результат? Хотя экспертам, в общем-то, удалось установить, какие объявления должны были привлечь наибольшее число читателей, они не сумели определить, какие объявления помогли продать больше товара». Как уже говорилось ранее, кроме рекламы, слишком много других различных факторов влияет на продажи. А по утверждению авторитетнейших специалистов, «методов быстрого и несложного контроля многочисленных факторов, оказывающих влияние на сбыт, не существует».

Согласно мнению Ч. Сэндиджа, В. Фрайбургера и К.Ротцолла, «на реакцию влияет множество всевоз­можных “причин”, а каждая переменная раздражителя порождает множество “эффектов”. Одно и то же объявление может, к примеру, раздражать, информировать, забавлять, подкреплять уверенность, побуждать к действию, может оказаться полностью проигнорированным в момент контакта, а позднее его могут быстро забыть или частично припомнить, оно же может стать причиной перемены в отношении или осведомленности. Поэтому совершенно ясно, что, решая, какими параметрами ответной реакции воспользоваться, исследователь должен во многом руко­водствоваться здравым смыслом».

В связи с вышесказанным представляется очевидным, что объявление (прежде чем на него отреагируют) должно быть увидено. После контакта с рекламой человек также должен знать торговую марку или название компании, разбираться в свойствах, преимуществах и выгодах товара. У человека может появиться рациональная или эмоциональная предрасположенность к покупке определенного товара. К этому можно добавить мнение руководства одного из крупнейших мировых рекламодателей General Motors : «Эффективность будет прежде всего измеряться достоверностью, способностью использовать эмо­ции и убедительностью рекламы».

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

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

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

В настоящей главе были рассмотрены различные виды тестов, применяемы в рекламе, различные методы тестирования, критерии тестирования и этапы тестирования. Были рассмотрены также особенности тестирования рекламы в различных СМИ, для чего часто используются различные же подходы.

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

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

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

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

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

Видеоверсия лекции " Тестирование эффективности современной рекламы "

(готовится к публикации)

Более подробную информацию на эту тему можно найти в книге А. Назайкина

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

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

Первое, что приходит на ум, – по количеству найденных дефектов. И именно этот показатель я сходу пытался ввести в «Инрэко ЛАН». Однако сразу же возникла бурная дискуссия, которая и подтолкнула меня к анализу данного критерия. На эту тему я и хочу порассуждать в этой статье.

Количество найденных дефектов - крайне скользкий показатель. Об этом же твердят и все ресурсы в сети, обсуждающие данную проблему (http://www.software-testing.ru/ , blogs.msdn.com/imtesty , it4business.ru , sqadotby.blogspot.com , blogs.msdn.com/larryosterman , sql.ru , http://www.testingperspective.com/ и много-много других). Проанализировав собственный опыт и эти ресурсы, я пришел к следующему дереву проблем:

Во-первых, дефект дефекту – рознь. Один тестировщик может искать дефекты в расположении кнопочек в приложении, другой – копаться в логике и придумывать сложные тестовые ситуации. В большинстве случаев первый тестировщик найдет больше дефектов, потому что даже на подготовку теста у него будет уходить гораздо меньше времени, но ценность таких дефектов значительно ниже. Эта проблема легко решается введением критичности дефекта. Можно оценивать по количеству найденных дефектов в каждой из категорий. У нас, например, их 4: критичный, значительный, средний и малозначительный. Но поскольку граница определения критичности не совсем четкая, хотя у нас и есть формальные признаки критичности, то можно пойти двумя более надежными путями. Первый - определенная часть найденных дефектов за выделенный период должна быть не малокритичными дефектами. Второй – не учитывать при оценке малозначительные дефекты. Таким образом, мы боремся с желанием тестировщика набрать как можно большее количество дефектов за счет описания мелочных изъянов, заставляя его (или чаще её) копать глубже и находить серьезные дефекты. А они всегда есть, поверьте моему опыту. Я выбрал второй вариант – отбрасывать малозначительные дефекты.

Вторая причина “скользкости” такого критерия – присутствие в системе достаточного количества дефектов, чтобы тестировщик мог их найти. Тут есть три фактора. Первый – сложность логики и технологии системы. Второй - качество кодирования. И третий – стадия проекта. Разберем по порядку эти три фактора. Сложность логики и технологии, на которой написана система, влияет на потенциальные недочеты, которые могут быть допущены. Причем зависимость здесь далеко не прямая. Если реализовывать простую логику на сложной или незнакомой платформе, то ошибки будут в основном связаны с некорректным использованием технологии реализации. Если реализовывать сложную логику на примитивной платформе, то, скорее всего, ошибки будут связаны как с самой логикой, так и со сложностью реализации такой логики на примитивном языке. То есть нужен баланс при выборе технологии реализации системы. Но часто технологию диктует заказчик или рынок, поэтому повлиять мы вряд ли можем. Значит, остается лишь учитывать этот фактор как некий коэффициент потенциального количества дефектов. Причем значение этого коэффициента, скорее всего, нужно определять экспертным путем.

Качество кодирования. Здесь мы уже точно никак повлиять не можем на разработчика. Зато мы можем: а) опять же экспертно оценить уровень разработчика и включить его как еще один коэффициент и б) постараться предотвратить появление ошибок в коде за счет модульных тестов, сделав обязательным требованием 100% покрытие кода модульными тестами.

Стадия проекта. Давно известно, что найти все дефекты невозможно, разве что для тривиальной программы или случайно, поскольку совершенству нет предела, а любое несовпадение с совершенством можно считать дефектом. Но одно дело, когда проект находится в активной стадии разработки, и совсем другое – когда в фазе поддержки. А если еще учесть факторы сложности системы и технологии и качества кодирования, то понятно, что все это коренным образом влияет на количество дефектов, которые тестировщик способен найти. С приближением проекта к завершению или к фазе поддержки (называем это все условно и определяем сейчас интуитивно) количество дефектов в системе уменьшается, а значит и количество находимых дефектов тоже. И тут нужно определить момент, когда требовать с тестировщика нахождения определенного количества дефектов становится неразумно. Для определения такого момента было бы неплохо знать, какую часть дефектов от общего их числа мы способны найти и сколько дефектов еще осталось в системе. Это тема для отдельной дискуссии, но можно применить достаточно простой и эффективный статистический метод.

На основании статистики предыдущих проектов можно понять с определенной погрешностью, сколько дефектов было в системе и сколько было найдено командой тестирования в различные периоды проекта. Таким образом, можно получить некий среднестатистический показатель эффективности команды тестирования. Его можно декомпозировать по каждому отдельному тестировщику и получить персональную оценку. Чем больше опыта и статистики, тем меньше будет погрешность. Также можно использовать метод «подсева ошибок», когда мы точно знаем, сколько ошибок в системе. Естественно, что нужно учитывать дополнительные факторы, такие как тип системы, сложность логики, платформу и т.п. Так, мы получаем зависимость между фазой проекта и процентом находимых дефектов. Теперь можно применить данную зависимость в обратную сторону: зная число найденных дефектов и текущую фазу проекта, мы можем определить общее число дефектов в нашей системе (с некоторой погрешностью, конечно же). И дальше на основании показателей персональной или общей оценки можно определить, сколько дефектов тестировщик или команда способны найти за оставшийся период времени. Отталкиваясь от этой оценки, уже можно определять критерий эффективности работы тестировщика.

Функция показателя эффективности работы тестировщика может выглядеть следующим образом:

Defects – количество находимых дефектов,

Severity – критичность находимых дефектов,

Complexity – сложность логики системы,

Platform – платформа реализации системы,

Phase – фаза проекта,

Period – рассматриваемый период времени.

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

Учесть все факторы на данный момент пока не удается, однако совместно с нашим ведущим разработчиком Иваном Астафьевым и руководителем проектов Ириной Лагерь, мы пришли к следующей формуле, учитывающей число дефектов и их критичность:

, где

E – эффективность, определяемая по числу найденных дефектов,

D Заказчик – число дефектов, найденных заказчиком, но которые должен был найти оцениваемый тестировщик,

D Тестировщик – число дефектов, найденных тестировщиком,

k и d – поправочные коэффициенты на общее количество дефектов.

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

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

Здесь есть нюанс, связанный с общим количеством анализируемых дефектов. Естественно, чем больше статистики, тем лучше, но иногда нужно проанализировать различные этапы проекта, иногда просто требуется оценка по каждому периоду времени. И одно дело, когда за период найдено 4 дефекта и 2 из них – заказчиком, и совсем другое, когда найдено 100 дефектов, и 50 из них - заказчиком. В обоих случаях отношение числа дефектов, найденных заказчиком и тестировщиком, окажется равным 0.5, но мы-то понимаем, что в первом случае не все так плохо, а во втором пора бить в набат.

Без особого успеха попытавшись сделать строгую математическую привязку к общему количеству дефектов, мы приделали, по выражению той же Ирины Лагерь, «костыли» к этой формуле в виде интервалов, для каждого из которых определили свои коэффициенты. Интервала получилось три: для статистики от 1 до 20 дефектов, от 21 до 60 дефектов и для статистики по более чем 60 дефектам.

Кол-во дефектов

k

d

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

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

Имеем графики следующего вида:

Черный график отражает критерий для выборки более 60 дефектов, желтый – для 21-60 дефектов, зеленый – для выборки менее 20 дефектов. Видно, что чем больше выборка, тем левее график пересекает ось X. Как уже говорилось, для оценивающего сотрудника это означает, что чем больше выборка, тем больше можно доверять этой цифре.

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

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

Кроме того, такая методика оценки эффективности тестировщика порождает несколько дополнительных проблем:

1.Один дефект начинает делиться на несколько более мелких.

· Руководитель тестирования, заметивший такую ситуацию, должен пресекать ее уже неформальными методами.

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

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

3.Отсутствие оценки качества находимых дефектов, поскольку единственной целью тестировщика становится количество дефектов, и, как следствие, отсутствие мотивации у тестировщика к поиску “качественных” дефектов. Все-таки нельзя приравнивать критичность и “качество” дефекта, второе является менее формализуемым понятием.

· Здесь решающую роль должен сыграть “настрой” и тестировщика и руководителя. Только общее правильное (!) понимание значения такой количественной оценки может решить данную проблему.

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

В. В. Одинцова

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

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

Основной задачей HR-Лаборатории Human Technologies является разработка качественной продукции. Одним из условий создания такой продукции являются периодические проверки тестовых методик на предмет их соответствия ряду психометрических требований (валидности, надежности, репрезентативности, достоверности). Для этого, после набора достаточного количества протоколов проводится статистический анализ тестовых методик.

Рассмотрим психометрический анализ (общая выборка которого составила 660 человек).

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

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

Опросник включает 75 пунктов по три варианта ответа в каждом.

ШКАЛЫ теста представляют собой точное воспроизведение факторов "Большой Пятерки" в их международном варианте (за исключением пятого фактора, который в ряде западных версий B5 обозначается как "открытость новому опыту - ограниченный практицизм"):

  • экстраверсия - интроверсия
  • согласие - независимость
  • организованность - импульсивность
  • эмоциональная стабильность - тревожность
  • обучаемость - инертность

1. Проверка валидности

При проверке существующих шкал традиционным способом - путем расчета корреляций между ответами на вопросы и суммарным баллом по шкале - мы выяснили, что практически все пункты значимо коррелируют со "своими" шкалами со средним коэффициентом корреляции равным 0,35.

При проверке содержательной валидности теста были проанализированы формулировки заданий теста, содержательно отражающие соответствующую предметную область (область поведения) и имеющие значимую (положительную или отрицательную) корреляцию с суммарным баллом:

Шкала Пример заданий теста Коэффициент корреляции
ЭКСТРАВЕРСИЯ Для меня важно высказать свое мнение окружающим (0,31)
Я люблю участвовать во всевозможных конкурсах, соревнованиях и т.п. (0,41)
Мне нравится ходить в гости и знакомиться с новыми людьми (0,5)
СОГЛАСИЕ Большинству людей нельзя доверять (-0,23)
Мои интересы для меня превыше всего (-0,22)
"Кто людям помогает, тот тратит время зря, хорошими делами прославиться нельзя" (-0,3)
"Каждый - сам за себя" - вот принцип, который не подведет (-0,4)
САМОКОНТРОЛЬ Когда я ложусь спать, то уже наверняка знаю, что буду делать завтра (0,37)
Взяв книгу, я всегда ставлю ее на место (0,35)
Перед ответственными делами я всегда составляю план их выполнения (0,37)
СТАБИЛЬНОСТЬ Я легко краснею (-0,28)
Если я уловил(а) возникновение нежелательной ситуации на работе, то это всегда вызывает у меня тягостное сомнение до тех пор, пока ситуация не прояснится (-0,3)
В конце дня я обычно устаю настолько, что любая мелочь начинает выводить из себя (-0,32)
Испортить мне настроение совсем просто (-0,42)

Анализ приведенных формулировок говорит о достаточно высокой содержательной валидности теста.

2. Проверка надежности

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

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

В нашем случае рассчитанный для каждой шкалы альфа-коэффициент надежности Кронбаха показал в целом вполне приличный уровень внутренней согласованности, традиционный для личностных экспресс-опросников, в которых субшкалы содержат ограниченное число пунктов (менее 20):

Напомним, что строгим психометрическим требованиям, предъявляемым к эффективно работающему личностному тесту, соответствует значение альфа-коэффициентов выше 0,8.

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

Особенно остро это сказалось на факторных шкалах "СОГЛАСИЕ" и "ОБУЧАЕМОСТЬ", по которой альфа-коэффициент оказался ниже 0,6.

3. Проверка репрезентативности

При переходе от выборки стандартизации (рис.1 - 300 человек) к выборке популяции (рис.2 - 660 человек) проявляется устойчивость конфигурации распределения тестовых баллов, что говорит о репрезентативности тестовой методики:

Рис.1. Выборка стандартизации (300 человек)

Рис.2. Выборка популяции (660 человек)

Помимо визуальной схожести этих распределений, использованный нами статистический хи-квадрат критерий Пирсона показал следующую степень сходства распределений:

Данные значения хи-квадрата попадают в промежуток неопределенности: когда нельзя однозначно принять или однозначно отвергнуть гипотезу о согласованности распределений.

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

4. Проверка достоверности

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

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

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

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

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

Тестирование программного обеспечения является неотъемлемой частью цикла разработки программного обеспечения.

Что такое тестирование программного обеспечения?

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

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

Методика тестирования

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

3) Системное тестирование

4) Приемочные испытания

В первую очередь проводится модульный тест. Как подсказывает название, это метод испытания на объектном уровне. Отдельные программные компоненты тестируются на наличие ошибок. Для этого теста требуется точное знание программы и каждого установленного модуля. Таким образом, эта проверка осуществляется программистами, а не тестерами. Для этого создаются тест-коды, которые проверяют, ведет ли программное обеспечение себя так, как задумывалось.


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

Системное тестирование

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

Приемочные испытания

Это последний тест, который проводится перед передачей программного обеспечения клиенту. Он проводится, чтобы гарантировать, что программное обеспечение, которое было разработано отвечает всем требованиям заказчика. Существует два типа приемо-сдаточных испытаний - то, которое осуществляется членами команды разработчиков, известно, как внутреннее приемочное тестирования (Альфа-тестирование), а другое, которое проводится заказчиком, известно, как внешнее приемочное тестирования.

Если тестирование проводится с помощью предполагаемых клиентов, оно называется приемочными испытаниями клиента. В случае если тестирование проводится конечным пользователем программного обеспечения, оно известно, как приемочное тестирование (бета-тестирование).

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

Тестирование методом черного ящика

Тестирование методом черного ящика осуществляется без каких-либо знаний внутренней работы системы. Тестер будет стимулировать программное обеспечение для пользовательской среды, предоставляя различные входы и тестируя сгенерированные выходы. Этот тест также известен как Black-box, closed-box тестирование или функциональное тестирование.

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

Тестирование методом "Белого ящика", в отличие от "черного ящика", учитывает внутреннее функционирование и логику работы кода. Для выполнения этого теста, тестер должен иметь знания кода, чтобы узнать точную часть кода, имеющую ошибки. Этот тест также известен как White-box, Open-Box или Glass box тестирование.

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

Тестирование методом серого ящика или Gray box тестирование, это что-то среднее между White Box и Black Box тестированием, где тестер обладает лишь общими знаниями данного продукта, необходимыми для выполнения теста. Эта проверка осуществляется посредством документации и схемы информационных потоков. Тестирование проводится конечным пользователем, или пользователям, которые представляются как конечные.

Нефункциональные тесты

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

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


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


Как подсказывает название, эта методика тестирования проверяет объем кода или ресурсов, которые используются программой при выполнении одной операции.

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

Тесты в процессе разработки программного обеспечения

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

Основными шагами, участвующими в данной методике тестирования программного обеспечения, являются:

  • Анализ потребностей
  • Тест дизайна
  • Тест реализации
  • Тестирование, отладка и проверка кода или продукта
  • Внедрение и обслуживание

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

Agile Model

Эта методика основана на избирательном сочетании последовательного и итеративного подхода, в дополнение к довольно большому разнообразию новых методов развития. Быстрое и поступательное развитие является одним из ключевых принципов этой методологии. Акцент делается на получение быстрых, практичных, и видимых выходов. Непрерывное взаимодействие с клиентами и участие является неотъемлемой частью всего процесса разработки.

Rapid Application Development (RAD). Методология быстрой разработки приложений

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

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

Спиральная модель

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

Rational Unified Process (RUP). Рациональный унифицированный процесс

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

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


Перевод : Ольга Алифанова

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

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

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

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

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

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

Так как эффективность в данном контексте связана с верификацией, это означает, что верификация может превратиться в статическую деятельность.

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

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

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

Изящество можно рассматривать в том числе как минимизацию сложности. В мире разработки люди часто делят сложность решений на обязательную и случайную. Следовательно, для того, чтобы решения в тестировании были изящными, они должны состоять только из "обязательной сложности" и практически не содержать случайной. Звучит, наверное, загадочно? Да, возможно, так как сколько людей – столько мнений о том, где начинается "сложность". Для меня сложность решений в тестировании возникает, когда в системе нет выборов и в наличии высокая неопределенность.

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

Не буду занудничать на эту тему, а просто приведу примеры того, о чем я говорю. В своих примерах я хочу попробовать заставить команды тестирования думать о своих тестах, используя термины "эффективность", "результативность" и "изящество". Начну с некоторых аксиом (не подберу другого слова) и постараюсь сделать свои примеры как можно короче и понятнее. Есть вещи, в которые должна верить вся команда – или, как минимум, действовать так, как будто она в них верит. И первая же моя аксиома утверждает то, о чем я выше говорил!

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

Вот несколько примеров, иллюстрирующих эти положения. Для начала давайте рассмотрим все эти концепции применительно к тесту.

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

Теперь давайте применим эти концепции к тест-сьюту:

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

И, наконец, давайте приложим эти определения к тестированию как виду деятельности:

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

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

  • Некоторые тестировщики предпочитают называть тест-кейсы "условиями теста". Некоторые – наоборот. Кто-то игнорирует оба термина. Я считаю, что результативное тестирование группирует тестовые условия и делает их вариациями тест-кейсов. Результативное тестирование использует условия теста, заданные особыми параметрами нужных данных.
  • Терминология "позитивное/негативное тестирование" давно уже вышла из моды у опытных тестировщиков. Изящное тестирование концентрируется на описании валидных и невалидных условий. Это означает, что тестировщики должны эффективно и результативно тестировать, определяя все условия теста, которые могут изменяться (что приводит, в свою очередь, к группировке валидных и невалидных условий), а также убедиться, что они принимают взвешенные решения, выбирая определенные наборы данных и игнорируя остальные.
  • Изящные тесты – это чемпионы ваших тестов. Если у вас есть группа тестов, проверяющих по факту схожие вещи, а ваше время ограничено – вы успеете прогнать только часть из них. В таких случаях используйте тесты, которые с большой долей вероятности вскроют целый пласт ошибок. Такие тесты могут быть крайне изящными.
  • Эффективный тест должен быть ни слишком простым, ни чересчур сложным. Конечно, возможно впихнуть в один кейс целую серию проверок, но возможные побочные эффекты такого способа создания тестов могут замаскировать кучу багов. Следовательно, результативные кейсы должны включать разные точки наблюдения (или другой путь к той же самой точке наблюдения), и выполняться по отдельности.
  • Некоторые техники тестирования крайне эффективны в плане выбора специфических данных и организации этих данных в комбинации или последовательности. Но изящное решение возникнет, когда тестировщики выбирают эти данные, исходя из взаимодействия разных функциональностей и потоков данных, и исследуют пути через пользовательский интерфейс с пониманием того, как живой человек будет использовать эту систему.
  • Результативный кейс должен быть способен дать вам информацию. Вам нужны тесты, которые дадут ответы на вопросы, заданные вами. Цель теста – совершенно необязательно поиск бага, его цель – это сбор информации. Тест ценен не тогда, когда он может найти баг – он должен быть способен снабжать вас информацией (хотя эта информация может заключаться и в наличии бага, если с приложением что-то не так). Изящное решение всегда нацелено на получение определенной информации в ходе тестирования.
  • Результативное тестирование нуждается в понимании требований и их связи с тем, как пользователи воспринимают ценность нашего продукта. Нам нужно понимать наших пользователей, а не просто читать спецификации и требования! Изящное тестирование использует эвристики для структурирования этого понимания. Оно также заставляет тестирование рассказывать захватывающие истории о действиях реальных людей.

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