Что такое статистическое тестирование

Статическое и динамическое тестирование

По критерию запуска программы (исполняется ли программный код) выделяют еще два типа тестирования: статическое и динамическое.

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

1. Статическое тестирование

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

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

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

Даже статическое тестирование может быть автоматизировано, например, можно использовать автоматические средства проверки синтаксиса программного кода.

Виды статического тестирования:

2. Динамическое тестирование

Динамическое тестирование – тип тестирования, который предполагает запуск программного кода. Таким образом, анализируется поведение программы во время ее работы.

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

Динамическое тестирование является частью процесса валидации программного обеспечения.

Кроме того, динамическое тестирование может включать разные подвиды, каждый из которых зависит от:

Источник

Статическое тестирование или спасти рядового Райана

Релиз часто подкрадывается незаметно. И любая ошибка, внезапно обнаруженная перед ним, грозит нам сдвигом сроков, хотфиксами, работой до утра и потраченными нервами. Когда подобный аврал стал происходить систематически, мы поняли, что так больше жить нельзя. Было решено разработать систему всесторонней валидации, чтобы спасти рядового Райана разработчика Артёма, который перед релизом уходил домой в 9 вечера, или в 10, или в 11… ну вы поняли. Идея была в том, чтобы разработчик узнавал об ошибке, пока изменения еще не попали в репозиторий, а он сам не потерял контекста задачи.

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

С чего всё начиналось

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

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

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

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

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

Наши усилия можно разделить на три направления:

Много требований — одна система

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

Путём проб и ошибок мы пришли к одной системе, каждый тест в которой может учитывать контекст запуска и решать запускаться ему или нет, что именно и как проверять. У запуска тестов мы выделили три основных свойства:

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

Система статических тестов

Ядро системы и основной набор статических тестов реализованы на python. Основу составляет всего лишь несколько сущностей:

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

Контекст тестирования — обширное понятие. В нём хранятся как параметры сборки и запуска, о которых мы говорили выше, так и мета-информация, которую заполняют и используют тесты.

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

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

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

Следующая проблема — зависимость одних тестов от других: нельзя выполнить проверку рыбки перед нахождением всех текстур и моделей. Поэтому мы разделили всё выполнение на две стадии:

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

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

Распространение на проекты

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

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

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

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

Собранные грабли

Хоть сам python и кроссплатформенный, но у нас регулярно возникали проблемы с тем, что у пользователей своя уникальная среда, в которой может стоять не та версия, что мы ожидаем, несколько версий, либо вообще отсутствовать интерпретатор. Как итог — работает не так, как мы того ожидаем либо не работает вовсе. Было несколько итераций решения этой проблемы:

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

Заключение

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

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

Источник

Статическое Тестирование

Что такое статическое тестирование?

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

Статическое тестирование помогает находить ошибки, которые не могут быть обнаружены динамическим тестированием.

Два основных типа методов статического тестирования:

В этом уроке вы узнаете

Что такое тестирование?

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

Отзывы могут быть разделены на четыре части:

В процессе проверки участвуют четыре типа участников, которые принимают участие в тестировании:

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

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

Почему статическое тестирование?

Статическое тестирование проводится по следующим причинам

Что проверено в статическом тестировании

В статическом тестировании проверяются следующие вещи

Как проводится статическое тестирование

Чтобы выполнить статическое тестирование, это делается следующими способами:

Различные действия для выполнения статического тестирования:

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

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

Инструменты, используемые для статического тестирования

Различные инструменты, используемые для статического тестирования, следующие,

Советы по успешному процессу статического тестирования

Несколько полезных советов для выполнения статического процесса тестирования в Software Engineering.

Резюме:

Источник

Статическое и динамическое тестирование

По критерию запуска программы (исполняется ли программный код) выделяют еще два типа тестирования: статическое и динамическое.

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

1. Статическое тестирование

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

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

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

Даже статическое тестирование может быть автоматизировано, например, можно использовать автоматические средства проверки синтаксиса программного кода.

Виды статического тестирования:

2. Динамическое тестирование

Динамическое тестирование – тип тестирования, который предполагает запуск программного кода. Таким образом, анализируется поведение программы во время ее работы.

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

Динамическое тестирование является частью процесса валидации программного обеспечения.

Кроме того, динамическое тестирование может включать разные подвиды, каждый из которых зависит от:

Источник

Статическое Тестирование

Что такое статическое тестирование?

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

Статическое тестирование помогает находить ошибки, которые не могут быть обнаружены динамическим тестированием.

Два основных типа методов статического тестирования:

В этом уроке вы узнаете

Что такое тестирование?

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

Отзывы могут быть разделены на четыре части:

В процессе проверки участвуют четыре типа участников, которые принимают участие в тестировании:

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

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

Почему статическое тестирование?

Статическое тестирование проводится по следующим причинам

Что проверено в статическом тестировании

В статическом тестировании проверяются следующие вещи

Как проводится статическое тестирование

Чтобы выполнить статическое тестирование, это делается следующими способами:

Различные действия для выполнения статического тестирования:

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

Что такое статистическое тестирование. Смотреть фото Что такое статистическое тестирование. Смотреть картинку Что такое статистическое тестирование. Картинка про Что такое статистическое тестирование. Фото Что такое статистическое тестирование

Инструменты, используемые для статического тестирования

Различные инструменты, используемые для статического тестирования, следующие,

Советы по успешному процессу статического тестирования

Несколько полезных советов для выполнения статического процесса тестирования в Software Engineering.

Резюме:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *