В нашей группе не один раз обсуждалась разработка через тестирование (test-driven development), и каждый раз в комментариях были в основном положительные отзывы от тех, кто применял эту методологию. Для тех, кто пропустил, собрали все доводы «за» в одной статье.
Это такая техника разработки программного обеспечения, при которой вся разработка разбивается на множество небольших циклов: сначала пишутся тесты, которые покрывают желаемое изменение, затем пишется код, который эти тесты проходит. После этого производится рефакторинг этого кода, при необходимости пишутся новые тесты. Если какие-то тесты участок кода не проходит, это исправляется.
Судя по всему, да. Во-первых, это позволяет чётче понять, что, собственно, нужно писать. Есть условие, которое должно выполняться после работы кода - и точка. Сами тесты должны формироваться на основе технического задания. Если в результате написания тестов они начинают противоречить сами себе – это повод пересмотреть ТЗ.
Во-вторых, в результате разделения задач на менее объёмные подзадачи, код становится заметно проще и удобочитаемее. В идеале на один тест должно приходиться одно утверждение (assert). К тому же плохой в оформлении код (например, использующий глобальные переменные или синглтоны) обычно так же сложен в тестировании, что стимулирует разработчика его не писать.
В-третьих, сильно упрощается поддержка кода. Если в результате внесения новой функциональности или изменения старой какой-то участок кода начинает работать некорректно, это будет мгновенно выявлено. Вносить в код изменения гораздо легче, когда он разбит на модули (а TDD требует модульности программ). Инспектировать код, написанный по методологии TDD гораздо проще – каждый коммит выполняется для реализации чёткой задачи, которая будет отражена в комментарии к нему.
Да, действительно, поначалу применение TDD будет отнимать лишнее время. Однако, это скорее дело привычки – со временем вы привыкнете писать сперва тесты, а лишь затем код и, возможно, будете даже выигрывать во времени, ведь процесс разработки будет чётко структурирован, вам придётся сначала решить вопрос «Что писать?», а лишь потом «Как писать?». К тому же, потратив время сейчас, вы выиграете время в будущем, сильно облегчив себе поддержку продукта.
Разумеется, нет. TDD не панацея. Например, если разработка представляет из себя последовательность экспериментов, когда нет чёткой уверенности в том, что именно необходимо в итоге, написание тестов станет скорее грузом, который тянет команду назад.
По разработке с упором на тестирование есть отличная книга Кента Бека –
Тестирование программного обеспечения - это оценка разрабатываемого программного обеспечения/продукта, чтобы проверить его возможности, способности и соответствие ожидаемым результатам. Существуют различные типы методов, используемые в области тестирования и обеспечения качества о них и пойдет речь в данной статье.
Тестирование программного обеспечения является неотъемлемой частью цикла разработки программного обеспечения.
Тестирование программного обеспечения - это не что иное, как испытание куска кода к контролируемым и неконтролируемым условиям эксплуатации, наблюдение за выходом, а затем изучение, соответствует ли он предварительно определенным условиям.
Различные наборы тест-кейсов и стратегий тестирования направлены на достижение одной общей цели - устранение багов и ошибок в коде, и обеспечения точной и оптимальной производительности программного обеспечения.
Широко используемыми методами тестирования являются модульное тестирование, интеграционное тестирование, приемочное тестирование, и тестирование системы. Программное обеспечение подвергается этим испытаниям в определенном порядке.
3) Системное тестирование
4) Приемочные испытания
В первую очередь проводится модульный тест. Как подсказывает название, это метод испытания на объектном уровне. Отдельные программные компоненты тестируются на наличие ошибок. Для этого теста требуется точное знание программы и каждого установленного модуля. Таким образом, эта проверка осуществляется программистами, а не тестерами. Для этого создаются тест-коды, которые проверяют, ведет ли программное обеспечение себя так, как задумывалось.
Отдельные модули, которые уже были подвергнуты модульному тестированию, интегрируются друг с другом, и проверяются на наличие неисправностей. Такой тип тестирования в первую очередь выявляет ошибки интерфейса. Интеграционное тестирование можно осуществлять с помощью подхода "сверху вниз", следуя архитектурному сооружению системы. Другим подходом является подход «снизу вверх», который осуществляется из нижней части потока управления.
В этом тестировании, вся система проверяется на наличие ошибок и багов. Этот тест осуществляется путем сопряжения аппаратных и программных компонентов всей системы, и затем выполняется ее проверка. Это тестирование числится под методом тестирования "черного ящика", где проверяются ожидаемые для пользователя условия работы программного обеспечения.
Это последний тест, который проводится перед передачей программного обеспечения клиенту. Он проводится, чтобы гарантировать, что программное обеспечение, которое было разработано отвечает всем требованиям заказчика. Существует два типа приемо-сдаточных испытаний - то, которое осуществляется членами команды разработчиков, известно, как внутреннее приемочное тестирования (Альфа-тестирование), а другое, которое проводится заказчиком, известно, как внешнее приемочное тестирования.
Если тестирование проводится с помощью предполагаемых клиентов, оно называется приемочными испытаниями клиента. В случае если тестирование проводится конечным пользователем программного обеспечения, оно известно, как приемочное тестирование (бета-тестирование).
Есть несколько основных методов тестирования, которые формируют часть режима тестирования программного обеспечения. Эти тесты обычно считаются самодостаточными в поиске ошибок и багов во всей системе.
Тестирование методом черного ящика осуществляется без каких-либо знаний внутренней работы системы. Тестер будет стимулировать программное обеспечение для пользовательской среды, предоставляя различные входы и тестируя сгенерированные выходы. Этот тест также известен как Black-box, closed-box тестирование или функциональное тестирование.
Тестирование методом "Белого ящика", в отличие от "черного ящика", учитывает внутреннее функционирование и логику работы кода. Для выполнения этого теста, тестер должен иметь знания кода, чтобы узнать точную часть кода, имеющую ошибки. Этот тест также известен как White-box, Open-Box или Glass box тестирование.
Тестирование методом серого ящика или Gray box тестирование, это что-то среднее между White Box и Black Box тестированием, где тестер обладает лишь общими знаниями данного продукта, необходимыми для выполнения теста. Эта проверка осуществляется посредством документации и схемы информационных потоков. Тестирование проводится конечным пользователем, или пользователям, которые представляются как конечные.
Безопасность приложения является одной из главных задач разработчика. Тестирование безопасности проверяет программное обеспечение на обеспечение конфиденциальности, целостности, аутентификации, доступности и безотказности. Индивидуальные испытания проводятся в целях предотвращения несанкционированного доступа в программный код.
Стресс-тестирование является методом, при котором программное обеспечение подвергается воздействию условий, которые выходят за рамки нормальных условий работы программного обеспечения. После достижения критической точки, полученные результаты записываются. Этот тест определяет устойчивость всей системы.
Программное обеспечение проверяется на совместимость с внешними интерфейсами, такими как операционные системы, аппаратные платформы, веб-браузеры и т.д. Тест на совместимость проверяет, совместим ли продукт с любой программной платформой.
Как подсказывает название, эта методика тестирования проверяет объем кода или ресурсов, которые используются программой при выполнении одной операции.
Это тестирование проверяет аспект удобства и практичности программного обеспечения для пользователей. Легкость, с которой пользователь может получить доступ к устройству формирует основную точку тестирования. Юзабилити-тестирование охватывает пять аспектов тестирования, - обучаемость, эффективность, удовлетворенность, запоминаемость, и ошибки.
Каскадная модель использует подход "сверху-вниз", независимо от того, используется ли она для разработки программного обеспечения или для тестирования.
Основными шагами, участвующими в данной методике тестирования программного обеспечения, являются:
В этой методике, вы переходите к следующему шагу только после того, как вы завершили предыдущий. В модели используется не-итерационный подход. Основным преимуществом данной методики является ее упрощенный, систематический и ортодоксальный подход. Тем не менее, она имеет много недостатков, так как баги и ошибки в коде не будут обнаружены до этапа тестирования. Зачастую это может привести к потере времени, денег, и других ценных ресурсов.
Эта методика основана на избирательном сочетании последовательного и итеративного подхода, в дополнение к довольно большому разнообразию новых методов развития. Быстрое и поступательное развитие является одним из ключевых принципов этой методологии. Акцент делается на получение быстрых, практичных, и видимых выходов. Непрерывное взаимодействие с клиентами и участие является неотъемлемой частью всего процесса разработки.
Название говорит само за себя. В этом случае методология принимает стремительный эволюционный подход, используя принцип компонентной конструкции. После понимания различных требований данного проекта, готовится быстрый прототип, а затем сравнивается с ожидаемым набором выходных условий и стандартов. Необходимые изменения и модификации вносятся после совместного обсуждения с заказчиком или группой разработчиков (в контексте тестирования программного обеспечения).
Хотя этот подход имеет свою долю преимуществ, он может быть неподходящим, если проект большой, сложный, или имеет чрезвычайно динамический характер, в котором требования постоянно меняются.
Как видно из названия, спиральная модель основана на подходе, в котором есть целый ряд циклов (или спиралей) из всех последовательных шагов в каскадной модели. После того, как начальный цикл будет завершена, выполняется тщательный анализ и обзор достигнутого продукта или выхода. Если выход не соответствует указанным требованиям или ожидаемым стандартам, производится второй цикл, и так далее.
Методика RUP также похожа на спиральную модель, в том смысле, что вся процедура тестирования разбивается на несколько циклов. Каждый цикл состоит из четырех этапов - создание, разработка, строительство, и переход. В конце каждого цикла продукт/выход пересматривается, и далее цикл (состоящий из тех же четырех фаз) следует при необходимости.
Применение информационных технологий растет с каждым днем, также и важность правильного тестирования программного обеспечения выросло в разы. Многие фирмы содержат для этого штат специальных команд, возможности которых находятся на уровне разработчиков.
Главная цель данной статьи – помочь преодолеть страх, который возникает у тестировщиков ПО (как начинающих, так и опытных) к предстоящему интервью в связи с незнанием грядущего.
Второстепенная цель – собрать воедино основные вопросы, которые, вероятней всего, будут заданы на собеседовании. Как у начинающего тестировщика, у меня уже скопился определенный опыт подготовки к собеседованиям на данную должность, и я могу заметить, что даже специализированные QA форумы не справляются с этой целью, а может и не ставят ее перед собой вообще.
Перечень вопросов разумеется не окончательный и не претендует на образцовость, а выступает лишь своеобразным ориентиром при подготовке специалистов с тестирования ПО.
Собственно вопросы:
Объясните термин «жизненный цикл программного обеспечения».
Жизненным циклом программного обеспечения (SLC)
является период времени, начинающийся с момента появления концепции ПО и заканчивающийся тогда, когда использование ПО более невозможно. Жизненный цикл программного обеспечения обычно включает в себя следующие этапы: концепт, описание требований, дизайн, реализация, тестирование, инсталляция и наладка, эксплуатация и поддержка и, иногда, этап вывода из эксплуатации. Данные фазы могут накладываться друг на друга или проводиться итерационно.
Объясните термин «жизненный цикл разработки программного обеспечения».
Жизненным циклом разработки программного обеспечения (SDLC)
является концепция, которая описывает комплекс мероприятий, выполняемых на каждом этапе (фазе) разработки программного обеспечения.
Объясните преимущество использования модели жизненного цикла разработки ПО (SDLC).
Каковы основные фазы модели жизненного цикла разработки ПО?
Объясните, что такое Обеспечение качества (Quality Assurance)?
Обеспечение качества (QA) - это совокупность мероприятий, охватывающих все технологические этапы разработки, выпуска и эксплуатации ПО и предпринимаемых на разных стадиях жизненного цикла ПО, для обеспечения требуемого уровня качества выпускаемого продукта.
Обеспечение качества определено в стандарте ISO 9000:2005 «Системы менеджмента качества. Основные положения и словарь» как «часть менеджмента качества, направленная на создание уверенности в том, что требования к качеству будут выполнены».
Менеджмент качества в этом же стандарте представлен как «скоординированная деятельность по руководству и управлению организацией применительно к качеству», а в примечании сказано, что он «обычно включает разработку политики и целей в области качества, планирование качества, управление качеством, обеспечение качества и улучшение качества».
Объясните, что такое Контроль качества (Quality Control)?
Контроль качества (QC)
- это совокупность действий, проводимых над ПО в процессе разработки, для получения информации о его актуальном состоянии в аспектах готовности к выпуску, соответствия зафиксированным требованиям и соответствия заявленному уровню качества этого ПО.
Объясните, что такое тестирование ПО?
Тестирование ПО - это процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, и показать, что они подходят для заявленных целей и для определения дефектов.
Из этого определения становится понятно, что тестирование ПО включает в себя два различных процесса:
Валидация (validation):
доказанное объективными результатами исследования подтверждение того, что требования для конкретного определенного использования приложения были выполнены.
Верификация (verification):
доказанное объективными результатами исследования подтверждение того, что определенные требования были выполнены.
Какие основные цели тестирования ПО?
Цель тестирования (test objective, test target) - это причина или цель разработки и выполнения теста.
Основные цели:
Когда следует начинать тестировать ПО?
Простой ответ - как только это возможно! Более детально:
Когда следует заканчивать тестирование ПО?
Простой ответ - управленческое решение, которое вероятней всего будет принято на основе:
Какие основные уровни тестирования ПО?
Следует также понимать что такое big-bang тестирование, тестирование «сверху вниз», восходящие и инкрементное тестирование;
Что такое критерии входа?
Критерии входа (entry criteria) - это набор общих и специфичных условий для продолжения процесса с определенной задачей, например, фаза тестирования. Цель критериев входа - предотвращение начала задачи, которое может потребовать больше (бесполезных) усилий, чем на устранение не пройденных критериев входа.
Проще говоря для Вас, как будущего тестировщика, критерии входа следует понимать как основные условия, которые должны быть выполнены до того, как Вы и Ваша команда могут начать тестирование.
Приведите несколько примеров, которые объясняют критерии входа для тестирования ПО.
Что такое критерии выхода?
Критерии выхода (exit criteria) - это набор общих и специфичных условий, согласованных заранее с заинтересованными сторонами, для того, чтобы процесс мог официально считаться завершенным. Цель критериев выхода - предотвращение возможности, когда задание считается завершенным, однако еще существуют отдельные незавершенные части задания. Критерии выхода используются для отчетности, а также планирования того, когда остановить тестирование.
Проще говоря, как критерии входа определяют начало тестирования, так и критерии выхода определяют его окончание и ПО готово к следующему этапу жизненного цикла (внедрение и т.д.).
Как вы объясните Bug/Defect/Error в ПО?
Любая проблема/ошибка в ПО, что вызвана следующим поведением:
Объясните процесс верификации.
строим ли мы продукт правильно?
Процесс верификации (verification) выполняется, чтобы убедиться, что каждый этап жизненного цикла разработки ПО (разработка, тестирование и т.д.) строится на основе предопределенных требований (requirements) и спецификаций (specifications) и без каких-либо отклонений от них. (см. № 7)
Опишите различные мероприятия процесса верификации.
Приведите примеры верификации в зависимости от уровней тестирования. (см. № 11)
Объясните процесс валидации.
Реальный вопрос, на который мы ищем ответ: строим ли мы правильный продукт?
Процесс, позволяющий тестировщику оценить ПО после стадии разработки до передачи его заказчику. В этом процессе мы должны убедиться, что ПО разработано на основе потребностей пользователей.
Помните, валидация охватывает динамическую сторону тестирования, где определенное ПО тестируется и оценивается вопреки заданной SRS документации.
Приведите несколько причин, которые приводят к багам в ПО.
Что такое процедура тестирования (Test Procedure)?
Документ, описывающий последовательность действий при выполнении теста. Также известен как ручной сценарий тестирования.
Что такое программный компонент?
В основном, программные компоненты - это мелкие айтемы ПО, которые построены из еще мелких единиц, которые в свою очередь интегрированы вместе (классы, методы, хранимые процедуры, бинарные деревья и т.д.).
Объясните Покрытие кода.
Покрытие кода
(code coverage) - это метод анализа, определяющий, какие части ПО были проверены (покрыты) набором тестов, а какие нет, например, покрытие операторов, покрытие альтернатив или покрытие условий.
Объясните Инспекцию кода.
Инспекция кода
(code inspection) или просмотр кода (code review) - это систематическая проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались незамеченными в начальной фазе разработки. Целью просмотра является улучшение качества программного продукта и совершенствование навыков разработчика.
В процессе инспекции могут быть найдены и устранены такие проблемы, как ошибки в форматировании строк, состояние гонки (race condition), утечка памяти (memory leak) и переполнение буфера (buffer overflow), что улучшает безопасность программного продукта. Системы контроля версий дают возможность проведения совместной инспекции кода. Кроме того, существуют специальные инструментальные средства для совместной инспекции кода.
Программное обеспечение для автоматизированной инспекции кода упрощает задачу просмотра больших кусков кода, систематически сканируя его на предмет обнаружения наиболее известных уязвимостей.
Что значит фраза Код завершен?
Простой термин, имеющий отношение к конкретному этапу SDLC. Говоря «код завершен», мы на самом деле имеем ввиду, что его реализация завершена (вся функциональность ПО успешно реализована). Хотя если даже код будет полностью реализован, всегда есть новые ошибки обнаруженные во время тестирования.
Что такое разбор (walkthrough) кода?
Разбор
(walkthrough) - это методика тестирования, используемая для обзора хода осуществления кода программистом и командой тестирования, во время разбора код выполняется с помощью нескольких простых тестов, чтобы определить его качество и логику.
Что такое отладка?
Отладка (debugging) - это процесс поиска, анализа, и устранения причин отказов и ошибок в ПО.
Чтобы понять, где возникла ошибка, приходится:
Что такое эмулятор и симулятор?
Эмуляция - это воспроизведение работы программы или системы (а не какой-то её мизерной части) с сохранением ключевых её свойств и принципов работы. Эмуляция выполняет программный код в привычной для этого кода среде, состоящей из тех же компонентов, что и эмулируемый объект.
Симуляция - это воспроизведение работы программы-оригинала сугубо виртуально, на движке специальной программы (средство разработки курсов, к примеру). Симуляция лишь имитирует выполнение кода, а не копирует его, всё виртуально на 100%, всё «понарошку».
Следовательно:
Эмулятор ПО - это полнофункциональный аналог оригинального ПО, либо его версия, в которой может быть предусмотрен ряд ограничений по функционалу, возможностям и поведению ПО.
Симулятор ПО - это модель оригинального ПО, в которой реализуется логика работы этого ПО (частично или полностью), имитируется поведение ПО, копируется его интерфейс.
Симулятор по полноте функций/учитываемых параметров уже, чем эмулятор. Эмулируется объект, а симулируются его свойства, функции или поведение.
Что такое спецификация ПО?
Спецификация (specifications) - это текстовый файл с описанием того, что нужно протестировать в тестовых данных. В ней указывается какие результаты должна получить программа. Тестовый код находит реальные, вычисленные на живом коде результаты. А тестовый движок производит сверку спецификации и вычисленных результатов.
Спецификацию получаем от заказчика проанализировав, исследовав его требования и переведя их на качественно новый, более детализированный уровень, на котором ими и будет пользоваться команда разработчика.
Что такое кодирование?
Кодирование (coding) - это процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.
Некоторые путают такие понятия, как программирование и непосредственно кодирование. Кодирование является лишь частью программирования, наряду с анализом, проектированием, компиляцией, тестированием и отладкой, сопровождением (В узких кругах кодирование также может называться «кодинг». Однако, если верить Вики, в литературе этот термин используется редко.).
Что такое требование?
Требование (requirement) - совокупность утверждений относительно атрибутов, свойств или качеств программной системы, подлежащей реализации. Создаются в процессе разработки требований к программному обеспечению, в результате анализа требований.
Требования могут выражаться в виде текстовых утверждений и графических моделей.
В классическом техническом подходе совокупность требований используется на стадии проектирования программного обеспечения (ПО). Требования также используются в процессе тестирования ПО, так как тесты основываются на определённых требованиях.
Этапу разработки требований, возможно, предшествовало технико-экономическое обоснование, или концептуальная фаза анализа проекта. Фаза разработки требований может быть разбита на выявление требований (сбор, понимание, рассмотрение и выяснение потребностей заинтересованных лиц), анализ (проверка целостности и законченности), спецификация (документирование требований) и проверка правильности.
Что такое тестирование стабильности?
Задачей тестирования стабильности
(stability) / надежности
(reliability) является проверка работоспособности приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки. Время выполнения операций может играть в данном виде тестирования второстепенную роль. При этом на первое место выходит отсутствие утечек памяти, перезапусков серверов под нагрузкой и другие аспекты влияющие именно на стабильность работы.
Расскажите про критичность (серьезность) бага и общепринятые уровни такой критичности.
Критичность (severity) - это важность воздействия конкретного дефекта на разработку или функционирование компонента или системы.
Критичность ошибки определяется тестировщиком, который обнаружил баг, но перед этим он должен ответить себе на такие вопросы:
Расскажите про приоритет бага.
Приоритет (priority) - это степень важности, присваиваемая багу. Другими словами определяется, насколько срочно это ошибка должна быть исправлена.
Приоритет - инструмент менеджмента, и перед его определением последний должен ответить минимум на следующие вопросы:
Что такое Сборка?
Сборка (build) - подготовленный для использования информационный продукт. Чаще всего это исполняемый файл (двоичный файл, содержащий исполняемый код программы).
Предположим, что номер версии сборки выглядит так: 1.35.6.2
Можно ли начинать тестирование без рабочей сборки?
Безусловно - да! Ведь существует два типа методологии тестирования (статическое и динамическое), которые позволяют тестировщику начинать работать без рабочей сборки статическим методом, тем более такой метод более рентабельный чем «динамический».
Что такое статический анализ?
Статический анализ
(static analysis) - это анализ программных артефактов, таких как требования или программный код, проводимый без исполнения этих программных артефактов.
Что такое тестовый драйвер и тестовая обвязка?
Драйвер (driver) - это компонент ПО или средство тестирования, которое заменяет компонент, обеспечивающий управление и/или вызов компонента или системы.
Обвязка
(harness) - это тестовое окружение, включающее в себя заглушки и драйверы, необходимые для проведения теста.
Что такое матрицы трассировки?
Для измерения покрытия требований, необходимо проанализировать требования к продукту и разбить их на пункты. Опционально каждый пункт связывается с тест кейсами, проверяющими его. Совокупность этих связей - и является матрицей трассировки (traceability matrix). Проследив связи, можно понять какие именно требования проверяет тестовый случай.
Тесты не связанные с требованиями не имеют смысла. Требования, не связанные с тестами - это «белые пятна», т.е. выполнив все созданные тест кейсы, нельзя дать ответ реализовано данное требование в продукте или нет.
Что такое тестирование End-to-End?
End-to-end тестирование - это тип тестирования где тестировщик использует ПО (сценарии, которые исследуют весь поток выполнения) в условиях которыми вероятней всего обладает пользователь.
В дополнение, тесты будут работать сочетая в себе несколько сценариев уместных в реальном мире:
Что такое функциональное тестирование? Какие основные типы функционального тестирования? Какие виды функциональных тестов вы знаете?
Функциональное тестирование (functional testing) - это тестирование, основанное на анализе спецификации функциональности компонента или системы.
Функциональные тесты базируются на функциях и особенностях, а также взаимодействии с другими системами, и могут быть представлены на всех уровнях тестирования: компонентном или модульном (Component/Unit testing), интеграционном (Integration testing), системном (System testing) иприемочном (Acceptance testing). Функциональные виды тестирования рассматривают внешнее поведение системы.
Что такое нефункциональное тестирование?
Нефункциональное тестирование
(non-functional testing) - это тестирование атрибутов компонента или системы, не относящихся к функциональности, то есть надежность, эффективность, практичность, сопровождаемость, переносимость и т.д. (тесты, сделанные по всем аспектам, которые непосредственно не связанны с конкретным действием пользователя).
Несколько примеров тестов, которые включает в себе нефункциональное тестирование?
Что такое тестирование Белого ящика?
Белый ящик - это тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка, на котором она писалась.
Техника тестирования по принципу Белого ящика, также называемая техникой тестирования, управляемой логикой программы, позволяет проверить внутреннюю структуру программы. Исходя из этой стратегии тестировщик получает тестовые данные путем анализа логики работы программы.
Техника Белого ящика включает в себя следующие методы тестирования:
Что такое тестирование Чёрного ящика?
Тестирование чёрного ящика или поведенческое тестирование - это стратегия (метод) тестирования функционального поведения ПО с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций
Некоторые приёмы тестирования чёрного ящика:
Что такое Конверсионное тестирование?
Конверсионное тестирование
(сonversion testing) - это методика тестирования, что используется для проверки того, как имеющие в системе А данные будут преобразовываться и становиться доступными для использования в системе Б.
Что такое Конформационное тестирование?
Конформационное тестирование
- это тестирование с целью убедиться, что ПО отвечает определенным отраслевым стандартам (IEEE, W3C и т.д.) для разработки ПО.
P.S. Пожалуйста, обратите внимание, что это всего лишь перечень вопросов составленный на основе моего опыта (он не будет уникальным для всех интервью), а запоминание ответов как истинных может помешать вам работать в индустрии. Целью является помочь вам понять основные вопросы, с которыми вы предположено столкнетесь во время собеседования.
Призываю к активному и обоснованному холивару!
Вариант 1
1. Упорядоченная последовательность команд (инструкций) компьютера для решения конкретной задачи.
A. Свойство программы
B. Программное обеспечение
C. Постановка задачи
D. Программа
E. Язык программирования
2. С позиции специфики разработки и вида программного обеспечения, на какие два класса делятся задачи?
A. Позиционные и функциональные
B. Технологические и функциональные
C. Позиционные и непозиционные
D. Технологические и параметрические
E. Нет верного ответа
3. Какими последовательными действиями можно представить процесс создания программ?
A. Программирование, постановка задачи, построение алгоритма
B. Построение алгоритма, решение задачи
C. Построение алгоритма, программирование
D. Программирование, построение алгоритма, постановка задачи
E. Постановка задачи, построение алгоритма решения, программирование
4. Постановка задачи - это …
A. упорядоченная последовательность команд компьютера для решения задач
B. точная формулировка решения задачи на компьютере с описанием входных и выходных данных
C. совокупность связанных между собой функций, задач управления, с помощью которых достигается выполнение поставленных целей
D. система точно сформулированных правил
E. Все ответы верны
5. Алгоритм - это …
A. разбиение процесса обработки информации на более простые этапы
B. задача, подлежащая реализации с использованием средств информационных технологий
C. точная формулировка решения задачи на компьютере с описанием входных и выходных данных
E. нет верного ответа
6. Разбиение процесса обработки информации на более простые этапы (шаги выполнения), выполнение которых компьютером или человеком не вызывает затруднений
A. Дискретность
B. Определенность
C. Массовость
D. Алгоритм
E. Все ответы верны
7. Выполнимость - это …
A. конечность действий алгоритма решения задач, позволяющая получить желаемый результат при допустимых исходных данных за конечное число шагов
B. разбиение процесса обработки информации на более простые этапы (шаги выполнения), выполнение которых компьютером или человеком не вызывает затруднений
C.действие алгоритма решения задач, позволяющая получить не желаемый результат при допустимых исходных данных за бесконечное число шагов
D. система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных в желаемый результат за конечное число шагов
Е. нет верного ответа
8. Осуществляет разработку и отладку программ для решения функциональных задач
A. Системный программист
B. Программист-аналитик
C. Прикладной программист
D. Администратор
E. Постановщик задач
9. Занимается разработкой, эксплуатацией и сопровождением системного программного обеспечения, поддерживающего работоспособность компьютера и создающего среду для выполнения программ
A. Прикладной программист
B Программист-аналитик
C. Системный программист
D. Администратор БД
E. нет верного ответа
A. Прикладной программист
B. Программист-аналитик
C. Системный программист
D. Постановщик задач
E. Администратор
A. Администратор БД
B. Прикладной программист
C. Постановщик задач
D. Системный программист
E. все ответы верны
A. Прикладной программист
B. Программист-аналитик
C. Системный программист
D. Конечный пользователь
E. Нет верного ответа
A. Дискретность
B. Экономичность
C. Готовность
D. Работоспособность
E. Надежность
A. Определенность
B. Работоспособность
C. Надежность
D. Экономичность
E. Готовность
A. Экономичность
B. Готовность
C. Надежность
D. Определенность
E. Работоспособность
16. Устойчивость - …
E. Нет верного ответа
A. Устойчивость
B. Перезапуск
C. Готовность
D. Надежность
E. Все ответы верны
С каким этапом жизненного цикла программного продукта связано с алгоритмизацией
18.Процесса обработки данных, детализацией функций обработки, разработкой структуры ПП, выбором методов и средств создания программ?
A. Документирование
B. Программирование
C. Сопровождение
D. Проектирование
E. нет верного ответа
A. Документирование
D. Сопровождение ПП
E. Все ответы верны
20.На каком этапе жизненного цикла программного продукта составляются необходимые сведения по установке и обеспечению надежной работы ПП и т.д.?
A. Проектирование
B. Эксплуатация
C. Документирование
D. Программирование
E. нет верного объекта
21. Жизненный цикл ПО - …
E. Нет верного ответа
E. Нет верного ответа
B. Процесс поставки, процесс обеспечения качества, процесс верификации
C. Процесс управления, процесс создания инфраструктуры, процесс обучения
E. Процесс управления, процесс разработки, процесс обучения
Процесс документирования, процесс обеспечения качества, процесс верификации
E. нет верного ответа
27.На какие две группы делится документация, создаваемая в процессе разработки программных средств?
28. Код группы 1 стандарта ЕСПД означает …
A. Общие положения
D. Резервные группы
E. нет верного ответа
29. Код группы 0 стандарта ЕСПД означает …
A. Прочие стандарты
B. Резервные группы
C. Основополагающие стандарты
E. Общие положения
30. ЕСПД - это …
A. комплекс программ, устанавливающих правила разработки документации
B. упорядоченная последовательность команд (инструкций) компьютера для решения конкретной задачи
C. система точно сформулированных правил
D. система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных в желаемый результат за конечное число шагов
E. комплекс государственных стандартов, устанавливающих взаимоувязанные правила разработки, оформления и обращения программ и программной документации
31. Расшифруйте ЕСПД
A. Единственная связь программной документации
В. Единая свобода программной документации
C. Единая система программной документации
D. Единство системной программной документации
Е. Нет верного ответа
32. Для чего предназначено Руководство по управлению ПС?
A. Руководство по управлению дает краткую характеристику функциональных возможностей ПС
B. Руководство по управлению описывает сообщения, генерируемые, когда ПС взаимодействует с другими системами, и как реагировать на эти сообщения, также объясняет, как сопровождать системную аппаратуру, если она используется ПС
C. Руководство по управлению дельно предписывает, как устанавливать системы в конкретной среде
D. Руководство по управлению содержит необходимую информацию по применению ПС
E. нет верного ответа
33. На какие группы подразделяются документы, входящие в состав ПС
A. Документация, помогающая вносить изменения в ПС и документация по сопровождению ПС
B. Документы управления разработкой ПС и документация по сопровождению ПС
C. Пользовательская документация и документы управления разработкой ПС
D. Документы управления разработкой ПС и пользовательская документация
E. Пользовательская документация ПС и документация по сопровождению ПС
34. Документы, которые фиксируют различные детали взаимодействия между менеджерами и разработчиками
A. Стандарты
B. Планы, оценки, расписания
C. Отчеты
D. Рабочие документы
E. Заметки и переписка
35. Документы, которые содержат фиксацию идей и проблем, возникающих в процессе разработки, описание используемых идей и подходов
A. Отчеты
B. Стандарты
C. Планы, оценки, расписания
D. Рабочие документы
Е. Заметки, переписка
36. Документы, создаваемые менеджерами для прогнозирования и управления процессами разработки и сопровождения
A. Стандарты
B. Планы, оценки, расписания
C. Рабочие документы
D. Заметки
E. Отчеты
37. Выберите тип документов, которые предписывают разработчикам, каким принципам, правилам, соглашениям они должны следовать в процессе разработки ПС
A. Отчеты
В. Рабочие документы
C. Планы, оценки, расписания
D. Стандарты
Е. Заметки и переписка
38. Для чего необходимы документы, входящие в состав ПС?
A. Данный вид документов содержит фиксацию идей и проблем, возникающих в процессе разработки, описание используемых идей и подходов
B. Эти документы предписывают разработчикам, каким принципам, правилам, соглашениям они должны следовать в процессе разработки ПС
C. Обеспечивают связь внутри коллектива разработчиков и между коллективом разработчиков и менеджерами
E. Описывают программы как с точки зрения их применения пользователями, так и с точки зрения их разработчиков и сопроводителей
39. Для чего необходимы документы управления разработкой ПС?
A. Описывают программы как с точки зрения их применения пользователями, так и с точки зрения их разработчиков и сопроводителей
40. B. Обеспечивают связь внутри коллектива разработчиков и между коллективом разработчиков и менеджерами
C. Объясняет пользователям, как они должны действовать, чтобы применять данное ПС
D. Обеспечивают связь между самой программой и входными данными
E. нет верного ответа
Вариант 2
1. Код группы 2 стандарта ЕСПД означает …
A. Прочие стандарты
C. Правила выполнения документации разработки
Е. Резервные группы
2. Пояснительная записка. Требования к содержанию и оформлению
A. ГОСТ 19.508-79
B. ГОСТ 19.501-78
C. ГОСТ 19.402-78
D. ГОСТ 19.202-78
Е. ГОСТ 19.404-79
3.Техническое задание. Требования к содержанию и оформлению
A. ГОСТ 19.203-78
B. ГОСТ 19.201-78
C. ГОСТ 19.106-78
D. ГОСТ 19.404-79
E. нет верного ответа
4. Требования к программным документам, выполненные печатным способом
A. ГОСТ 19.105-78
B. ГОСТ 19.106-78
C. ГОСТ 19.201-78
D. ГОСТ 19.101-77
E. ГОСТ 19.301-79
5. Общие положения
A. ГОСТ 19.101-77
B. ГОСТ 19.002-77
C. ГОСТ 19.001-77
D. ГОСТ 19.001-78
E. Нет верного ответа
6. Код группы 9 стандарта ЕСПД означает …
A. Резервные группы
B. Основополагающие стандарты
C. Правила выполнения эксплуатационной документации
D. Правила выполнения документации сопровождения
Е. Нет верного ответа
7. Код группы 8 стандарта ЕСПД означает …
A. Прочие стандарты
C. Резервные группы
D. Правила обращения программной документации
Е. Нет верного ответа
8. Код группы 7 стандарта ЕСПД означает …
A. Основополагающие стандарты
B. Правила обращения программной документации
C. Прочие стандарты
E. Резервные группы
9. Код группы 6 стандарта ЕСПД означает …
A. Правила обращения программной документации
В. Общие положения
C. Правила выполнения документации изготовления
D. Резервные группы
Е. Правила выполнения документации сопровождения
10. Анализирует и проектирует комплекс взаимосвязанных программ для реализации функций предметной области
A. Прикладной программист
B. Программист-аналитик
C. Системный программист
D. Постановщик задач
E. Администратор
11. Участвует в процессе создания программ на начальной стадии работ
A. Администратор БД
B. Прикладной программист
C. Постановщик задач
D. Системный программист
E. все ответы верны
12. Является основным потребителем программ
A. Прикладной программист
B. Программист-аналитик
C. Системный программист
D. Конечный пользователь
E. Нет верного ответа
13. Свойство системы сохранять во времени в установленных пределах значения всех характеристик, определяющих способность системы выполнять требуемые функции в условиях заданных режимов эксплуатации
A. Дискретность
B. Экономичность
C. Готовность
D. Работоспособность
E. Надежность
14. Возможность доступа к услугам АИС с использованием соответствующих технологий всегда, когда в ней возникает необходимость
A. Определенность
B. Работоспособность
C. Надежность
D. Экономичность
E. Готовность
15. Количество и степень занятости ресурсов, процессов, ОП, внешней и внутренней памяти, каналов ввода/вывода, терминалов и каналов сети
A. Экономичность
B. Готовность
C. Надежность
D. Определенность
E. Работоспособность
16. Устойчивость - …
A. характеризует способность к безотказному функционированию при наличии сбоев
B. возможность доступа к услугам АИС с использованием соответствующих технологий всегда, когда в ней возникает необходимость
C. Свойство системы сохранять во времени в установленных пределах значения всех характеристик, определяющих способность системы выполнять требуемые функции в условиях заданных режимов эксплуатации
D. количество и степень занятости ресурсов, процессов, ОП, внешней и внутренней памяти, каналов ввода/вывода, терминалов и каналов сети
E. Нет верного ответа
17. Процесс обеспечивает возобновления нормально функционирования АИС
A. Устойчивость
B. Перезапуск
C. Готовность
D. Надежность
E. Все ответы верны
18. С каким этапом жизненного цикла программного продукта связано с алгоритмизацией процесса обработки данных, детализацией функций обработки, разработкой структуры ПП, выбором методов и средств создания программ?
A. Документирование
B. Программирование
C. Сопровождение
D. Проектирование
E. нет верного ответа
19. С каким этапом жизненного цикла программного продукта связано с технической реализацией проектных решений и выполнение с помощью выбранного инструментария разработчика (алгоритмические языки и системы программирования и.т.д.)?
A. Документирование
B. Проектирование структуры ПП
C. Программирование, тестирование и отладка
D. Сопровождение ПП
E. Все ответы верны
20. На каком этапе жизненного цикла программного продукта составляются необходимые сведения по установке и обеспечению надежной работы ПП и т.д.?
A. Проектирование
B. Эксплуатация
C. Документирование
D. Программирование
E. нет верного объекта
21. Жизненный цикл ПО - …
A. непрерывный процесс, который начинается с момент его полного изъятия из эксплуатации и заканчивается в момент принятия решения о необходимости его создания
B. процесс, который начинается с момента его полного описания и заканчивается в момент принятия решения о необходимости его создания
C. непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплуатации
D. прерывающийся процесс, который начинается с момента написания структуры программы и заканчивается в момент его полного изъятия из эксплуатации
E. Нет верного ответа
22. На какие три группы процессов делится структура жизненного цикла ПО по стандарту ISO/IEC 12207?
A. Составные, действующие и вспомогательные процессы
B. Основные, дополнительные и остальные процессы
C. Вспомогательные, основные и дополнительные процессы
D. Основные, вспомогательные и организационные процессы
E. Нет верного ответа
23. Основные процессы жизненного цикла ПО делятся на …
A. Процесс документирования, процесс обеспечения качества, процесс верификации
B. Процесс поставки, процесс обеспечения качества, процесс верификации
C. Процесс управления, процесс создания инфраструктуры, процесс обучения
D. Процесс приобретения, процесс поставки, процесс разработки*
E. Процесс управления, процесс разработки, процесс обучения
24. Вспомогательные процессы жизненного цикла ПО делятся на …
A. Процесс документирования, процесс обеспечения качества, процесс верификации*
B. Процесс поставки, процесс обеспечения качества, процесс верификации
C. Процесс управления, процесс создания инфраструктуры, процесс обучения
D. Процесс приобретения, процесс поставки, процесс разработки
E. Процесс управления, процесс разработки, процесс обучения
25. Организационные процессы жизненного цикла ПО делятся на …
A. Процесс управления, процесс создания инфраструктуры, процесс обучения, процесс усовершенствования
В. Процесс документирования, процесс обеспечения качества, процесс верификации
C. Процесс приобретения, процесс поставки, процесс разработки
D. Процесс управления, процесс создания инфраструктуры, процесс документирования
E. нет верного ответа
26. Что подразумевает собой процесс документирования?
A. Процесс состоит из действий и задач заказчика, приобретающего ПП
B. Процесс охватывает действия и задачи, выполняемые поставщиком, который снабжает заказчика ПП
C. Процесс обеспечивает соответствующие гарантии того, что ПО в процессе его ЖЦ соответствует заданным требованиям и утвержденным планам
D. Процесс охватывает действия и задачи, выполняемые разработчиком, и охватывает работы по созданию ПО и его компонентов в соответствии с заданными требованиями
Е. Процесс предусматривает формализованное описание информации, созданной в течение ЖЦ ПО
27. На какие две группы делится документация, создаваемая в процессе разработки программных средств?
A. Документы, входящие в состав ПС и документы, помогающие вносить изменения в ПС
B. Пользовательская документация и документация по сопровождению ПС
C. Документы управления разработкой ПС и документы, входящие в состав ПС
D. Общая документация и вспомогательная документация
E. Документы управления разработкой ПС и документы по сопровождению ПС
28. Код группы 1 стандарта ЕСПД означает …
A. Общие положения
B. Правила выполнения эксплуатационной документации
C. Основополагающие стандарты
D. Резервные группы
E. нет верного ответа
29. Код группы 0 стандарта ЕСПД означает …
A. Прочие стандарты
B. Резервные группы
C. Основополагающие стандарты
D. Правила выполнения документации разработки
E. Общие положения
30. ЕСПД - это …
A. Комплекс программ, устанавливающих правила разработки документации
B. Упорядоченная последовательность команд (инструкций) компьютера для решения конкретной задачи
C. Система точно сформулированных правил
D. Система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных в желаемый результат за конечное число шагов
E. Комплекс государственных стандартов, устанавливающих взаимоувязанные правила разработки, оформления и обращения программ и программной документации
31. Код группы 5 стандарта ЕСПД означает …
A. Правила выполнения документации разработки
B. Резервные группы
C. Основополагающие стандарты
D. Правила выполнения эксплуатационной документации
Е.Правила обращения программной документации
32. Код группы 4 стандарта ЕСПД означает …
A. Резервные группы
B. Правила выполнения документации сопровождения
C. Общие положения
D. Правила выполнения документации изготовления
E. Правила выполнения документации разработки
33. Код группы 3 стандарта ЕСПД означает …
A. Правила выполнения документации сопровождения
B. Правила выполнения документации разработки
C. Правила обращения программной документации
D. Правила выполнения документации изготовления
E. Правила эксплуатационной документации
34. Руководство программиста
A. ГОСТ 19.506-79
B. ГОСТ 19.404-79
C. ГОСТ 19.505-79
D. ГОСТ 19.604-78
E. нет верного ответа
35. Заголовки разделов записывают …
A. Строчными буквами и размещают по правому краю
B. Строчными буквами и размещают симметрично относительно правой и левой границ текста
C. Прописными буквами и размещают по левому краю
D. С абзаца строчными буквами (кроме первой прописной)
E. Прописными буквами и размещают симметрично относительно правой и левой границ текста
36. Что не входит в основную часть программного документа?
A. Текст документа
B. Перечень сокращений
C. Лист содержания
D. Приложения
E. Предметный указатель
37. Информационная часть программного документа содержит:
A. Предметный указатель и лист содержания
B. Лист утверждения и лист содержания
C. Титульный лист и лист утверждения
D. Аннотацию и лист содержания
E. Лист утверждения и аннотацию
38. Титульная часть программного документа содержит:
A. Титульный лист
B. Лист утверждения и титульный лист
C. Титульный лист и аннотацию
D. Титульный лист и лист содержания
E. Нет верного ответа
39. Где должны быть указаны требования к информационным структурам на входе и выходе и методам решения, исходным кодам, языкам программирования
A. Требования к составу и параметрам технических средств
B. Требования к функциональным характеристикам
C. Требования к информационной и программной совместимости
D. Требования к надежности
E. Специальные требования
40. Где должны быть указаны требования к обеспечению устойчивого функционирования, контроль входной и выходной информации, время восстановления после отказа и т.п.
A. Требования к функциональным характеристикам
B. Требования к составу и параметрам технических средств
C. Требования к надежности
D. Специальные требования
E. нет верного ответа
Паспорт
1 вариант
Сұрақтың № № вопроса
Қиындықтың дәрежесі
Уровень сложности
Дұрыс жауабы
Правильные ответы