методические указания к практикуму по мдк 01.02 по специальности 09.05. Методические указания к выполнению лабораторных работ (1). Правила выполнения и проведения практических занятий 5 Критерии оценки практических занятий 5
![]()
|
Выполнение работы: В качестве основы для выполнения данной лабораторной работы предлагается использовать одно из ранее разработанных ими приложений. Предметная область и сфера применения. Правильное определение этих аспектов является основой для разработки UI в частности и всего приложения в целом. Определение целевой аудитории, направлен на выделение из общей массы группы (или групп) потенциальных пользователей разрабатываемой программы. Естественно, что цели, задачи, способности и возможности групп пользователей будут существенно различаться. Модель пользователя, или профиль, формируется в результате анализа целевых групп. Она отражает наиболее общие черты, характерные для представителей группы и может представлять следующую информацию о пользователе: Социальные и демографические характеристики (возраст, пол, основной язык, род занятий, потребности, привычки и т.п.). Уровень компьютерной грамотности. Цель и задачи, решаемые пользователем. Окружение (рабочее место, конфигурация оборудования, используемая операционная система и т.п.) Требования, специфичные для конкретной целевой группы. После выделения одного или нескольких основных профилей пользователей и определения задач, стоящих перед ними, переходят к следующему этапу проектирования. Он связан с составлением пользовательских сценариев. Сценарий — это описание действий, выполняемых пользователем в рамках решения конкретной задачи на пути достижения его цели. Очевидно, что достигнуть некоторой цели можно, решая ряд задач. Каждую их них пользователь может решать несколькими способами, следовательно, должно быть сформировано несколько сценариев. Чем больше их будет, тем ниже вероятность того, что некоторые ключевые объекты и операции будут упущены. Требования к отчету: Текст должен быть написан шрифтом Times New Roman, 12. Интервал между строками и абзацами – 1,5. Отступ слева 1,5. Ориентация текста – по ширине страницы. Скриншоты необходимо подписать. Название практической работы, цель работы, ход работы, вывод, ответы на контрольные вопросы, должны быть выделены жирным шрифтом, так же как в методичке. Контрольные вопросы: Что такое интерфейс? Какие типы пользовательских интерфейсов существуют? Перечислите этапы разработки пользовательских интерфейсов? К какому типу интерфейсов будет относиться интерфейс, разработанный в данной лабораторной работе? Какие модели интерфейсов существуют? Какая модель интерфейса будет использована в данной работе? Что такое диалог? Какие типы диалогов существуют? Какие формы диалога Вы знаете? Какой тип диалога и какая форма диалога будет использована в данной работе? Лабораторная работа № 13. Разработка тестовых модулей проекта для тестирования отдельных модулей Цель занятия: Ознакомление с видами оптимизации программы, оптимизация индивидуального модуля по выбранному параметру (время выполнения, объем памяти). Оборудование, технические и программные средства: персональный компьютер, среда программирования Visual Studio 2019. Продолжительность занятия:2 часа. Задание: Разработать тестовые модулей проекта для тестирования отдельных модулей, провести оптимизацию программы по выбранному параметру. Теоретические сведения: Оптимизация – преобразование программы, сохраняющее ее семантику (конструкции языка программирования), но уменьшающие ее размер и время выполнения. Виды оптимизация программы: глобальная (всей программы); локальная (нескольких соседних операторов, образующих линейный участок); квазилокальная (фрагментов программы фиксированной структуры, например, циклов). Способы оптимизации: 1. Разгрузка участков повторяемости: вынесение вычислений из многократно проходимых исполняемых участков программы на участки программы, редко проходимые. Таким образом, это преобразование тела цикла или рекурсивных процедур. 2. Упрощение действий: улучшение программы за счет замены групп вычислений на группу вычислений, дающих тот же результат с точки зрения всей программы, но имеющих меньшую сложность. а) упрощение действий происходит при замене сложных операций в выражениях более простыми: x / 0.4 -> x*0.25; б) преобразование по объединению или расчленению циклов, по перестановке заголовков циклов, по удалению избыточных выражений (замене их на переменную). 3. Реализация действия: действия над константами заменяются на константы; ликвидация константных распознавателей -замена условного оператора на одну из его ветвей, если его выбирающее условие-выражение имеет постоянное значение; удаление из программы ненужных пересылок вида: Y=F(W), X=Y на X=F(W) 4. Чистка программы (удаление ненужных конструкций): недостижимых операторов, существенных операторов, неиспользуемых переменных, видов, операций. 5. Сокращение размера программы: вынесение одинаковых конструкций в начальную или конечную точку программы; поиск в программе похожих объектов и формирование их в виде процедуры. 6. Экономия памяти -уменьшение объема памяти, отводимые под информационные объекты программы (например, параметры процедуры). Выполнение работы: 1. Для индивидуального модуля выбрать параметр оптимизации и определить его количественные характеристики. 2. Провести оптимизацию программы по выбранному параметру. 3. Сравнить характеристики исходного модуля и модуля, полученного в результате оптимизации. 4. Оформить отчет, содержащий описание, обоснование и результаты оптимизации программы. Требования к отчету: Текст должен быть написан шрифтом Times New Roman, 12. Интервал между строками и абзацами – 1,5. Отступ слева 1,5. Ориентация текста – по ширине страницы. Скриншоты необходимо подписать. Название практической работы, цель работы, ход работы, вывод, ответы на контрольные вопросы, должны быть выделены жирным шрифтом, так же как в методичке. Контрольные вопросы: 1. Почему необходимо проводить оптимизацию, а не минимизацию программы? 2. От чего зависит выбор метода оптимизации? 3. Почему большое внимание уделяется циклическим участкам? 4. К каким нежелательным последствиям может привести оптимизация? Лабораторная работа № 14. Выполнение функционального тестирования Цель занятия: описать набор тестовых сценариев для верификации ПО. Оптимизировать тестовый набор. Научиться составлять спецификацию для разработки тестов. Оборудование, технические и программные средства: персональный компьютер, среда программирования Visual Studio 2019. Продолжительность занятия:2 часа. Задание: 1) Ознакомиться с лекционным материалом по теме «Тестирование, отладка и ПО» 2) Провести функциональное тестирование разработанного программного обеспечения Теоретические сведения: Процесс тестирования состоит из трёх этапов: 1. Проектирование тестов. 2. Исполнение тестов. 3. Анализ полученных результатов. На первом этапе решается вопрос о выборе некоторого подмножества множества тестов, которое сможет найти наибольшее количество ошибок за наименьший промежуток времени. На этапе исполнения тестов проводят, запуск тестов и отлавливают ошибки в тестируемом программном продукте. Виды тестов Функциональные тесты составляются на уровне спецификации, до решения задачи. Будущий алгоритм рассматривается как «черный ящик» - функция с неизвестной (или не рассматриваемой) структурой, преобразующая входы в выходы. Суть функциональных тестов: каким бы способом ни решалась задача, при заданных входных значениях должны получиться соответствующие выходные значения. Структурные тесты составляются для проверки логики решения, или логики работы уже готового алгоритма. Логика определяется последовательностью операций, их условным выполнением или повторением (т.е. композицией базовых конструкций). Совокупность структурных тестов должна обеспечить проверку каждой из таких конструкций. Чаще всего совокупность тщательно составленных функциональных тестов покрывает множество структурных тестов. Приведенные понятия различаются тем, что первое рассматривает программу только с точки зрения входов и выходов, тогда как второе относится к ее структуре; но оба понятия не касаются процесса организации тестирования. Общая последовательность разработки тестов Наиболее рациональная процедура заключается в том, что сначала разрабатываются функциональные тесты, а затем – структурные. Функциональное тестирование (тестирование «черного ящика») При функциональном тестировании выявляются следующие категории ошибок: некорректность или отсутствие функций; ошибки интерфейса; ошибки в структурах данных; ошибки машинных характеристик (нехватка памяти и др.); ошибки инициализации и завершения. Техника тестирования ориентирована: на сокращение необходимого количества тестовых вариантов; на выявление классов ошибок, а не отдельных ошибок. Способы функционального тестирования Разбиение на классы эквивалентности Это самый популярный способ. Его суть заключается в разделении области входных данных программы на классы эквивалентности и разработке для каждого класса одного тестового варианта. Класс эквивалентности – набор данных с общими свойствами, в силу чего при обработке любого набора данных этого класса задействуется один и тот же набор операторов . Классы эквивалентности определяются по спецификации программы. Тесты строятся в соответствии с классами эквивалентности, а именно: выбирается вариант исходных данных некоторого класса и определяются соответствующие выходные данные. Самыми общими классами эквивалентности являются классы допустимых и недопусти-мых (аномальных) исходных данных. Описание класса строится как комбинация условий, описывающих каждое входное данное. Условия допустимости или недопустимости данных задают возможные значения данных и могут описывать: некоторое конкретное значение; определяется один допустимый и два недопустимых класса эквивалентности: заданное значение, множество значений меньше заданного, множество значений больше заданного; диапазон значений; определяется один допустимый и два недопустимых класса эквивалентности: множество значений в границах диапазона; множество значений, выходящих за левую границу диапазона; множество значений, выходящих за правую границу диапазона; множество конкретных значений; определяется один допустимый и один недопустимый класс эквивалентности: заданное множество и множество значений, в него не входящих. Такие классы можно описать языком логики, например, языком исчисления предикатов. Описания более сложных условий и соответствующих классов (например, элементы массива должны находиться в некотором диапазоне и при этом массив не должен содержать нулевых элементов) могут быть построены на основании приведенных выше условий. В примере, приводимом в вопросе 2 темы 3, при построении тестов неформально использовался описанный метод. В методических целях были выделены только основные класс тестов. Кроме того, исходя из условия задачи, были выделены классы эквивалентности внутри класса правильных данных. Анализ граничных значений Этот способ построения тестов дополняет предыдущий. Также он предполагает анализ значений, лежащих на границе допустимых и недопустимых данных. Построение таких тестов часто диктуется интуицией. Основные правила построения тестов: если условие правильности данных задает диапазон, то строятся тесты для левой и правой границы диапазона; для значений чуть левее левой и чуть правее правой границы; если условие правильности данных задает дискретное множество значений, то строятся тесты для минимального и максимального значений; для значений чуть меньше минимума и чуть больше максимума; если используются структуры данных с переменными границами (массивы), то строятся тесты для минимального и максимального значения границ. Диаграммы причин-следствий Взаимосвязь классов эквивалентности и соответствующих им действий описывается формально в виде графа на основе автоматного подхода. Граф преобразуется в таблицу решений, столбцы которой в свою очередь преобразуются в тестовые варианты. Выполнение работы: 1) Разработать тестовые наборы для функционального тестирования. 2) Провести тестирование программы и представить результаты в виде таблицы. 3) Выработать рекомендации для корректировки тестируемой программы. 4) Представить отчет по лабораторной работе для защиты. Требования к отчету: Текст должен быть написан шрифтом Times New Roman, 12. Интервал между строками и абзацами – 1,5. Отступ слева 1,5. Ориентация текста – по ширине страницы. Скриншоты необходимо подписать. Название практической работы, цель работы, ход работы, вывод, ответы на контрольные вопросы, должны быть выделены жирным шрифтом, так же как в методичке. Контрольные вопросы: 1. Что такое тестирование ПС? 2. Чем тестирование отличается от отладки ПС? 3. Для чего проводится функциональное тестирование? 4. Каковы правила тестирования программы «как черного ящика»? 5. Как проводится тестирования программы по принципу «белого ящика»? 6. Как осуществляется сборка программы при модульно тестировании? Лабораторная работа № 15. Тестирование интеграции Цель занятия: Изучение назначения и задач интеграционного тестирования. Оборудование, технические и программные средства: персональный компьютер, среда программирования Visual Studio 2019. Продолжительность занятия:2 часа. Задание: Напишите план интеграционного тестирования в соответствии с рекомендациями. Исходя из количества описанных кластеров и заявленных для них тестовых примеров (последний пункт плана), создайте соответствующее количество юнит-тестов. Отладьте и запустите все юнит-тесты. При этом не требуется исправление ошибок в исходном коде, если таковые были обнаружены. Оцените результаты выполнения юнит-тестирования и сделайте соответствующие выводы. Теоретические сведения: Интеграционное тестирование — это тестирование программного обеспечения на корректность взаимодействия нескольких модулей, объединенных в единое целое. Несмотря на то, что результатом тестирования и верификации отдельных модулей, составляющих программную систему, является заключение о том, что эти модули являются внутренне непротиворечивыми и соответствуют требованиям, это не гарантирует их корректную совместную работу. Целью интеграционного тестирования является проверка соответствия проектируемых единиц функциональным, приёмным и требованиям надежности. Тестирование этих проектируемых единиц — объединения, множества или группа модулей — выполняются через их интерфейс, используя тестирование «чёрного ящика». Интеграционное тестирование называют еще тестированием архитектуры системы. Результаты выполнения интеграционных тестов – один из основных источников информации для процесса улучшения и уточнения архитектуры системы, межмодульных и межкомпонентных интерфейсов. Т.е. с интеграционные тесты проверяют корректность взаимодействия компонент системы. Интеграционное тестирование, как правило, представляет собой итеративный процесс, при котором проверяется функциональность все более и более увеличивающейся в размерах совокупности модулей. Модульное тестирование, или юнит-тестирование (англ. unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы. Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок. Интеграционные тесты должны проверять совместную работу отдельных модулей или наборов модулей, между которыми есть зависимости. При этом тесты должны проверить, правильно ли обрабатываются входные данные отдельных методов при вызове их при разных ситуациях и наборах исходных данных (функциональная сторона интеграционного тестирования) и проверить стабильность работы модуля при разных исходных данных (проверка на надежность работы модуля интеграционным тестированием). Существует несколько подходов к интеграционному тестированию: Снизу вверх. Сначала собираются и тестируются модули самих нижних уровней, а затем по возрастанию к вершине иерархии. Данный подход требует готовности всех собираемых модулей на всех уровнях системы. Сверху вниз. Данный подход предусматривает движение с высокоуровневых модулей, а затем направляется вниз. При этом используются заглушки для тех модулей, которые находятся ниже по уровню, но включение которых в тест еще не произошло. Большой взрыв. Все модули всех уровней собираются воедино, а затем тестируется. Данный метод экономит время, но требует тщательной проработки тест кейсов. Преимущество. Интеграционное тестирование позволяет имитировать действия пользователей и быстро получать подтверждение, что программный продукт успешно взаимодействует с другими системами. Такой подход гарантирует сразу несколько преимуществ: Предотвращение появления критичных ошибок в опытно-промышленной эксплуатации Снижение влияния человеческого фактора Экономия затрат на исправление дефектов Главной задачей интеграционного тестирования является поиск ошибок, связанных с взаимодействием модулей системы или нескольких систем. В результате все смежные системы и модули одной системы должны работать согласованно. Способы проведения интеграционного тестирования подбираются в зависимости от интеграционных решений. Выполнение работы: Разработайте класс, содержащий минимум 3 метода, один из которых соответствует вашему варианту: по заданным параметрам а и b вычислите параметр с.
Два других (остальных) метода должны передавать или получать значения из метода вашего варианта. Т.е. всеми тремя методами должно быть организовано взаимодействие. Создайте отдельный тестирующий класс (как для модульного тестирования), в котором опишите минимум 3 теста с различными параметрами, охватывающими различные неэквивалентные значения. Примечание: при интеграционном тестировании при одном вызове функции, тестируются все 3 метода. Разработайте тест-плана – руководства к действию для тестировщиков; Сформируйте тестовые данных и создайте тест-кейсов; Реализуйте сценарии для запуска тест-кейсов; Выполните тест-кейсы и исправьте ошибки; Повторите цикл тестирования до успешной интеграции. |