# Конфигурационное тестирование (Configuration testing)

Конфигурационное тестирование (Configuration testing) - специальный вид тестирования, направленный на проверку работы ПО при различных аппаратных и программных конфигурациях системы (заявленных платформах, поддерживаемых драйверах, при различных конфигурациях компьютеров и т. д.).

**Configuration =** performance + compatibility:

* performance аспект: определить оптимальную конфигурацию оборудования, обеспечивающую требуемые характеристики производительности и времени реакции тестируемой системы;
* compatibility аспект: проверить объект тестирования на совместимость с объявленным в спецификации оборудованием, операционными системами и программными продуктами третьих фирм;

**Уровни конфигурационного тестирования** для клиент-серверных приложений (для некоторых типов приложений может быть актуален только один):

* Серверный: Основной упор здесь делается на тестирование с целью определения оптимальной конфигурации оборудования, удовлетворяющего требуемым характеристикам качества (эффективность, портативность, удобство сопровождения, надежность). Тестируется взаимодействие выпускаемого ПО с окружением, в которое оно будет установлено:
  * Аппаратные средства (тип и количество процессоров, объем памяти, характеристики сети / сетевых адаптеров и т. д.);
  * Программные средства (ОС, драйвера и библиотеки, стороннее ПО, влияющее на работу приложения и т. д.);
* Клиентский: ПО тестируется с позиции его конечного пользователя и конфигурации его рабочей станции. На этом этапе будут протестированы следующие характеристики: удобство использования, функциональность. Для этого необходимо будет провести ряд тестов с различными конфигурациями рабочих станций:
  * Тип, версия и битность операционной системы (подобный вид тестирования называется кроссплатформенное тестирование);
  * Тип и версия Web браузера, в случае если тестируется Web приложение (подобный вид тестирования называется кросс-браузерное тестирование);
  * Тип и модель видеоадаптера (при тестировании игр это очень важно);
  * Работа приложения при различных разрешениях экрана;
  * Версии драйверов, библиотек и т. д. (для JAVA приложений версия JAVA машины очень важна, тоже можно сказать и для .NET приложений касательно версии .NET библиотеки);

**Prerequisites**:

* создать матрицу покрытия (Coverage Matrix, BCM - Basic Configuration Matrix - это таблица, в которую заносят все возможные конфигурации);
* провести приоритезацию конфигураций (на практике, скорее всего, все желаемые конфигурации проверить не получится);
* шаг за шагом, в соответствии с расставленными приоритетами, проверять каждую конфигурацию;

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

**Примечание**: в ISTQB вообще не говорится о таком виде тестирования как конфигурационное:\
“configuration testing: See portability testing.”\
**Тестирование переносимости** (Portability testing) - *тип тестирования, проводимого для оценки простоты переноса элемента тестирования из одних аппаратных средств или программной среды в другие, включая уровень его изменений, необходимых для выполнения в средах различных типов. (ГОСТ 56920).* Результаты тестирования, полученные в результате тестирования переносимости, помогают выяснить, насколько легко программный компонент из одной среды можно использовать в другой среде. Термин «среда» относится к переходу от одной операционной системы к другой, от одного браузера к другому или от одной версии базы данных к другой версии базы данных. Измерение переносимости - это усилия, необходимые для перемещения программного компонента из одной среды в другую. Одна единица измерения переносимости - это стоимость адаптации программного обеспечения к новой среде по сравнению со стоимостью повторной разработки программного обеспечения. Переносимость может включать в себя Installability, Adaptability, Replaceability, Compatibility or Coexistence, Interoperability, Localization.

**Portability vs. Compatibility**:

* Совместимость касается того, могут ли два или более компонента работать в одной и той же среде одновременно, не влияя отрицательно на поведение друг друга. Пример: можно сказать, что текстовый процессор и калькулятор, работающие в одной ОС, такой как Windows 10, совместимы друг с другом, поскольку запуск одного приложения не повлияет на поведение другого приложения;
* Переносимость касается перемещения компонента из одной среды в другую. Пример: игра, работающая в Windows XP, считается переносимой, если та же игра может быть запущена в Windows 7 без каких-либо изменений в ее поведении;
* Проще говоря, тестирование переносимости касается программного компонента в разных средах, в то время как тестирование совместимости касается тестирования разных приложений в одной среде;

Источники:

* [Configuration Testing Tutorial With Examples](https://www.softwaretestinghelp.com/what-is-configuration-testing/)
* [Portability Testing Guide With Practical Examples](https://www.softwaretestinghelp.com/what-is-portability-testing/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vladislaveremeev.gitbook.io/qa_bible/vidy-metody-urovni-testirovaniya/konfiguracionnoe-testirovanie-configuration-testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
