0
Услуги     Разработка и внедрение ПО и баз данных      Методы     Тестирование

Тестирование (системы качества)


Вопрос качества разрабатываемого программного обеспечения становиться все более актуальным, особенно если речь идет о продуктах, обеспечивающих выполнение основного бизнес-процесса компании, о фронт-офисных продуктах, которые используют клиенты, или о продуктах к надежности которых предъявляются повышенные требования.
Основная задача тестирования – проверка,с оответствует ли работа программы предъявляемым требованиям. По другому, выполняет ли программа то, что от нее ожидает заказчик.
Тестирование может начать еще на этапе согласования с заказчиком требований к програмному продукту. Чем раньше начнется тестировани и чем раньши будут выявлены ошибки тем дешевле обойдется их исправлени.
В зависимых от предъявляемых тербований к програмному обеспечению тестироватся могут сами требования, на полноту и непротиворечивость, крограмный код, на наличие ошибок, функционал системы, на соответствие требованиям и документация на полноту, соответствие требованиям и работе системы.
Можно выделить  пять уровней тестирования: модульное, интеграционное, системное, выходное и приемочное.
Модульное тестирование – этот этап тестирования является частью разработки. Проводится непосредственно разработчиками  и представляет собой проверку отдальных частей системы (модулей), отдлельных процедур или функций системы. На этом этапе производится проверка правильности работы функционала, организации данных каждого модуля, производится синтаксическая проверка программного кода, соответствие стандартам кодирования и производится технических обзор кода.
Интеграционное тестирование – в ходе этапа производится проверка совместной работы отдельных модулей, связь между модулями, корректность обмена данными, проверка функциональности, проверка промежуточных результатов работы модулей и проверка интерграции. Осущаствляется тестировщками. По результатам тестирования составлется отчет.
Системное тестирование – производится проверка программного продукта вцелом, проверка фунциональности, соответствования трбованиям, тестирование работы системы в граничных условиях, проверка документации. Если удается – производится целевое тестирвоание – проверка работы системы на целевой платформе. Выполняется тестироващиком после завершения интерграционного тестирования. По результатам тестов составляется отчет.
Выходное тестирование – производится на завершающем этапе разработки. Проверяется готовность системы к запуску в эксплуатацию. Производится конечное тестирование системы, проверка  подсистмы инсталяции (если такая система предусмотрена функцоналом), проверки документации пользователем. Может осуществляться проверка совместимости с предыдущими версиями, сторонним ПО и прочее. По редультатам тестирования составляется отчет, поторый предоставляется заказчику всесте с готовым программным продуктом.
По желанию заказчика может производиться приемочное тестирование. Обычно проводится, если програмное обеспечения будет поддерживать и обслуживать не огранизация-разработчик, а сторонняя обслуживающая организация.
Основными задачами тестирования обычно считают выявление программных ошибок и проверка соответствия работы системы техническим требованиям. Програмные ошибки деляться на функциональные недостатки, недостатки интерфейса, недостатки производительности, некорректная обработка ошибок, некорректная обработка входных данных, в частности, пограничных данных, ошибки вычисланий, ошибки управления потоком, ошибки «гонок», перегрузки, некорректная работа а аппаратным обеспечением.
Функциональные недостатки – ситуации, когда программа на выполняет одну или часть своих функций либо выполняет их не верно и не полностью. Функционал программы должен быть подробно описан в спецификации. Именно  на основании расхождения спецификации и фуктической работы системы принимается решение о функциональных недостатках программы.
Недостатки интерфейса могут быть выявлены в процессе работы с программным продуктом. Это можно сделать либо в результате эксплуатации готового программного обеспечения либо по средством создания прототипа, на котором производится проверка, уточнение и согласование требований. Создание прототипа является более предпочительнам, т.к. позволяет внести изменения в интерфейс и функционал программы до полного его завершения и ввода в эксплуатацию. Это может существенно удешевляет разработку и позволяет сделать программу более удобной для пользователей и более точно соответствующею выполняемым задачам.
Недостаточная производительность – может являться существенным недостатком, особенно если в спецификации на разработку указаны строгие требования к производительности.  Даже если четки требований нет, слишком медленная работа программы будет создавать у пользователей негативное впечатление и требует оптимизации.
Некорректная обработка ошибок – программа не должна аварийно завершать работу или продолжать работать не правильно при ошибочных действиях пользователя или не корректных входных данных. Все возникающие ошибки должны быть обратотаны, а пользователь должен получить корректное и понятно сообщение.
Некоррекная обработка граничных условий – часто бывает так, что программа хорошо работает на большом диапазоне входных данных. Однако, можеть оказать, что программа не верно обрабатывает какой-то специфичный набор входных данных. Такие ситуации должны быть рассмотрены и описаны аналитиком на этапе проектирования системы и проверены тестеровщиком при ее тестировании.
Ошибки вычисления – обычно носят математический характер. Могут быть связаны с неправильным выбором алгоритма расчета, не правильной формулой, недостаточной точностью вычислений, ощибкой округления и другими факторами.
Ошибки управления потоком и ошибки гонок - чаще всего связаны с не правильным проектирование системы. Типичны для многопользовательский распределенных систем. Возникают,если порядок выполнений определенных действий в системе не соответствует проэктируемому и ожидаемому результату. Являются очень сложными для тестирования и воспроизведения.
Перегрузки – могут быть связаны как с нехваткой системы резурсов для работы программы, например памяти, мощности процессора, мест на диске, так и со слишком большой нагрузкой на программу – большое число одновременно работающих пользователей, слишком большой объем обрабатываемых данных и т.д. Работы программы в таких ситуация должна быть продуманна заранее и описани в требованиях к программному обеспечению.
Некорректная работа с  аппаратным обеспечением – могут возникать, если программа пытается использовать некорректно работающее устройство, либо устройство, на работу с которым программа не расчитана. Такие ситуации должны корректно обрабатываться и не приводить к сбоям или зависания программы. Ошибка, наиболее характерна для компьютерных игр.
Помимо тестирования самого програмного продукта производится тестирование документации. Документация тестируется на соответствие тербования, полноту, понятность для пользователя и точность соответствия разрабатываемому програмному обеспечению. Часто бывает так, что в процессе разработки было принято решение изменить, добавить или удалить часть функционала или, например, был изменен интерфейс. По завершении проекта необходимо убедиться что окончательная версия документации точно соответствует окончательной версии програмного обеспечения. В противном случае, внести соответствующие изменения.