Процесс тестирования программного обеспечения, типы и методики тестирования

Авторы:Itti Hooda, Rajender Singh Chhillar

Автор перевода:Н.А. Нужная

Источник (англ.): International Journal of Computer Applications (0975 – 8887). Volume 111 – No 13, February 2015

Аннотация

Тестирование программного обеспечения является наиболее критической фазой жизненного цикла разработки программного обеспечения(SDLC). Тестируемое программное обеспечение проходит различные этапы, которые, согласно исследованию, включают: анализ тестирования; планирование тестирования, подготовку тестовых случаев/ данных/окружения, выполнение тестов, регистрацию и отслеживание ошибок и завершение. В прошлом было проведено множество исследований с целью оптимизации общего процесса тестирования с намерением повысить качество программного обеспечения за минимальное время. После оценки всех доступных процессов тестирования было обнаружено, что для различных типов приложений используются разные модели разработки, и для их тестирования выполняются различные методики тестирования. На основании исследования, проведенного в ходе изучения данной статьи, был проведен анализ, показывающий, что каждая компания модифицирует свой процесс тестирования в соответствии с потребностями и проводит тестирование на основе критичности приложений. Наиболее критические компоненты каждого приложения должны быть тщательно протестированы, чтобы убедиться, что их функциональные, производительные и защитные функции работают должным образом. В этой статье рассказывается об обеспечении качества всех типов программных приложений путем выполнения определенных типов методик тестирования и оптимизированных процессов тестирования программного обеспечения. Согласно проведенному исследованию, типы тестирования можно разделить на 3 вида:Функциональное тестирование, Тестирование производительности и Тестирование безопасности, а также основной процесс тестирования программного обеспечения, называемый Анализ, Подготовка, Выполнение и Завершение.

1. Введение

Тестирование программного обеспечения— это основная деятельность по оценке и выполнению программного обеспечения с целью обнаружения ошибок. Это процесс, в ходе которого системные требования и компоненты системы проверяются и оцениваются вручную или с использованием инструментов автоматизации, чтобы выяснить, удовлетворяет ли система заданным требованиям, и определяются различия между ожидаемыми и фактическими результатами. Данная статья на высоком уровне разделена на два раздела. Первый раздел охватывает оптимизированный процесс тестирования, который подробно описывает все фазы жизненного цикла тестирования, а второй раздел охватывает типы тестирования. Первый раздел подчеркивает основные виды деятельности, которые включают Анализ [A], Планирование и Подготовку [P], Выполнение [E] и Завершение [C]. Где завершение включает деятельность по выпуску и анализу первопричин, а фаза выполнения идет рука об руку с регистрацией и отслеживанием ошибок. Жизненный цикл программной ошибки, объясненный в статье в следующем разделе, освещает обязательные шаги для регистрации и отслеживания ошибок. Фаза подготовки тестирования включает подготовку тестовых случаев, отбор тестовых случаев, оптимизацию тестовых случаев и подготовку тестовых данных, что будет подробно рассмотрено далее в этой статье.

Существует множество доступных типов тестирования, таких как черный ящик, белый ящик, тестирование на основе состояний, тестирование безопасности, тестирование внешнего вида и удобства, приемочное тестирование, системное тестирование, альфа- и бета-тестирование, конфигурационное тестирование, верификация и валидация. На основании проведенного исследования и изучения, данная статья классифицирует их все под тремя типами тестирования высокого уровня: Функциональное, Производительность и Безопасность (FPS). Последний раздел посвящен заключению, которое показывает актуальность нашего оптимизированного процесса тестирования программного обеспечения и FPS как основы для методов тестирования.

2. ОПТИМИЗИРОВАННЫЙ ПРОЦЕСС ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

2.1. Фаза анализа тестирования

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

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

2.2. Фаза планирования и подготовки тестирования

Фаза подготовки тестирования включает подготовку тестового плана,тестовых случаев, тестовых данных и тестовой среды. Тестовый план — это первый документ, который подготавливается, и он определяет объем, цели, функции для тестирования, функции, не подлежащие тестированию, типы тестирования, которые будут выполнены, роли и обязанности команды тестирования, критерии входа и выхода и допущения [1].

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

Все допустимые и недопустимые наборы тестовых данных должны быть подготовлены для каждого тестового случая, и подготавливается документ тестовых данных [34]. Тестовые данные также генерируются на основе некоторых алгоритмов и инструментов [11]. Подготовка тестовых случаев включает различные этапы, которые начинаются с Генерации тестовых случаев [12], Отбора тестовых случаев [16], Оценки и Приоритизации тестовых случаев [5] [28]. Существуют различные алгоритмы, которые используются для генерации и оптимизации тестовых случаев [29] [30] [31] [32] [33].

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

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

2.3. Фаза выполнения тестов

На этом этапе тестировщики выполняют программное обеспечение в соответствии с тестовыми случаями.Везде, где фактические и ожидаемые результаты не совпадают, тестировщик открывает ошибки и назначает их разработчикам. Регистрация и отслеживание ошибок следует полному жизненному циклу ошибки. В прошлом уже была проделана большая работа, focusing on main steps to be taken to report valid fault. Рутинные отчеты могут обсуждаться на еженедельной или ежедневной основе вместе с ходом проекта, отслеживаются поставка проекта, приемка и утверждения для анализа пилотного проекта.

2.4. Завершение тестирования

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

3. ТИПЫ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Согласно исследованиям и изучению,существуют различные методики тестирования программного обеспечения, такие как черный ящик, белый ящик, серый ящик [19] [21], регрессионное, надежность, удобство использования, производительность, модульное, системное, интеграционное, безопасность, дымовое (smoke), санитарное (sanity) и объектно-ориентированное тестирование и т.д. [22] [24] Невозможно выполнить все типы тестирования на программном обеспечении, так как всегда выделяется фиксированное количество времени на тестирование. Функциональное тестирование очень распространено, и в прошлом было проведено много исследований по нему, поэтому лишь в редких случаях сайт выходит из строя из-за отсутствия функционального тестирования. Самые последние сбои, произошедшие в прошлом, были из-за недостаточного тестирования производительности и безопасности.

В 2014 году сайт Индийских железных дорог рухнул, так как не смог выдержать нагрузку от клиентов. Другой сбой в 2014 году — крах веб-сайта онлайн-заявок Делийского университета (DU) в последний день подачи из-за чрезмерной нагрузки на сайт. Затем были случаи в 2013 году, когда сайты индийского правительства были взломаны некоторыми внешними агентствами. После анализа и обзора всех этих методик было обнаружено, что для обеспечения качества и общей надежности программного обеспечения на данном программном обеспечении должна выполняться правильная смесь типов тестирования. В этой статье основное внимание будет уделено основным методикам тестирования, таким как Функциональное [F], Производительное [P] и Тестирование безопасности [S]. Правильная смесь тестирования должна включать элементы из всех категорий F, P и S. Функциональность — это первый и главный аспект тестирования программного обеспечения, который обеспечивает качество программного обеспечения.

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

3.1. Функциональное тестирование

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

Автоматизированные тестовые случаи также генерируются моделями UML [8]. Существуют различные типы функциональных методов и методик тестирования, которые могут выполняться на различных уровнях тестирования, т.е. модульное тестирование, интеграционное тестирование (нисходящее и восходящее тестирование) и системное тестирование [18]. Существует множество тестов, выполняемых на различных уровнях тестирования, таких как тестирование черного ящика [19], тестирование белого ящика, тестирование серого ящика [21], регрессионное тестирование [22] [24], фаззовое тестирование, тестирование на основе прецедентов использования, исследовательское тестирование, дымовое тестирование [25], санитарное тестирование [26], приемочное тестирование [27], альфа-, бета-тестирование и т.д. Тестовые случаи строятся вокруг спецификаций и требований, т.е. того, что приложение должно делать. Метод функционального тестирования в основном фокусируется на «Что» должно делать, но не на «Как».

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

Основные типы функционального тестирования кратко объяснены в приведенной ниже таблице 1:

Таблица 1
Тип тестирования Определение
1 Модульное тестирование (Unit Testing) Самый низкий уровень тестирования, в основном выполняемый разработчиком для тестирования единицы кода.
2 Интеграционное тестирование (Integration Testing) Проверяется взаимодействие между различными модулями, чтобы убедиться, что данные правильно передаются между различными компонентами. Это делается либо по нисходящему, либо по восходящему подходу.
3 Системное тестирование (System Testing) Вся система тестируется, чтобы убедиться, что она ведет себя или функционирует так, как задумано и как указано в документе требований. Регрессионное тестирование выполняется, чтобы убедиться, что после исправления ошибок и тестирования исправлений в системе ничего не сломалось. В целом, дымовое (Smoke) и санитарное (Sanity) тестирование выполняется, чтобы убедиться, что все ссылки и функции работают, а среда стабильна.
4 Приемочное тестирование (Acceptance Testing) Предварительное приемочное тестирование выполняется, в основном известное как альфа- и бета-тестирование, чтобы убедиться, что клиенты могут выполнять предполагаемую функциональность, и собирается обратная связь для дальнейшего повышения качества программного обеспечения.
5 Тестирование белого и черного ящика (White box and Black Box Testing) Тестирование черного ящика выполняется, чтобы убедиться, что вывод приложения является правильным для всех различных типов позитивных и негативных входных данных. Существуют различные типы тестирования черного ящика, такие как разбиение на классы эквивалентности, анализ граничных значений, предположение об ошибках и т.д. Белый ящик deals with internal working of code to ensure there is no redundant code written in software. Это включает тестирование строк кода, программы, потока, логики, циклов, структуры, функций, тестирование взаимодействия классов и другое внутреннее тестирование программы.

3.2. Тестирование производительности

Проверяет производительность программного обеспечения при всех благоприятных и неблагоприятных условиях. Это включает все параметры, связанные со временем, такие как время загрузки, время доступа, время работы, время выполнения и т.д. Это также включает частоту успехов, частоту отказов, среднее время между отказами и общую надежность программного обеспечения. Наиболее популярные типы тестирования, выполняемые в тестировании производительности, — это стресс-тестирование и нагрузочное тестирование. Стресс-тестирование выполняется, чтобы найти и понять верхние пределы емкости системы. Приложению дается экстремальная нагрузка, чтобы определить устойчивость системы. Также выполняется тестирование на выносливость (Soak testing), которое называется тестированием на устойчивость. Это тестирование проводится, чтобы определить, может ли система выдерживать непрерывную ожидаемую нагрузку. Потенциальные утечки обнаруживаются путем мониторинга использования памяти.

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

Спайк-тестирование (Spike testing) выполняется путем внезапного увеличения количества пользователей или нагрузки, генерируемой пользователями, на очень большую величину и наблюдения за поведением системы. В основном для тестирования производительности программного обеспечения используются инструменты, так как тестировать нагрузку вручную очень сложно. Существует множество бесплатных инструментов, таких как Soap UI и Jmeter, используемых для тестирования производительности программного обеспечения. Наиболее популярным инструментом, используемым для тестирования производительности программного обеспечения, является инструмент Load runner, и также доступны различные инструменты IBM для тестирования производительности программного обеспечения. Большинство недавних сбоев в программной индустрии произошло из-за отсутствия тестирования производительности [15].

Тестирование безопасности

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

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

Тестирование безопасности проводят двумя методами:

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

Тестирование на проникновение (Penetration Testing) — это тестирование безопасности, в ходе которого оценщики пытаются обойти функции безопасности системы на основе их понимания проектирования и реализации системы.

Также другой тип, который является Фаззовое тестирование (Fuzz Testing), был предложен Бартоном Миллером, университет Висконсина в 1988 году. Это методика тестирования программного обеспечения, в которой автоматически передаются недопустимые, случайные и непредвиденные данные в программное обеспечение, чтобы выяснить реакцию программного обеспечения. Это хорошо для тестирования того программного обеспечения, где входные данные не контролируются предопределенными данными. Эта методика тестирования используется только для поиска простых функций программного обеспечения, но не сложного программного кода.

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

Таблица 2
Типы тестирования Методы
Функциональное тестирование Черный ящик, Белый ящик, попарное тестирование (all pair), таблицы переходов состояний, таблицы решений, тестирование на основе моделей, тестирование на основе использования. Исследовательское тестирование, тестирование на основе спецификаций, регрессионное тестирование, дымовое тестирование, санитарное тестирование.
Тестирование производительности Нагрузочное, Спайк, Стресс, Тестирование на выносливость (Soak) и конфигурационное тестирование.
Тестирование безопасности Статический анализатор, Атака грубой силы (Brute Force), SQL-инъекция и Межсайтовый скриптинг (XSS), Тестирование на проникновение и Фаззовое тестирование.

4. СОПОСТАВЛЕНИЕ ПРОЦЕССА ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ТИПОВ ТЕСТИРОВАНИЯ

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

Рисунок 1

5. ЗАКЛЮЧЕНИЕ

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

Литература

  1. Pressman, R.S. 1997. Software Engineering: A practitioner Approach.4th Edition. Tata McGraw Hill.
  2. Sommerville, I. 1998. Software Engineering. 5th edition. Addison-Wesley.
  3. Myers, G.J. The Art of Software Testing. New York: John Wiley and Sons.
  4. McGraw.Chess,B. Seven pernicious kingdom.2005.A Taxonomy of Software Security Errors.WISSTWorkshop on Software Security Assurance Tools, Techniques and metrices.
  5. G.McGraw.2004.Software SecurityTesting IEEE Security and Privacy.2,2(Sept/Oct 2004),(80-83).
  6. D.Verndon. G.McGraw.2004.Risk Analysis in software Design. IEEE Security and Privacy.2,4.32-37 (July/August 2004).
  7. Sarma, M. D.Kundu.Mail, R. 2007. Automatic Test Case Generation from UML Sequence Diagram. International Conference on Advance Computing and Communication.Doi:10.1109/ADCOM.2007.68.
  8. Bertolino, A. Basanieri, F. 2000. A Practical approach to UML-based derivation of integration tests. In Proceeding of the Fourth International Software Quality Week Europe and International Internet Quality Week Europe(QWE), Brussels, Belgium.
  9. Boghdady, P.N.Badr, J..Hashem, M.Tolba, M.,F. 2011. A Proposed Test Case Generation Technique based on Activity Diagrams.IJET-IJENS:11.No:3.(37-57) [10]Treharne, H. Draper, J. Schneider, S. 2006. Test Case
  10. Swain, Kumar, Santosh,Mohapatra,Durga,Prasad,Mall,Rajiib,2010.Test Case Generation Based on Use case and Sequence Diagram.International Journal of Software Engineering (IJSE). Swain et al.3,(July 2010).
  11. Akhilesh,Babu,Kolluri,K,Tameezuddin,Kalpana,Guddika dula,2012.Effective Bug Tracking Systems.Theories and Implementation”, IOSR Journal of Computer Engineering ISSN:2278-0661 Volume 4,Issue 6(Sept-Oct 2012), pp 31-36.
  12. Rina,DCSK,KU,Haryana,INDIA,Tyagi,Sanjay,DCSA,KU,Haryana,2013.AComparative Study Of Performance Testing Tools.IJARCSSE. 3,(May 2013).
  13. Karen ,Scarfone,2012. Intro to Information Security Testing & Assessment.ScarforecyberSecurity Csr.nist.gov.(7June 2012).
  14. B,Beizer.1990.Software Testing Techniques.Technology Maturation and Research StrategiesCarnegie Mellon UniversityPittsburg,USA.
  15. B,Beizer .1995.Software Testing Techniques.2006.Van NostrandReinhold,New York.1990.ISBN.0-442-20672-0.(31.Oct.2006).
  16. A,Bertolino.2001.Chapter 5: Software Testing . IEEE SWEBOK trial version 1.00.IEEE(May 2001).
  17. Khan,Mohd.Khan,Farmeena.2012.A Comparative Study of White Box, Black Box and Grey Box Testing Techniques.2012. International Journal of Advanced Computer Science and Applications(IJACSA). Vol. 3.No.6.( 2012).
  18. Tarika,Bindia. Computer Programmer CSE,GNDEC,Ludhiana,Punjab-India.1IRTCCC.21 .68-72.(2321-8169).
  19. B,Swamendu,R,Mall.CSeDept,IIT Kgp.2011.Regression Test Selection Techniques, A Survey-Informatica 35 .2011.
  20. Swain,S,k.Mohapatra,D,P.Mall,R,2010.Test Case Generation Based on Use Case and Sequence Diagram.International journal of Software Engineering (IJSE).3, 2,(July 2010),(289-321).
  21. Thakre,Sheetal.Chavan,savita.Chavan,P.M.J2012.Software Testing Strategies and Techniques.International Journal of Emerging Technology and Advanced Engineering .Website: www.ijctac.com .2, 4.(April 2012), (2250-2459).
  22. An Approach to Cost Effective Regression Testing in Black-Box Testing Environment - JICSI International Journal of Computer Science Issues. 8, 3, 1( May 2011 ).(1694-0814).
  23. Chauhan,Kumar,Vinod.2014.Smoke Testing-International Journal of Scientific and Research Publications4,2 (February 2014),( 2250-3153).
  24. Gupta,Yaruna,Sen,Saxena,Vivek.2013.Software Testing: Smoke and Sanity- International Journal of Engineering Research & Technology (IJERT).2,10(October 2013) (2278-0181).
  25. Liskin,olga.Hermann,christoph.Knauss,Eric.Kurpic,Thomas.Rumpe,Bernhard.Schnedda,Kurt.2012.Supporting Acceptance Testing in Distributed Software Projects with Integrated Feedback Systems: Experiences and Requirements. IEEE Seventh International Conference on Global Software Engineering.(2012).
  26. Yoo,Shin.Harman,mark2012.Regression Testing Minimisation, Selection and Prioritisation .A Survey. King’s College London,Centre for Research on Evolution, Search &Testing,Strand, London, WC2R 2LS, UK.22,2 (March 2012) (67-120).http://onlinelibrary.wiley.com/resolve/doi?DOI=10.1002/slv.430
  27. Sumalatha,Mary,Raju,G.2013. Object Oriented Test Case Generation Technique using Genetic Algorithms.International Journal of Computer Applications(0975-8887). 61,20 (January 2013).
  28. Ostrand,T,J.Balcer,M, J.1988.The category-partition method for specifying and generating functional tests. Communications of the ACM 31 ,6(June 1998) (676-686).doi>10.1145/62959.62964
  29. Nirpal,B,Premal,Kale,K,V.2011.Using Genetic Algorithm for Automated Efficient Software Test Case Generation for Path Testing. Int. J. Advanced Networking and Applications.(911-915).02,06 (January 2011).
  30. Malhotra,Ruchika,Garg,Mohit.2011. An Adequacy Based Test Data Generation Technique Using Genetic Algorithms. Journal of Information Processing Systems.7.,2, (June 2011).Doi:10.3745/JIPS.2011.7.2.363.
  31. Bhasin,Harsh.Khanna,Esha.Sudha.2014.Black Box Testing based on Requirement Analysis and Design Specifications International Journal of Computer Applications.(0975 – 8887) .18,18( February 2014).