Процесс оценки по с целью убедиться что все работает согласно документации это
Вводная статья по тестированию: F.A.Q. новичка
Тестирование программного продукта — один из важнейших этапов в процессе его разработки. Незнание основных терминов и понятий может усложнить работу тестировщика. Мы решили собрать самые распространенные вопросы по тестированию ПО, чтобы помочь тем, кто только начинает свой путь в профессии или просто интересуется сферой IT. Некоторые из них касаются теории тестирования, другие — практики, третьи — документации в тестировании.
Благодарим за помощь в подготовке материала «Аплана. Корпоративный университет» и в частности его преподавателей: Александра Бегларяна («Базовый курс тестирования и тест-дизайна») и Екатерину Дрюпину (курс «Ручное функциональное тестирование»).
Что такое тестирование программного обеспечения (ПО)?
Согласно «Руководству к своду знаний по программной инженерии» (IEEE, SWEBOK, 2004), тестирование — это проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом.
Согласно «Стандартному глоссарию терминов, используемых в тестировании программного обеспечения» (ISTQB), тестирование — это процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и определения дефектов.
В разных источниках, скажем, в книгах, статьях, можно встретить большое количество определений понятия «тестирование». Разные специалисты пытались объяснить его как можно точнее, придумывая все новые и новые формулировки. Например, одна из самых простых: тестирование — это сравнение фактического результата с ожидаемым. А еще — одна из техник контроля качества, включающая планирование работ (Test Management), проектирование тестов (Test Design), выполнение тестирования (Test Execution) и анализ полученных результатов (Test Analysis). Это исследование программы с целью обнаружения ошибок; возможный способ оценки качества программного обеспечения в терминах найденных дефектов, исполненных тестов и протестированных систем и т.д.
Какие есть виды тестирования?
Все виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы:
Тестирование можно классифицировать…
По критерию запуска программы:
По объекту тестирования:
По степени автоматизации:
По времени проведения тестирования:
По степени подготовленности:
По признаку позитивности сценариев:
Есть еще более сложные и полные классификации. К примеру, вот такой вариант использует один из преподавателей «Аплана. Корпоративный университет» на своем курсе:
Можно ли выделить наиболее востребованные виды тестирования?
Опыт показывает, что наиболее востребованы ручное функциональное тестирование, автоматизированное функциональное тестирование и нагрузочное тестирование.
Ручное функциональное тестирование (РФТ) — это тестирование вручную, то есть без использования каких-либо автоматизированных средств. В этом случае инженер по тестированию берет на себя роль конечного пользователя и, в соответствии с тестовым сценарием, проверяет ПО или систему. Его задача — выявить поведение, отличное от ожидаемого конечным пользователем.
Ручное тестирование применяется в регрессионном (тестирование изменений), интеграционном (связь с другими системами) и при тестировании нового функционала.
Автоматизированное функциональное тестирование (АФТ) — процесс верификации программного обеспечения, при котором основные функции и шаги теста выполняются автоматически при помощи инструментов для автоматизированного тестирования. Для этого сначала разрабатывают ручные тесты, затем их автоматизируют — тесты выполняются программой-роботом, без привлечения ручных тестировщиков. АФТ может являться частью регрессионного тестирования и входить в комплексное.
Нагрузочное тестирование (НТ) позволяет определить, как и с какой скоростью программа работает под определенной нагрузкой. Нагрузочное тестирование рекомендуется проводить при выпуске нового программного обеспечения, доработке эксплуатируемого ПО и при изменении конфигурации стендов.
Есть ли какие-то базовые принципы тестирования?
Вот семь основных из них:
Как понять, когда нужно начинать тестирование?
Чем раньше обнаружен дефект, тем дешевле обходится его исправление, поэтому начинать тестирование нужно как можно раньше. Например, статическое тестирование (до фактического получения ПО) делает проще динамическую стадию. На ранних стадиях проще изменить тест-дизайн и т.д.
Что такое баги?
Баг (bug) или дефект — это отклонение фактического результата от ожидаемого, изъян в компоненте или системе, который может привести компонент или систему к невозможности выполнить требуемую функцию. Баги находят на этапе тестирования, затем нужна отладка (дебаггинг), которую выполняет разработчик. Отладка (debugging) — процесс поиска, анализа и устранения причин отказов в программном обеспечении. После отладки исправление требует новой проверки тестировщиком.
Какие инструменты инженер по тестированию обычно использует в своей работе?
Тестировщик самостоятельно определяет скорость работы, при которой он наиболее внимателен и эффективен. Как специалист, он должен уметь проводить ревизию своих активностей для выявления возможности ускорения действий.
Базовые инструменты тестировщика:
Как можно оценить качество ПО?
Оценка программного обеспечения производится согласно международному стандарту ISO 9126. ПО будет качественным, если можно обеспечить его функциональность, надежность, удобство использования, удобство сопровождения, производительность и переносимость. Чем больше атрибутов качества можно реализовать или поддержать (для производительности — это соответствие стандартам, временная эффективность и эффективность использования ресурсов и т.д.), тем выше будет качество ПО. У атрибутов есть и численные показатели — метрики, которые позволяют измерять прогресс в достижении качества.
Что такое тест-план и что в нем должно быть написано?
Тест-план — это документ, описывающий весь объем работ по тестированию, начиная с описания объекта, стратегии, расписания, критериев начала и окончания тестирования, до необходимого в процессе работы оборудования, специальных знаний, а также оценки рисков с вариантами их разрешения.
Как и в случае с тестированием, в профессиональной литературе можно встретить и другие определения тест-плана. Одно из самых коротких: тест-план — это документ, обобщающий и координирующий тестирование. А одно из самых длинных: тест-план — это документ, описывающий масштаб, подход, ресурсы и график тестирования, в котором определены тестовые элементы, отдельные части функционала, тестовые задания, специалисты, которые будут проводить конкретные тесты, и любые риски, требующие дополнительного планирования.
Основные разделы тест-плана:
Что такое тест-дизайн и зачем он нужен?
Тест-дизайн — одна из наиболее творческих деятельностей в IT. Это этап процесса тестирования ПО, на котором, в соответствии с определенными ранее критериями качества и целями тестирования, проектируются и создаются тестовые случаи (тест-кейсы).
Что является результатом работы инженера по тестированию?
Для большинства тестировщиков основной продукт работы — отчет о проделанных испытаниях в разрезе общего количества пройденных тестовых сценариев с их результатами, а также список открытых дефектов с указанием их критичности.
Есть ли какие-то книги, которые могут быть полезны новичку в тестировании?
Рекомендуем к прочтению следующие книги:
Процесс оценки по с целью убедиться что все работает согласно документации это
ГОСТ Р ИСО/МЭК 33002-2017
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
Требования к проведению оценки процесса
Information technology. Process assessment. Requirements for performing process assessment
Дата введения 2018-03-01
Предисловие
1 ПОДГОТОВЛЕН Обществом с ограниченной ответственностью «Информационно-аналитический вычислительный центр» (ООО ИАВЦ) на основе собственного перевода на русский язык англоязычной версии стандарта, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 22 «Информационные технологии»
ИСО/МЭК 33002 разработан подкомитетом ПК 7 «Системная и программная инженерия» совместного технического комитета СТК 1 «Информационные технологии» Международной организации по стандартизации (ИСО) и Международной электротехнической комиссии (МЭК).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты, сведения о которых приведены в дополнительном приложении ДА
6 ПЕРЕИЗДАНИЕ. Январь 2019 г.
7 Некоторые положения международного стандарта, указанного в пункте 4, могут являться объектом патентных прав. ИСО и МЭК не несут ответственности за идентификацию подобных патентных прав
Введение
Настоящий международный стандарт разработан взамен ИСО/МЭК 15504-2:2003 и ISO/IEC TR 15504-7:2008.
В настоящем стандарте определяется минимальный набор требований к проведению оценки, который обеспечит объективные, последовательные, воспроизводимые и репрезентативные результаты процесса оценки. Эти требования помогут убедиться в том, что проверка обеспечит последовательный результат, предоставят фактические свидетельства для подтверждения оценок результативности и обеспечения соответствия показателей оцениваемого процесса. Оценка процесса применяется в следующих случаях:
— проведение оценки организацией или для организации с целью определения состояния собственных процессов с целью их улучшения;
— проведение оценки организацией или для организации с целью определения того, насколько собственные процессы подходят для определенного требования или категории требований;
— проведение оценки организацией или для организации с целью определения того, насколько процессы других организаций подходят для определенной цели, заключения определенного договора или категории договоров.
Настоящий стандарт может быть использован в разных областях и компаниях любых размеров. Для обеспечения результативности оценки процесса могут применяться соответствующие методы, технические приемы и инструментарии.
ИСО/МЭК 33002 относится к множеству международных стандартов, обеспечивающих содержательную и последовательную основу для оценки характеристик качества процесса, основанных на объективных данных реализации процессов. Основы оценки охватывают процессы, используемые при разработке, сопровождении и эксплуатации систем в области информационных технологий, а также применяемые при проектировании, передаче, поставке и улучшении услуг. В целом в этих стандартах рассматриваются характеристики качества процесса любого типа. Результаты оценки могут использоваться для улучшения процесса или определения и оперирования рисками, связанными с применением процессов.
Семейство стандартов ИСО/МЭК 330ХХ устанавливает требования и ресурсы, необходимые для оценки процесса. Общая архитектура и содержание данного семейства стандартов приведены в ИСО/МЭК 33001:2015.
Некоторые международные стандарты семейства ИСО/МЭК 330ХХ по оценке процесса разработаны с целью замены и расширения частей серии стандартов ИСО/МЭК 15504. Детальные отличия семейства стандартов ИСО/МЭК 330ХХ от серии стандартов ИСО/МЭК 15504 приведены в ИСО/МЭК 33001 (см. приложение А).
1 Область применения
В настоящем стандарте установлен минимальный набор требований к проведению оценки, который обеспечит объективные, последовательные, воспроизводимые и репрезентативные результаты оценки процесса.
Требования настоящего стандарта могут использоваться самой организацией или от ее имени, чтобы:
a) облегчить оценку собственных процессов;
b) обеспечить основу для улучшения процесса и снижения риска, связанного с применением процесса;
c) создать систему оценок для достижения соответствующих качественных характеристик процесса;
d) создать объективный эталон для организаций.
Настоящий стандарт может быть использован в разных областях и компаниях любых размеров.
2 Нормативные ссылки
3 Термины и определения
В настоящем стандарте применены термины по ИСО/МЭК 33001:2015.
4 Проведение оценки
Цель оценки процесса состоит в понимании и оценке процессов, существующих в организационном подразделении.
Ключевые элементы процедуры оценки процесса указаны на рисунке 1.
В разделе 4 приведены требования к проведению оценки, которые обеспечат согласованность результатов оценки и предоставят фактические свидетельства для подтверждения оценок.
4.1 Общие требования
Оценку следует проводить в соответствии с процедурой, установленной в соответствующих документах. Документированная процедура оценки должна обеспечить достижение цели оценки и иметь соответствующую структуру, обеспечивающую ее строгое и независимое выполнение в соответствии с назначением.
Документированная процедура оценки должна предусматривать выполнение действий и задач, установленных в настоящем стандарте. В частности, документированная процедура оценки должна содержать:
— описание мероприятий по оценке в соответствии с 4.2;
— описание распределения ответственности в соответствии с 4.3;
— определения классов оценки, для которых используется документированная процедура оценки, а также описание характера и степени доработок в отношении каждого класса, указанного в документированной процедуре;
— определение критериев, которые обеспечат охват организационной деятельности и области действия процесса оценки с учетом стратегии сбора и анализа данных;
— определение метода (методов) оценки, используемого (используемых) для оценки критериев процесса;
— указание комплексного метода или комплекса методов оценки, либо их определение.
Классы оценки приведены в 4.6. Эти классы отражают различные уровни уверенности в результатах оценки.
Категории независимости разных органов и персонала, а также критерии их использования приведены в приложении А.
Документированная процедура оценки должна содержать комплекс мероприятий, приведенных в 4.2.
4.2 Мероприятия по оценке
Оценка процесса должна начинаться с подтверждения намерения заказчика провести оценку.
Разработанный и задокументированный план оценки должен включать в себя следующий минимум:
a) необходимые исходные данные, описанные в настоящем стандарте, (см. 4.4);
b) класс оценки (см. 4.6);
c) категорию независимости органа, проводящего оценку, ведущего оценщика и прочих участников группы оценки (см. приложение А);
d) способы коммуникации с персоналом, проводящим оценку;
e) указание на документированную процедуру оценки, включая:
1) стратегию и методы отбора, идентификации, сбора и анализа объективных свидетельств и данных с целью удовлетворения требований к охвату организационной модели или оценке процесса согласно определению для класса оценки (см. 4.6),
2) метод присвоения оценке определенной характеристики процесса (в зависимости от ситуации);
f) комплекс мероприятий, проводимых в процессе оценки;
g) ресурсы и график этих мероприятий;
h) обозначение и распределение ответственности участников оценки;
i) критерии, подтверждающие соответствие требованиям настоящего стандарта;
j) описание планируемых результатов оценки.
Функции и обязанности в рамках оценки процесса распределяют и доводят до сведения персонала, участвующего в проводимой оценке.
План оценки утверждает заказчик оценки, что должно быть документально оформлено.
Собранные данные должны быть достаточными для охвата оцениваемой организации и процесса в соответствии с выбранным классом оценки. Сбор данных осуществляется на базе прямых и косвенных свидетельств, которых должно быть достаточно для выбранного класса оценки (см. 4.6).
Необходимые для оценки процессов свидетельства и дополнительная информация собираются систематически с использованием следующих методов:
a) устанавливают соответствие между процессами организационного подразделения и элементами модели оценки процесса, указанными в области применения оценки;
SkillsCup.com
Сайт переехал сюда: SkillsCup.com
Верификация и валидация: в чем разница? (обновить)
Verification — постоянно выполняемый аналитический процесс проверки того, что разработка находится на правильном пути: каждый этап разработки является корректным, необходимым (не лишним) и удовлетворяет потребности следующего этапа. Проводится на всех этапах разработки. На каждом этапе следует убеждаться, что сделали именно то, что планировали, и это соответствует общей логике разработке. «Мы создаем систему правильно».
Validation (проверка правильности) — процесс проверки того, что реализованная система удовлетворяет предъявленным требованиям и работает так, как предполагалось. «Мы создаем правильную систему».
А теперь давайте рассмотрим эти 2 процесса подробнее.
Верификация
Согласно стандарту IEEE 1994, верификация — это
процесс оценки системы/компонента с целью определить, удовлетворяют ли результаты конкретной фазы условиям, наложенным в начале этой фазы.
Верификация позволяет убедиться в корректности переходов между фазами:
Верификация — больше чем деятельность группы по обеспечению качества (QA).
Нужно исследовать требования и ВИ и убедиться, что они полно и неизбыточно отвечают потребностям пользователей (функциям) верхнего уровня (п.2). Далее убедиться, что при проектировании использовались эти требования и ВИ, а технический проект получился полным и неизбыточным.
Валидация
Согласно стандарту IEEE 1994, валидация (проверка правильности) — это
процесс оценки системы/компонента во время или по окончании процесса разработки с целью определить, удовлетворяет ли она заданным требованиям.
Для проверки правильности проводятся приёмо-сдаточные испытания. Они основаны на сценариях тестирования, которые пользователь согласовывает, а затем выполняет в среде использования системы. Стандарт IEEE 829-2008 (Standard for Software and System Test Documentation) содержит образцы 8 документов, которыми следуют руководствоваться при планировании, организации и проведении тестирование:
Что такое тестирование программ и зачем оно нужно
Оказывается, 75% времени при создании программ уходит вовсе не на программирование. Разбираемся, чем же занимаются тестировщики.
Вероятно, ни одну вещь в мире нельзя сделать без ошибок, и программы не исключение. Допустим, вы написали код и не видите в нём явных багов. Как узнать, что будет при реальном использовании: поведёт ли себя программа так, как от неё ожидают?
Почему тестирование — это так важно
Вот типичные программные баги:
Прежде чем новая версия компьютерной программы, сайта или мобильного приложения попадает к пользователю, она должна пройти через руки инженеров-тестировщиков. Они ищут места в коде, где программа работает не так, как задумано. Чтобы найти как можно больше ошибок, тестировщики моделируют разные ситуации, которые могут возникнуть при использовании приложения.
Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.
Какие виды тестирования существуют
Пользователи непредсказуемы. Они могут делать не только то, что предусмотрено программой, но и то, что ею категорически не предусмотрено. Тестировщик должен проверить все возможные и невозможные сценарии их поведения и убедиться, что программа продолжает работать.
Вообще, у тестирования есть философия, которая строится на том, что в любой программе по определению есть ошибки и найти их все невозможно. А если вы почему-то не нашли ошибку, значит, просто плохо искали. Удачный тест для тестировщика — тот, при котором нашли баг. А если всё нормально работало, значит, тест неудачный и свою задачу не выполняет.
Ошибки возникают не только при кодировании, но и при проектировании системы, и даже на этапе разработки технического задания. Поэтому и тестируют код не только в самом конце работы, а на разных этапах.
Есть несколько видов тестирования:
Что тестируют на разных этапах разработки
Есть несколько уровней тестирования. Их проводят в разное время:
В зависимости от этапа разработки перед тестировщиками стоят разные цели:
Не бывает идеального тестирования: в принципе невозможно доказать, что программа работает правильно при любых условиях. Но тестировщики могут найти и уточнить, в каких условиях она работает неправильно.
Как обычно проходит тестирование
Как правило, тестировщики начинают работать с программой сразу после начала проекта:
После выхода каждой новой сборки программы сначала делают дымовое тестирование — проверяют, что приложение запускается и выполняет основные функции. Если всё в порядке, программу передают на дальнейшее тестирование. Если нет — сразу возвращают на доработку.
Следующий этап — регрессионное тестирование. Тестировщики ищут баги в новых участках кода и в тех местах, где исправляли ранее найденные ошибки.
После этого программу проверяют в разных уровнях: испытывают её функциональность, производительность, работу с окружением. Это можно делать вручную или с помощью автоматических тестов-кейсов.
Автоматизированное тестирование облегчает проверку и экономит время. Лучше всего это работает в сложных приложениях с большой функциональностью.
Когда есть результат, инженеры-тестировщики готовят отчёт по тестированию и отправляют его разработчикам, чтобы те исправили найденные баги. Так происходит от версии к версии, пока результаты не будут удовлетворять критериям, описанным в тест-плане.
Кто всё это делает: немного о профессии
Если проект большой, над ним работает целая команда: одни тестировщики готовят тесты, другие проверяют их полноту и логику, третьи занимаются непосредственно тестированием. Над небольшими задачами может работать один специалист, причём удалённо.
Тестировщики — среди самых востребованных сейчас специалистов-айтишников. Появляется множество новых программ, и каждой из них нужен контроль качества. QA-специалистов нанимают крупные компании-разработчики ПО, они могут стать фрилансерами и работать сразу на несколько фирм.
Как показывает статистика работных сайтов, на рынке не хватает разработчиков автотестов, а специалистов ручного тестирования достаточно. Средняя зарплата тестировщика в Москве больше 120 тысяч рублей, а по регионам —
примерно 55–60.
На скриншотах ниже — данные с HeadHunter. В сентябре 2020 года там было 3000 открытых вакансий тестировщика.
Тестирование программного продукта
Всем понятно, что программное обеспечение, разработанное для решения определенных задач должно решать эти определенные задачи. К сожалению, часто получается не совсем так. Программа, которая должна была выполнить простое действие, явно указанное на нажатой Вами кнопке, выполняет совсем другое – приводит Вас в ярость.
Содержание
Даже, если Вы настолько терпимы, что можете в течение получаса 18 раз перезапустить программу после сбоя и только после этого метнуть монитор точно в окно, Вы согласитесь с тем, что работа с данной программой была бы более комфортной, если бы она не «падала».
Как же сделать так, что бы случаи падения, зависания, невыполнения нужных действий разработанной Вами программы стали весьма редкими?
Точного ответа на данный вопрос нет. Но на протяжении столетий самые мудрые ученые годами думали на эту тему и, смогли таки, найти средство, которое если и не устраняет всех ошибок программы, то, по крайней мере, создает иллюзию деятельности по их устранению.
И это средство называется ТЕСТИРОВАНИЕ программного продукта.
По мнению мудрых людей, Тестирование является одним из наиболее устоявшихся способов обеспечения качества разработки программного обеспечения и входит в набор эффективных средств современной системы обеспечения качества программного продукта[1].
Качество программного продукта характеризуется набором свойств, определяющих, насколько продукт «хорош» с точки зрения заинтересованных сторон, таких как заказчик продукта, спонсор, конечный пользователь, разработчики и тестировщики продукта, инженеры поддержки, сотрудники отделов маркетинга, обучения и продаж. Каждый из участников может иметь различное представление о продукте и о том, насколько он хорош или плох, то есть о том, насколько высоко качество продукта. Таким образом, постановка задачи обеспечения качества продукта выливается в задачу определения заинтересованных лиц, их критериев качества и затем нахождения оптимального решения, удовлетворяющего этим критериям.
Когда и кто?
По мнению опытных разработчиков, тестирование программного продукта должно проводиться прям с самого начала его создания. Но при этом, сами опытные разработчики в тестировании не должны принимать участия, так как не царское это дело. Тестировать программный продукт должны специально обученные сотрудники, называемые тестировщиками, ибо даже самый опытный разработчик не сможет увидеть свою ошибку, даже с использованием самых новейших оптических приборов.
Тем не менее, все разработчики сходятся во мнении, что тестирование программного продукта с точки зрения классификации по целям должно делиться на два класса:
Функциональное тестирование
Под функциональным тестированием понимается проверка соответствия программного продукта функциональным требованиям, указанным в техническом задании на создание это продукта. Если говорить проще, то при функциональном тестировании проверяется выполняет ли программный продукт все функции, которые должен.
Итак, Вы таки решились провести функциональное тестирование. Вы заглядываете в техническое задание, читаете функциональные требования и понимаете, что по крайней мере они расположены не в том порядке, в каком можно производить тестирование. Вы будете удивлены, что еще достаточно давно другие уже заметили это несоответствие и придумали как его преодолеть.
Для проведения функционального тестирования персоналом отдела технического контроля разрабатывается документ программа и методика испытаний функционала приложения (ПМИ). Документ ПМИ содержит перечень сценариев тестирования программного продукта (test cases) с подробным описанием шагов. Каждый шаг сценария тестирования характеризуется действиями пользователя (специалиста по тестированию) и ожидаемыми результатами – ответной реакции программы на эти действия. Программа и методика испытаний обязана имитировать эксплуатацию программного продукта в реальном режиме. Это означает, что сценарий тестирования должен быть построен на основе анализа операций, которые будут выполнять будущие пользователи системы, а не быть искусственно составленной последовательностью понятных только разработчику манипуляций.[2]
Обычно, функциональное тестирование проводится на двух уровнях:
Нефункциональное тестирование
Нефункциональное тестирование оценивает такие качества программного продукта, как, например, эргономику или производительность.
Думаю, важность данного вида тестирования понятна и не требует обоснования. Ведь всем понятно, что если, к примеру, производительность системы не достаточна, то пользователям придется по пол дня ждать отклика на свои действия, что может привести к их массовой спячке.
Как следует из названия, при нефункциональном тестировании проверяется соответствие программного продукта нефункциональным требованиям из технического задания на его создание. И, как в случае с функциональным тестированием, для нефункционально разрабатывается программа и методика испытаний.
Тестирование встроенного ПО и соблюдение стандартов в эру Agile
Соблюдение отраслевых стандартов – это не то, чем вы можете пренебречь или заняться позже; это неотъемлемая часть процесса разработки встроенного программного обеспечения (ПО). Для некоторых индустрий, — таких как авионика, автомобилестроение и здравоохранение, — строгое следование стандартам качества при разработке сложных и безотказных встроенных систем становится жизненно необходимым условием выпуска продукта на рынок. Традиционно, тестирование играет важную роль в разработке встраиваемых систем для регулируемых стандартами отраслей. Однако за последние годы устоявшиеся практики и процессы тестирования, их место и роль в подобных проектах значительно преобразились. Это резко изменило все правила игры, а когда правила игры меняются, необходимо меняться вместе с ними, чтобы выиграть.
В условиях постоянного развития новых, ультрасовременных технологий компаниям необходимо быстро предлагать рынку надежные, безопасные, простые в использовании и совместимые с другими системами продукты – просто чтобы не потеряться в быстро меняющемся технологическом мире. В такой ситуации традиционная каскадная модель, где процесс разработки ПО строго последователен и тестирование выполняется в самом его конце, уходит в прошлое. Большую популярность приобретают методы DevOps и Agile, поскольку они позволяют инженерам выполнять задачи, которые раньше следовали друг за другом, одновременно.
Исследование, проведенное Ауригой при поддержке независимой исследовательской компании LTM Research, показывает, что эта эволюция роли тестирования в цикле разработки ПО имеет огромное значение. При постоянном дефиците времени производители по-прежнему не могут пожертвовать качеством, надежностью и безопасностью своего продукта. К примеру, широко обсуждаемые сегодня беспилотные автомобили являются источником повышенной опасности, а значит, требуют неукоснительного соблюдения стандартов. Нельзя обойтись и без тестирования встроенного ПО, поскольку практически все решения в области IoT и Connectivity основаны на встроенных технологиях.
Все отрасли стремятся к инновациям, быстрому развитию и распараллеливанию процессов, и это делает тестирование встроенного ПО еще более важным. Здравоохранение, где стандарты традиционно очень высоки, отличает огромный спрос на сложные и сверхточные алгоритмы – такие как, например, алгоритм автоматического распознавания сердечных ритмов для инновационного дефибриллятора, над которым сейчас трудятся инженеры Ауриги. Новые интеллектуальные больничные системы, «умное» медицинское оборудование и носимые устройства, которые появляются почти каждый день, должны быть безопасными и надежными.
Тестирование производительности
В ходе этапа тестирования производительности в первую очередь проводят нагрузочное тестирование, целью которого является проверка, будет ли система адекватно реагировать на внешние воздействия в режиме, близком к режиму реальной эксплуатации.
Кроме нагрузочного тестирования проводят испытания в условиях минимальных аппаратных средств и максимальной нагрузки – стрессовое тестирование, а также, испытания в условиях предельных объемов обрабатываемой информации – объемное тестирование.
Выделяют еще один вид тестирования: тестирование стабильности и надежности, которое включает в себя не только длительное испытание программного продукта в нормальных условиях, но и способность его возвращаться в нормальный режим функционирования после непродолжительных периодов стрессовых нагрузок.
Документация для тестирования
Как уже было указано выше, тестирование проводится в соответствии с программой и методикой испытаний, которая разрабатывается в соответствии с ГОСТ 34.603-92.
Для проведения тестирования разрабатывается контрольный пример, который должен содержать достаточно данных для проверки всех режимов работы программного продукта. Обычно, контрольный пример создается совместно заказчиком и исполнителем на основе реальных данных.
Для проведения всех видов тестирования производительности чаще всего создается так называемый генератор данных, который позволяет в автоматическом режиме создать достаточное количество данных, для достижения объективного результата при оценке производительности.
В ходе проведения тестирования составляется протокол тестирования, куда заносится информация о прохождении всех этапов и шагов тестирования и замечаниях полученных на испытаниях.
Если результат тестирования отрицательный, проводится устранение недостатков и повторное тестирование.
Исследовательское тестирование
Нагрузочное тестирование
1. Генерация тестовых сценариев
Для эффективного анализа сценарии должны быть наиболее близки к реальным сценариям использования. Важно понимать, что всегда возможны исключения, и даже самый подробный план тестирования может не покрыть отдельно взятого случая.
2. Разработка тестовой конфигурации
Имея сценарии тестирования, важно распределить порядок возрастания нагрузки. Для успешного анализа необходимо выделить критерии оценки производительности (скорость отклика, время обработки запроса и т.д.).
3. Проведение тестового испытания
При проведении тестов важно своевременно следить за исполнением сценариев и откликом тестируемой системы. Для эмуляции высоких нагрузок требуется серьезная аппаратная и программная инфраструктура. В некоторых случаях для удешевления работ применяются методы математического моделирования. За основу берутся данные, полученные при низких нагрузках, и аппроксимируются. Чем выше уровень моделируемой нагрузки, тем ниже точность оценки. Однако подобный способ существенно сокращает расходы.
Автоматизация тестирования
Тестирование юзабилити
Конфигурационное тестирование
Интеграционное тестирование
Если в вашем проекте более одной компоненты, он нуждается в интеграционном тестировании. При сложной архитектуре приложения необходимым условием обеспечения качества является проверка на взаимодействие частей программы. Тестирование достигается путем разработки и проведения «сквозных» кейсов. Интеграционное тестирование проводится после компонентного. Поэтому очень важно учитывать опыт компонентного тестирования, при этом соблюдая бизнес-ориентацию тест-кейсов.
Стресс тестирование
У любой системы есть предел нормального функционирования. При превышении предела система попадает в состояние стресса и значительно меняет свое поведение. Стресс тестирование проверяет работу приложения в условиях превышения предлов нормального функционирования. Особенно это важно для «критичных» программ: банковского ПО, программ авиационной отрасли, медицины. Стресс тестирование проводят не только на стадии разработки программного обеспечения, но и на протяжении всего цикла функционирования с целью получения и обработки данных поведения системы за долгий период времени.
Исследования рынка тестирования ПО
2020: Только 13% российских компаний привлекают QA-специалистов на всех этапах разработки ПО
3 сентября 2020 года компания «Перфоманс Лаб» выпустила ежегодный отчет RQR 2020 (Russia Quality Report), отражающий состояние рынка услуг тестирования ИТ-продуктов и обеспечения их качества в 2020. В RQR 2020 описаны тренды и изменения в области тестирования и обеспечения качества ИТ-продуктов в России в 2020 году по сравнению с предыдущими годами на основе отзывов респондентов из разных областей.
В частности, опросы респондентов показали, что запросы на тестирование ИТ-продуктов растут с каждым годом на отечественном рынке. Бизнес понимает насколько важно для выпуска качественного продукта применять методы тестирования, но широкое распространение, в общем, тестирование ИТ-продуктов пока наблюдается не во всех областях, ввиду незнания процессов, дороговизны использования инструментов тестирования и других причин. Хотя есть много отраслей, где тестирование востребовано сегодня и имеет достаточно высокий спрос.
Как известно, создание программных решений высокого качества невозможно без их тестирования. Необходимо привлечение QA-команды (Quality Assurance) к работе над продуктом на ранних этапах. Такой подход также помогает своевременно выявить критические дефекты и впоследствии выпустить на рынок качественное ИТ-решение.
На момент опроса только 13% российских организаций и компаний привлекают к работе специалистов по тестированию на всех этапах жизненного цикла программного обеспечения. К сожалению, отечественный рынок пока не достиг зрелости в этом отношении. Однако показатель хоть и медленно, но неуклонно увеличивается: по сравнению с результатами предыдущего опроса его рост составил 5%.
В сравнении с опросом 2017-2018 годов, организации стали чаще привлекать отдел тестирования на ранних этапах жизненного цикла ПО. Специалисты по QA подключаются к работе на стадиях эксплуатации и поддержки (в 50% случаев), описания требований (50%), проектирования (46%).
Помимо этапа тестирования, в котором QA-специалисты принимают участие в 91% случаев, этих сотрудников также часто привлекают во время внедрения (61%) и разработки (57%) продукта.
Довольно постоянным показателем остается большое количество опрошенных компаний, которые, в первую очередь, привлекают свой отдел QA к задаче повышения качества ИТ-продуктов. Об этом заявило 80% участников исследования. 69% респондентов в качестве цели работы специалистов QA выбирают повышение удовлетворенности пользователей.
Роль автоматизированного тестирования в ИТ-процессах за последние годы стала многогранной. Заказчики услуги стремятся с ее помощью получить полный контроль над качеством разрабатываемого продукта и сократить время тестирования за счет исключения человеческого фактора.
По словам специалистов «Перфоманс Лаб», автоматизация позволяет обеспечить максимальное тестовое покрытие и эффективность применения тест-кейсов, приводит к оптимизации затрат, росту производительности труда и уменьшению сроков вывода продукта на рынок. Таким образом, автоматизированное тестирование становится оптимальным способом достижения целого ряда QA-целей. Большинство участников опроса (82%) используют для проверки качества разрабатываемых продуктов автотесты. Столько же респондентов занимаются развитием компетенций по автоматизированному тестированию у своих специалистов в области функционального тестирования.
Большинство респондентов (71%) понимают важность процедуры тестирования мобильных приложений и проводят ее.
Респонденты стали больше использовать Agile: число участников исследования, которые жалуются на отсутствие опыта применения гибких методологий, за последние два года сократилось. Гибкие методологии (Agile) продолжают завоевывать симпатии российских компаний и организаций. Еще четыре года назад такой подход применяли всего 43% опрошенных игроков рынка. В 2020 годах их количество увеличилось до 80%. Еще 17% респондентов указали на недостаточное понимание подходов Agile к тестированию.
По наблюдению исследователей, в российских компаниях есть некоторая инерция в вопросе смены инструментов для тестирования, скорее это постепенный процесс. Респонденты отметили, что большинство из них используют одновременно не менее трех различных инструментов. Сложности перехода на новые продукты зачастую связаны для кого-то с высокой стоимостью перехода, незнанием рынка QA-продуктов. По результатам отчета телеком и eCommerсe индустрии выглядят наиболее гибкими и готовы рассматривать отечественные продукты по сравнению, например, с банковским сектором. Только 14% респондентов ограничивают использование зарубежных инструментов для организации тестирования в рамках программы импортозамещения. Несмотря на то, что большая часть игроков российского рынка все еще отдает предпочтение иностранным инструментам тестирования, число компаний и организаций, которые ограничивают их использование, по сравнению с предыдущим отчетом увеличилось на 8%.
В период сбора данных для отчета 2020 года угроза распространения коронавирусного заболевания Covid-19 еще не была столь остра. Однако уже ясно, что пандемия внесла свои изменения в жизнь и в бизнес. Бюджеты, выделенные на сферу ИТ, в общем, и на тестирование, в частности, сокращаются. Одновременно, поставщики услуг и специалистов в сфере QA будут переходить на удаленный формат работы. Также видно, что текущий кризис не нанесет серьезного урона отраслям, связанным, в первую очередь, с цифровым контентом.
Ритейл в большей части удержал свои позиции, проще оказалось тем, кто работает через онлайновые каналы продаж. По eCommerce также прошлась волна кризиса, но не так сильно, как по другим областям.
Все банковские организации, принявшие участие в опросе, проводят тестирование своих ИТ-продуктов. Из таких банковских компаний 81% имеют в штате соответствующих специалистов, 63% содержат профильный отдел и еще 63% пользуются аутсорсинг-услугами в этой сфере.
В целом, по отчетам RQR, собственный отдел по тестированию ПО имеют 67% респондентов. В штате 65% опрошенных компаний и организаций есть соответствующие специалисты. Наконец, 39% игроков рынка, принявших участие в исследовании, пользуются аутсорсинг-услугами для тестирования на регулярной основе.
Представители государственного сектора чаще отмечали, что имеют собственный отдел по тестированию или в крайнем случае используют аутсорсинг-услуги. Системные интеграторы предпочитают держать на проектах необходимых сотрудников. К аутсорсинг-услугам чаще прибегают в финансовом и государственном секторах. Популярность аутсорсинга в сферах телекоммуникации, электронной коммерции и системной интеграции ниже: только четверть опрошенных игроков этих рынков используют такой формат работы для тестирования ПО.
Кроме того, более трети организаций, принявших участие в опросе (38%), имеют в своем штате специалиста, ответственного за цифровую трансформацию. Например, такие сотрудники помогают развивать бизнес 58% респондентам, работающим в банковской сфере. Аналогичный подход исповедуют 50% наших собеседников из государственного и телекоммуникационного секторов. В то же время, ни один из опрошенных системных интеграторов к этой практике не прибегает.
Число российских компаний и организаций, использующих возможности искусственного интеллекта, растет. Так, в 2017-2018 гг. эти технологии не применяли 77% респондентов. По данным RQR 2020, их доля сократилась до 68%. Работает с ИИ 32% участников опроса.
Технологии искусственного интеллекта входят и в область обеспечения качества (QA): чуть менее половины (44%) опрошенных игроков рынка заявили, что уже используют ИИ и аналитику для оптимизации QA. Самой популярной причиной использования искусственного интеллекта является автоматизация: так ответили 62% респондентов. Эти технологии также активно применяются в целях предсказательной аналитики (в практике 31% респондента).
Машинное обучение (Machine learning) – одна из областей искусственного интеллекта, в ней применяются методы по «обучению» аналитических систем посредством решения большого числа похожих задач. Только 19% участников опроса заявили о наличии опыта тестирования продуктов машинного обучения. Быстрее всего эту технологию взяли на вооружение в банковской сфере: о ее применении заявили 33% опрошенных представителей отрасли.
Что касается технологии блокчейн, то ее возможностями пользуются только 3% участников опроса.