Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Ручное тестирование
Наиболее распространенным способом разработки тестов является создание тестового кода вручную. Такой способ создания тестов является наиболее гибким, однако производительность тестировщиков при создании тестового кода соизмерима с производительностью разработчиков при создании кода продукта, а объемы тестового кода часто бывают в 1-10 раз больше объема самого продукта.
В этом случае запуск тестов осуществляется вручную. Проверку, прошла ли тестируемая система испытания на заданном тестовом случае, тестировщик также осуществляет вручную, сравнивая фактические результаты журнала теста c ожидаемыми результатами, описанными в спецификации тестового случая.
Функции dll-библиотеки обеспечивают обращение к серверу для получения информации о состоянии элементов комплекса и возвращают серверу информацию о функционировании системы. Значит, для моделирования состояния окружения ( входных данных ) необходимо создать специальный сервер.
Кроме того, необходимо сохранять получаемую от сервера информацию о функционировании системы ( выходные данные ) в журнале (рис. 5.1).
При разработке тестов был использован следующий подход:
- состояние окружения задается в тесте (входные данные);
- в тесте создается сервер:
- сервер по запросу от dll передает информацию о заданном состоянии окружения;
- сервер получает от dll информацию о функционировании системы;
- получаемая информация сохраняется в журнале теста.
Подробное описание тестового случая №1
Ознакомление с настоящим пунктом полезно предварить изучением п. 7, содержащего описание ручного тестирования. Здесь рассматривается та часть теста на C#, которую вам придется написать самостоятельно при выполнении заданий. Приведенный пример был разработан в соответствии со спецификацией тестового случая N1. Для простоты будем считать, что события происходят последовательно в строго заданном порядке. Реально наша система представляет собой многопоточное приложение, поэтому мы не можем это гарантировать.
class Test1:Test { override public void start() {//Задаем состояние окружения (входные данные) StoreStat="32"; //Поступил подшипник RollerPar="0 NewUser Depot1 123456 1 12 1 1"; //статус обмена с терминалом подшипника (0 - есть подшипник) //и его параметры AxlePar="1 NewUser Depot1 123456 1 0 12 12"; //статус обмена с терминалом оси (1 - нет оси) и ее параметры CommandStatus="0"; //команда успешно принята StoreMessage="1"; //успешно выполнена //Получаем информацию о функционировании системы wait("GetStoreStat"); //опрос статуса склада wait("GetRollerPar"); //Получение информации о подшипнике с терминала подшипника wait("GetAxlePar"); //Получение информации об оси с терминала оси wait("SendStoreCom"); //добавление в очередь команд склада на первое место //команды GetR (получить из приемника в ячейку) wait("GetStoreMessage"); //Получение сообщения от склада о результатах выполнения команды //В результате первый подшипник должен быть принят wait("GetStoreStat"); //опрос статуса склада wait("GetRollerPar"); //Получение информации о подшипнике с терминала подшипника wait("GetAxlePar"); //Получение информации об оси с терминала оси wait("SendStoreCom"); //добавление в очередь команд склада на первое место //команды GetR (получить из приемника в ячейку) wait("GetStoreMessage"); //Получение сообщения от склада о результатах выполнения //команды. В результате второй подшипник должен быть принят //Задаем новое состояние окружения (входные данные) RollerPar="1 NewUser Depot1 123456 1 12 1 1"; //статус обмена с терминалом подшипника (1 - нет подшипника) //и его параметры AxlePar="0 NewUser Depot1 123456 1 0 12 12"; //статус обмена с терминалом оси (0 - есть ось) и ее параметры //Получаем информацию о функционировании системы wait("GetStoreStat"); //опрос статуса склада wait("GetRollerPar"); //Получение информации о подшипнике с терминала подшипника wait("GetAxlePar"); //Получение информации об оси с терминала оси wait("SendStoreCom");//Добавление в очередь команд склада на последнее место //команды SendR (ячейку на выход) wait("GetStoreMessage"); //Получение сообщения от склада о результатах выполнения //команды //В результате первый подшипник для оси должен быть выдан wait("SendStoreCom"); //Добавление в очередь команд склада на последнее место //команды SendR (ячейку на выход) wait("GetStoreMessage"); //Получение сообщения от склада о результатах выполнения //команды. //В результате второй подшипник для оси должен быть выдан wait("SendStoreCom"); //Добавление в очередь команд склада на последнее место //команды Term (завершение команд выдачи) wait("GetStoreMessage"); //Получение сообщения от склада о результатах выполнения //команды finish(); } }Пример 5.1. Пример фрагмента теста (вариант 1)
При разработке тестов не обязательно дожидаться каждого события, которое должно происходить в соответствии со случаем использования. Достаточно вызвать wait для событий, после наступления которых надо менять состояние окружения. В период ожидания наступления события, заданного в wait, может происходить любое количество других событий. Все эти события будут занесены в журнал. При необходимости ждать не первого, а n-го вызова можно вызывать wait с одним и тем же параметром n раз (например, в цикле). При таком подходе тест будет гораздо короче, например приведенный выше тест будет выглядеть следующим образом:
class Test1:Test { override public void start() { StoreStat="32";//Пришел подшипник RollerPar="0 NewUser Depot1 123456 1 12 1 1";//его параметры AxlePar="1 NewUser Depot1 123456 1 0 12 12";//нет оси CommandStatus="0";//команда успешно принята StoreMessage="1";//команда успешно выполнена wait("SendStoreCom");//первый подшипник принят wait("SendStoreCom");//второй подшипник принят RollerPar="1 NewUser Depot1 123456 1 12 1 1"; //больше нет подшипников AxlePar="0 NewUser Depot1 123456 1 0 12 12";//есть ось wait("SendStoreCom");//выдача подшипника wait("SendStoreCom");//выдача подшипника wait("SendStoreCom");//завершение выдачи finish();} }Пример 5.2. Пример фрагмента теста (вариант 2)