Обзор методов тестирования программного обеспечения
Авторы: Yasmin Makki Mohialden, Nadia Mahmood Hussien, Sundos Abdulameer Hameed (перевод: И. С. Мельников)
Источник: Yasmin Makki Mohialden, Nadia Mahmood Hussien, Sundos Abdulameer Hameed. Review of Software Testing Methods [Электронный ресурс] : Journal la multiapp. – Baghdad, Iraq : Computer Science Department, College of Science, Multansiriyah University, 2022. – Режим доступа: https://www.researchgate.net/publication/361414843_Review_of_Software_Testing_Methods. – Загл. с экрана.
Аннотация
С ростом сложности программ повышается внимание к обеспечению их качества. По сути, это зависит от совершенствования методов тестирования качества программ на двух этапах: от разработки до эксплуатации. Поэтому мы разрабатываем методы и методологии тестирования программного обеспечения. Цель данной статьи — обсудить методы тестирования программного обеспечения и их классификации в соответствии с основными свойствами, а также выбрать программное обеспечение, подходящее для каждого метода. Также представлена большая часть литературы по методам и методикам тестирования программного обеспечения.
Ключевые слова
Методы тестирование, качество программного обеспечения, классификация методов, свойства методов, литература
Введение
Тестирование — это процесс оценки соответствия системы изначально заданным критериям. Процесс проверки соответствия созданной системы критериям, заданным пользователем, называется валидацией. В этой конкретной ситуации фактические и ожидаемые результаты отличаются друг от друга. В процессе тестирования программного обеспечения в разработанном приложении или системе обнаруживаются недостатки, ошибки и предварительные условия. Один из способов сбора информации, относящейся к продукту, — это изучение качества продукта.
Тестирование программного обеспечения ничем не отличается от любой другой деятельности, связанной с рисками. Для достижения этой цели тестировщики должны уметь проводить большое количество тестов, а также принимать решения о необходимости дальнейшего анализа рисков. Одна из целей эффективного тестирования — выполнить как можно меньше тестов для получения максимального количества информации. Тестирование программного обеспечения является неотъемлемой частью как обеспечения качества программного обеспечения, так и его контроля. Из-за возможных задержек в графике, перерасходов средств и отмен, тестирование программного обеспечения для критически важных приложений может оказаться довольно дорогим (Джамиль и др., 2016).
Процесс тестирования делится на несколько уровней и этапов, и тестировщик переходит с одного уровня на другой по мере продвижения процесса. Системное тестирование можно разделить на три основных этапа: тестирование на уровне модулей, тестирование на уровне интеграции и тестирование на уровне системы.
Разработчик программного обеспечения и тестировщик программного обеспечения уделяют каждому из этих этапов максимум внимания, прежде чем считать любой из них завершенным. Тестирование программы — один из многих этапов, необходимых для разработки надежной программной системы. Существует две категории, которые называются статическим и динамическим тестированием соответственно.
Практика визуального просмотра программного кода и сопроводительной документации называется статическим тестированием. Этот вид тестирования не включает в себя реальный запуск тестируемой программы. Использование символьного выполнения — распространенный подход, используемый при проведении статического тестирования.
Цель динамического тестирования, с другой стороны, — проверить программное обеспечение, наблюдая за его реакцией на различные входные данные. Это делается для того, чтобы гарантировать, что программа работает так, как задумано (Korel, 1990; Guo et al., 2022). Жизненный цикл разработки программного обеспечения включает итеративное тестирование (SDLC) как один из его компонентов. Для успешной разработки программного обеспечения необходимо организовать отдельные команды для каждого модуля (модульное тестирование).
Программные архитектуры, включающие только один модуль, называются одномодульными системами. После интеграции нередко возникают ошибки. Системное тестирование, включающее оценку программы в целом, является последним тестом в жизненном цикле разработки программного обеспечения (SDLC). Отсутствие сложностей, связанных с интегрированными модулями, никоим образом не затрудняет процесс программирования. Для масштабного или глубокого тестирования сложных систем могут потребоваться значительные затраты времени и ресурсов. Наличие большего количества компонентов, чем необходимо, затрудняет тестирование каждой возможной комбинации и состояния системы, что является ещё одним недостатком такого подхода.
Практика тестирования может применяться к различным видам разработки в самых разных компаниях. Несмотря на огромное разнообразие сценариев и приложений тестирования, между целями всё же существует взаимосвязь. Все инициативы, связанные с расширением компании, проходят исчерпывающее тестирование, чтобы гарантировать, что они не превысят первоначально запланированные затраты или не будут полностью провалены.
Этот основной мотиватор представляет собой четыре взаимосвязанные цели экзамена. Определите степень рисков разработки и причины этих рисков, которые можно снизить с помощью тестирования и экспериментов. Выявленный риск потенциально может быть снижен с помощью тестирования. Когда будет проводиться последний этап тестирования? Убедитесь, что тестирование находится под контролем на протяжении всего процесса разработки (Dwivedi et al., 2022; Everett & McLeod, 2007).
Остальная часть статьи имеет следующий формат: предыдущие исследования в области тестирования программного обеспечения анализируются и обсуждаются в разделе 2 настоящего исследования. Методы тестирования программного обеспечения рассматриваются в разделе 3, а заключение представлено в разделе 4.
Обзор литературы по тестированию программного обеспечения
Йованови (2006) представляет краткий обзор наиболее важных методов и методик тестирования. Концепции тестирования «черного ящика» и «белого ящика», а также сопутствующие процедуры тестирования представлены в контексте обсуждения общей классификации. Ниже приведены некоторые примеры: (Сравнительное тестирование, Эквивалентное разбиение, Анализ граничных значений и Построение графиков причинно-следственных связей).
Рошан и др. (2012) провели анализ многочисленных подходов к тестированию программного обеспечения на основе поиска, сделали прогнозы относительно будущих тенденций исследований и заглянули в будущее тестирования программного обеспечения. В данной статье представлен подробный обзор тестирования программного обеспечения на основе поиска (SBST), а также других современных областей компьютерной техники, пересекающихся с SBST.
В рамках данного исследования мы изучаем последние достижения в тестировании программного обеспечения на основе поиска. В контексте современного тестирования программного обеспечения эта область создает новую область.
Тестирование программного обеспечения на основе поиска более эффективно, чем другие методы тестирования программного обеспечения, что приводит к экономии времени и средств. Метод тестирования программного обеспечения на основе поиска достаточно адаптируем для использования как в условиях «белого ящика», так и «черного ящика».
С его помощью могут быть реализованы и другие методы современных вычислений, такие как генетические алгоритмы и конечные автоматы (FSM). Очевидно, что научный мир становится все более заинтересованным в очень перспективном направлении тестирования программного обеспечения, таком как тестирование программного обеспечения на основе поиска, о чем свидетельствует растущее число статей, посвященных этой теме.
Савант и др. (2012) исследуют ценность проведения тестирования для обеспечения качества программного обеспечения. В данном исследовании также подробно рассматриваются цели и основные принципы тестирования программного обеспечения. Они рассматривают различные процедуры и подходы к тестированию для различных типов программного обеспечения. Последнее преимущество заключается в том, что он делает грань между тестированием и отладкой программного обеспечения более четкой.
По мнению Гаутама и др. (2022), автоматизация тестирования программного обеспечения — это подход, который может быть успешно использован в программной инженерии. С другой стороны, они обнаружили 48 основных исследовательских работ по каждому подходу к тестированию программного обеспечения, основанному на машинном обучении. Это демонстрирует, как модель использует данные для формирования процессов обучения и прогнозирования. Они обнаружили, что чаще всего машинное обучение применяется для разработки, улучшения и оценки тестовых случаев. Кроме того, с помощью машинного обучения были оценены затраты на использование базы данных Oracle.
Объектно-ориентированное тестирование программного обеспечения рассматривается в исследовании Разы и др. (2022). Объектно-ориентированное тестирование программного обеспечения использует различные методы и методологии, включая UML-диаграммы, эволюционное тестирование, генетические алгоритмы, тестирование методом «черного ящика» и тестирование методом «белого ящика». Чтобы понять, что происходит, наше исследование провело обзор актуальной литературы по данной теме.
Умар и Чжаньфан в своем исследовании 2020 года изучили и сравнили ряд различных подходов к динамическому тестированию программного обеспечения. В этой статье мы рассмотрим некоторые из наиболее распространенных подходов к тестированию, которые используются в постоянно меняющихся ситуациях. Сравнение различных подходов к динамическому тестированию проводится на последнем этапе в стремлении улучшить тестирование и, как следствие, качество программного обеспечения. С другой стороны, в данной статье анализируются и сопоставляются наиболее часто используемые методологии динамического тестирования программного обеспечения. В разработке программного обеспечения использование этих методологий может помочь тестировщикам качественно выполнить тестирование, что, в свою очередь, повышает качество и надежность программы.
Бэкстром (2022) провел исследование литературы по применению уровней тестирования, сортировок тестов, методологий проектирования тестов и инструментов автоматизации тестирования. За исключением модульного тестирования, результаты значительно различаются в зависимости от исследуемой демографической группы. В порядке убывания популярности наиболее распространенными являются функциональные тесты. Тестирование безопасности проводится реже, чем регрессионное, производительное и юзабилити соответственно. Методы, которые считаются «черными ящиками», такие как тестирование вариантов использования и анализ граничных значений, а также исследовательское тестирование и прогнозирование ошибок, являются полезными подходами для понимания того, как все работает. Методы «белого ящика» не так распространены, как методы «черного ящика». С другой стороны, тот факт, что лишь небольшая часть тестов часто автоматизирована, свидетельствует о невысокой общей загрузке. Ручное тестирование играет важную роль в бизнесе.
Ахуджа и др. (2022) представляют обзор нескольких подходов к тестированию программного обеспечения, таких как дифференциальное, метаморфическое, мутационное и комбинаторное тестирование, а также состязательное пертурбационное тестирование, и обсуждают некоторые сложности их применения для систем дополненного восприятия, используемых в VBS. В частности, авторы фокусируются на применении этих методов тестирования.
В дополнение к этому мы представляем и обсуждаем результаты предварительного экспериментального сравнения с общепринятым эталоном, используемым в VBS. В данном исследовании рассматриваются несколько методологий тестирования моделей DL. Например, мы обнаружили, что интеграция подходов к тестированию является эффективным способом решения таких проблем, как качество моделей и обучающих наборов данных, идентификация оракулов и выбор тестовых входных данных.
Несмотря на то, что модели DL имеют свои уникальные проблемы, мы пришли к выводу, что традиционные подходы к тестированию программного обеспечения могут быть объединены для тестирования этих моделей. Такие аспекты, как дифференциальное тестирование, метаморфное тестирование и состязательное пертурбационное тестирование, желательны, поскольку они уменьшают проблему тестового оракула и обнаруживают состязательные атаки.
Другие примеры тестирования включают метаморфное тестирование и состязательное пертурбационное тестирование. Метаморфические связи, выявляющие ошибки, не категоризируются, в отличие от самих изображений и объектов. Цель мутационного тестирования — определить, есть ли вариации в выходных данных модели при задании в остальном идентичных входных данных.
Несмотря на сложности, связанные с разработкой операторов мутации, возможность их использования для тестирования моделей DL весьма интересна. Благодаря этой функции вам не придётся вручную создавать новые тестовые случаи, поэтому вы можете анализировать как модель, так и наборы данных. Модели DL могут быть подвергнуты состязательным тестам на возмущения, что является интересной особенностью этих моделей, поскольку позволяет оценить их устойчивость к изменениям и уровень безопасности.
На основе исследований и опыта автора Ван и Ли (2022) предлагают обзор стратегий тестирования, подходящих для крупномасштабного информационного программного обеспечения. Статья: Данное исследование может быть полезно при тестировании крупномасштабного информационного программного обеспечения, а также для собственной работы автора, которая может быть улучшена в результате.
Методы тестирования программного обеспечения
В этом разделе представлен обзор множества доступных в настоящее время подходов к тестированию программного обеспечения. Ниже приведены две категории, используемые для классификации методов тестирования программного обеспечения.
Ручное тестирование, часто называемое статическим: процесс тестирования длительный и трудоемкий. С точки зрения статистики, оно проводится на более раннем этапе жизненного цикла. В определенных кругах его также называют «статическим тестированием». Его выполняют аналитики, разработчики и тестировщики. Ниже перечислены лишь некоторые из различных доступных подходов к ручному тестированию: просмотр информации, осмотр объекта, изучение технических аспектов и экзамен (Sawant et al., 2012).
Динамическое тестирование (также известное как автоматизированное тестирование): тестировщик выполняет тестирование, выполняя сценарий в инструменте тестирования и процедуры. Существует несколько различных типов автоматизированного тестирования, и один из них называется динамическим тестированием. Дополнительные типы автоматизированного тестирования включают в себя следующие категории и подтипы: Тестирование для определения точности, скорости выполнения, безопасности и длительности работы. Тестирование на корректность, производительность, безопасность и надежность — названия этих различных видов (Sawant et al., 2012).
Тестирование на корректность требует, чтобы программное обеспечение, по крайней мере, соответствовало фундаментальному уровню ожиданий точности. При тестировании на корректность необходимо будет обратиться к оракулу, чтобы различать допустимые и нежелательные формы поведения. Тестировщик может иметь предыдущие знания о внутренней работе тестируемого в данный момент программного модуля, хотя это не гарантируется. Вследствие этого могут использоваться такие стратегии тестирования, как «черный ящик», «белый ящик» или «серый ящик» (Khan, 2010).
Тестирование методом «белого ящика» проверяет не только то, насколько хорошо программа выполняет свои функции, но и насколько хорошо она соответствует заявленным спецификациям проекта. Тестирование в среде «белого ящика» требует глубокого понимания программирования. Тестирование методом «белого ящика» также часто называют тестированием «прозрачных ящиков» или «стеклянных ящиков». Эта методология может использоваться для тестирования на уровне модуля, интеграции и системы. Другими словами, оно устанавливает, защищены ли данные информационными системами и насколько эффективно они работают. В результате оно позволяет протестировать отдельные пути, по которым может пройти модуль. В процессе тестирования проверяются все циклы и структуры данных.
Тестирование методом «белого ящика» — сложный метод тестирования, требующий программирования. Оно проводится специалистами по тестированию. В рамках этого метода проводится тщательная проверка и анализ кода путем анализа модуля. В случае несоответствия выходных данных предварительным требованиям он перекомпилируется и повторно проверяется. Оценивается чистый код приложения, а не его пользовательский интерфейс или визуальное представление.
Этот вид тестирования проверяет внутреннюю структуру программного обеспечения. Тестирование в среде «белого ящика» предполагает предоставление системе входных данных и наблюдение за процессом их обработки для создания выходных данных. Тестировщик должен быть знаком с исходным кодом. Тестирование в среде «белого ящика» необходимо для всех других типов тестирования, включая интеграционное, модульное и системное. Оно гарантирует корректное выполнение всех тестовых объектов и компонентов (Bourque et al., 2002; Andriyadi et al., 2022; Khan, 2010; De Troyer & Leune, 1998).
Тестирование «черного ящика»: основано на анализе спецификаций программного обеспечения, а не на анализе того, как программа работает изнутри. Цель этого теста — определить, насколько эффективно компонент удовлетворяет установленным для него критериям.
При этом базовой логической структуре системы уделяется либо очень мало внимания, либо вообще не уделяется, вместо этого полностью концентрируясь на наиболее важных характеристиках системы. Оно гарантирует успешное получение входных данных и корректную генерацию выходных данных. Целостность внешних данных сохраняется во время тестирования методом «чёрного ящика».
Тестирование методом «чёрного ящика» может включать в себя различные типы тестирования, включая исследовательское тестирование, функциональное тестирование, стресс-тестирование, нагрузочное тестирование, тестирование удобства использования, дымовое тестирование, тестирование восстановления и объёмное тестирование.
Тесты и оценки (альфа и бета). Альтернативы традиционному тестированию методом «чёрного ящика» включают графовое тестирование и разбиение на эквивалентности, анализ граничных значений и сравнительное тестирование, ортогональное тестирование и сравнительное тестирование, специализированное тестирование, тестирование методом «чёрного ящика» и метрики прослеживаемости (Sawant et al., 2012; Jiang & Hassan, 2015).
Тестирование с использованием метода «серых ящиков». Тестирование методом «серого ящика» — это гибридный подход, включающий как тестирование методом «белого ящика», так и тестирование методом «чёрного ящика». Цель тестирования методом «серого ящика» — убедиться, что программное обеспечение соответствует своим спецификациям, а также получить представление о его внутренней работе.
Это предполагает использование обратной разработки для обнаружения сообщений об ошибках или граничных значений. Метод оценки программного обеспечения с учётом кода или логики, лежащих в основе, называется тестированием методом «серого ящика». По сравнению с тестированием методом «чёрного ящика», тестирование методом «серого ящика» требует более полного понимания внутренних механизмов программы. Тестирование, проводимое в «чёрном» или «сером ящике», не позволяет изучить все внутренние компоненты системы (Sachtleben & Peleska, 2022).
Тестирование производительности
Этот вид тестирования используется для оценки соответствия системы или компонента определённому требованию к уровню производительности. Это включает в себя объём используемых ресурсов, объём выполненной работы и время реакции на воздействия. Тестирование производительности — это метод, который может использоваться для оценки уровня функциональности приложения. Оно направлено на поддержание задержек, пропускной способности и уровня использования веб-сайта на минимально возможном уровне, сохраняя при этом его цели. Это отдельная область исследований, охватывающая все аспекты бизнес-операций, включая планирование, проектирование, реализацию, анализ и отчётность. Оно не состоит из каких-либо отдельных компонентов. Существует два различных вида тестов производительности.
Тестирование под нагрузкой: необходимо, чтобы несколько крупных программных систем одновременно выполняли сотни тысяч, а возможно, и миллионы запросов. Эти системы требуют тщательного тестирования, чтобы гарантировать их максимальную производительность (т. е. скорость поступления запросов). Максимальная производительность компьютера, периферийного устройства, сервера, сети, а также приложения, может быть определена с помощью процедуры, известной как нагрузочное тестирование.
Нагрузочное тестирование можно использовать для детального анализа возможностей одной системы или для сравнения и сопоставления возможностей нескольких систем. Анализируя результаты этого теста, можно оценить, способна ли программа обрабатывать большое количество пользователей (Sawant et al., 2012; Jiang & Hassan, 2015).
Термин «стрессовое тестирование» относится к виду тестирования, при котором случайные процессы выполняются в большем объёме, с большей скоростью и в течение более длительного периода времени, чем обычно. Это подход, который ускоряет процесс обнаружения проблем и оценки надёжности продукта. Стрессовое тестирование — это один из видов тестирования, которое можно проводить. Это процесс тестирования системы или компонента за пределами установленных ограничений с целью определения причин отказа. По мере роста пользовательской базы требуется больше стрессового тестирования.
В ходе стрессового тестирования собирается огромное количество входных данных, вопросов и другой информации (Khan, 2010). Он используется для определения того, как система или компонент выходит из строя под воздействием нагрузки (Khan, 2010). Рассмотрите возможность проведения стресс-теста, чтобы увидеть, как меняется отзывчивость пользовательского интерфейса в ответ на изменения нагрузки на процессор, оперативную память, хранилище и сеть (Fu et al., 2022).
Тестирование в целях безопасности гарантирует, что доступ к программному обеспечению получат только пользователи с соответствующими разрешениями. Любая разработанная система или система, которая все еще находится на стадии разработки, подвержена серьезному повреждению при эксплуатации ключевых недостатков безопасности и уязвимостей. Тестирование безопасности помогает обнаружить проблемы и найти их решения. Оно гарантирует, что система будет продолжать нормально функционировать в течение длительного времени. Кроме того, оно защищает системы от неразрешенных вторжений. Тестирование на наличие уязвимостей безопасности полезно для организации в целом (Khan, 2010). Существует прямая корреляция между качеством, надежностью и безопасностью. Уязвимости программного обеспечения позволяют хакерам обходить систему безопасности.
Программа и ее функции доступны только лицам, получившим разрешение на их использование. Для обнаружения утечек данных используются межсетевые экраны. Это достигается путем шифрования приложения и использования разнообразного программного и аппаратного обеспечения (Sawant et al., 2012). Тестирование безопасности программного обеспечения направлено на выявление ошибок и уязвимостей программного обеспечения для предотвращения потери данных (Haridas, 2007). Поиск недостатков и потенциальных опасностей в программном обеспечении является важным шагом на пути к его защите от несанкционированного использования.
Эффективная эксплуатация позволяет либо заставить программное обеспечение функционировать, либо сделать его неработоспособным. Цели тестирования безопасности программного обеспечения могут значительно различаться в разных организациях (Arkin et al., 2005; Yimer & Gizachew, 2022). Наиболее часто используемые методы тестирования безопасности являются дорогостоящими и порой чрезмерно сложными в плане действий и этапов, которые они включают. Из-за этой сложности многие разработчики склонны пренебрегать тестированием программного обеспечения на безопасность (Yimer & Gizachew, 2022).
Тестирование надежности. На раннем этапе проектирования проводится тестирование надежности, чтобы убедиться, что система соответствует установленным для неё критериям надежности.
Тестирование надежности включает в себя множество взаимосвязанных частей. Это тестирование использует программное обеспечение, которое уже имеет встроенный механизм тестирования. Это эффективный метод определения надежности программного обеспечения. Надежность системы определяется после разработки программного обеспечения. При тестировании программного обеспечения могут использоваться методы анализа или исправления ошибок (Sawant et al., 2012). Тестирование, оценка и прогнозирование надежности системы также демонстрируют, как создавать планы тестирования, которые предоставляют данные об отказах и/или ухудшениях в очень короткие сроки.
В это обсуждение также включено сравнение планов тестирования с сопоставимыми оценками надежности. В этой статье обсуждается использование данных об ухудшении надежности для оценки надежности и принятия решений по техническому обслуживанию (Elsayed, 2012).
Заключение
Несмотря на то, что инфраструктура для создания и тестирования программного обеспечения постоянно совершенствуется, её важность для процесса невозможно переоценить. Тестирование, с другой стороны, часто выполняется на самом последнем этапе разработки программного обеспечения. В этом исследовании представлены наиболее важные предыдущие работы, связанные с изучением методов тестирования программного обеспечения, а также наиболее важные способы тестирования существующего программного обеспечения на основе текущих источников. Кроме того, обсуждаются наиболее важные методы тестирования нового программного обеспечения. Каждая процедура была разбита на составные части вместе с параметрами того, как она должна выполняться, и отведённым на её выполнение временем. тестирование на более поздних этапах жизненного цикла системы, а не только на поздних стадиях, поскольку процесс тестирования системы происходит на поздних этапах жизненного цикла всех программных систем, а не только на поздних стадиях. финансовые ресурсы системы и потерянное время из-за откладывания тестирования на более поздние этапы жизненного цикла системы, а не только на поздних стадиях.
Ссылки
- 1. Ahuja, M. K., Gotlieb, A., & Spieker, H. (2022, April). Testing Deep Learning Models: A First Comparative Study of Multiple Testing Techniques. In 2022 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW) (pp. 130-137). IEEE.
- 2. Andriyadi, A., Fikri, R. R. N., & Saputri, E. F. (2022). Evaluasi Sistem Informasi Perpustakaan Institut Informatika Darmajaya Dengan Whitebox Testing. Journal of Innovation Research and Knowledge, 1(8), 743-746.
- 3. Arkin, B., Stender, S., & McGraw, G. (2005). Software penetration testing. IEEE Security & Privacy, 3(1), 84-87.
- 4. Backstrom, K. (2022). Industrial Surveys on Software Testing Practices: A Literature Review [Thesis]. University of Helsinki.
- 5. Bourque, P., Lavoie, J. M., Lee, A., Trudel, S., & Lethbridge, T. C. (2002, October). Guide to the software engineering body of knowledge (swebok) and the software engineering education knowledge (seek)-a preliminary mapping. In Proceedings 10th International Workshop on Software Technology and Engineering Practice (pp. 8-8). IEEE Computer Society.
- 6. De Troyer, O. M. F., & Leune, C. J. (1998). WSDM: a user centered design method for Web sites. Computer Networks and ISDN systems, 30(1-7), 85-94.
- 7. Dwivedi, N., Katiyar, D., & Goel, G. (2022). A Comparative Study of Various Software Development Life Cycle (SDLC) Models. International Journal of Research in Engineering, Science and Management, 5(3), 141-144.
- 8. Elsayed, E. A. (2012). Overview of reliability testing. IEEE Transactions on Reliability, 61(2), 282-291.
- 9. Everett, G. D., & McLeod, R. (2007). The Software Development Life Cycle. Wiley-IEEE. Press. https://doi.org/10.1002/9780470146354.ch2.
- 10. Fu, J., Wang, Y., Zhou, Y., & Wang, X. (2022). How resource utilization influences UI responsiveness of Android software. Information and Software Technology, 141, 106728.
- 11. Gautam, S., Khunteta, A., & Sharma, P. (2022). A Review on Software Testing Using Machine Learning Techniques. ECS Transactions, 107(1), 3393.
- 12. Guo, X., Okamura, H., & Dohi, T. (2022). Automated Software Test Data Generation With Generative Adversarial Networks. IEEE Access, 10, 20690-20700. https://doi.org/10.1109/ACCESS.2022.3153347.
- 13. Haridas, N. (2007). Software Engineering-Security as a Process in the SDLC. SANS Institute, 29.
- 14. Jamil, M. A., Arif, M., Abubakar, N. S. A., & Ahmad, A. (2016, November). Software testing techniques: A literature review. In 2016 6th international conference on information and communication technology for the Muslim world (ICT4M) (pp. 177-182). IEEE. https://doi.org/10.1109/ICT4M.2016.045.
- 15. Jiang, Z. M., & Hassan, A. E. (2015). A survey on load testing of large-scale software systems. IEEE Transactions on Software Engineering, 41(11), 1091-1118.
- 16. Jovanovic, I. (2006). Software testing methods and techniques. The IPSI BgD Transactions on Internet Research, 5(1) 30-41.
- 17. Khan, M. E. (2010). Different forms of software testing techniques for finding errors. International Journal of Computer Science Issues (IJCSI), 7(3), 24.
- 18. Korel, B. (1990). Automated software test data generation. IEEE Transactions on software engineering, 16(8), 870-879. https://doi.org/10.1109/32.57624.
- 19. Raza, A., Shah, B., Ashraf, M., & Ilyas, M. (2022). Object-Oriented Software Testing: A Review. In Proceedings of International Conference on Information Technology and Applications (pp. 461-467). Springer, Singapore.
- 20. Roshan, R., Porwal, R., & Sharma, C. M. (2012). Review of search based techniques in software testing. International Journal of Computer Applications, 51(6).
- 21. Sachtleben, R., & Peleska, J. (2022). Effective grey-box testing with partial FSM models. Software Testing, Verification and Reliability, 32(2), e1806.
- 22. Sawant, A. A., Bari, P. H., & Chawan, P. M. (2012). Software testing techniques and strategies. International Journal of Engineering Research and Applications (IJERA), 2(3), 980-986.
- 23. Umar, M. A., & Zhanfang, C. (2020). A Comparative Study of Dynamic Software Testing Techniques. International Journal of Advanced Networking and Applications, 12(3), 4575-4584.
- 24. Wang, B., & Li, H. (2022). Analysis of Testing Methods of Large-scale Information Software. Academic Journal of Computing & Information Science, 5(1).
- 25. Yimer, S., & Gizachew, B. (2022). The Development of a Web-Based Application Security Testing Framework in Addis Ababa, Ethiopia. Global Journal of Computer Sciences: Theory and Research, 12(1), 12-22.
- 26. Yimer, S., & Gizachew, B. (2022). The Development of a Web-Based Application Security Testing Framework in Addis Ababa, Ethiopia. Global Journal of Computer Sciences: Theory and Research, 12(1), 12-22.