Можно выделить следующие основные модули компьютерных тестовых программ
Учебный процесс принято рассматривать как распределенный во времени процесс формирования требуемых знаний. Управлять и корректировать процесс можно лишь на основании данных контроля над его течением. Выделяют следующие основные этапы контроля знаний:
- текущий контроль. Осуществляется в ходе обучения и позволяет определить уровень усвоения студентом отдельных разделов учебного материала, а затем на этой основе скорректировать дальнейшее изучение предмета; - итоговый контроль. Позволяет оценить знания, умения и навыки по курсу в целом.Формы контроля, применяемые преподавателями, очень разнообразны, но наиболее часто используются письменный или устный опросы. Недостатком устного опроса является относительно большая затрата времени при небольшом количестве выставляемых за занятие оценок, при проведении письменных работ количество оценок возрастает, но много времени уходит на проверку.
Наиболее популярной формой контроля знаний в последнее время становится компьютерный экспресс-контроль с использованием следующих известных программ. Айрен – это бесплатная программа, позволяющая создавать тесты для проверки знаний и проводить тестирование в локальной сети, через интернет или на одиночных компьютерах. TestTurn – это бесплатная программа для проведения тестирования от VeralSoft. Основные возможности: многопользовательский режим работы, хранение и возможность печати подробных протоколов выполнения теста, выставление оценки за тест с применением различных профилей оценок, администратор программы может управлять пользователями, тестами, просматривать результаты тестирования всех пользователей, изменять настройки программы. Усовершенствованный профессиональный пакет программ для разработки и проведения тестов VeralTest является платным. MyTestXPro – это система программ для создания и проведения компьютерного тестирования знаний, сбора и анализа результатов. С помощью программы MyTestXPro возможна организация и проведение тестирования, экзаменов в любых образовательных учреждениях (вузы, колледжи, школы) как с целью выявить уровень знаний по любым учебным дисциплинам, так и с обучающими целями.
Кафедрой инженерной графики БГУИР были рассмотрены и проанализированы и другие схожие программные продукты на предмет применения их для оценки знаний студентов. В ходе проведения оценки эффективности имеющегося на рынке программного обеспечения для контроля знаний было установлено, что ни один из рассмотренных программных продуктов не удовлетворяет нашим требованиям. Большинство программ не позволяют работать с графическими файлами в полной мере, например менять масштаб картинки во время тестирования, если изображение графической части достаточно сложное или насыщенно мелкими фрагментами. Также подвергается большому сомнению безопасность подобных систем, не говоря уже о том, что некоторые вообще не имеют какой-либо защиты от взлома. Часть из рассмотренных систем контроля имеет весьма запутанный интерфейс, когда просто не знаешь «А что надо делать дальше?». Такие системы требуют дополнительного времени на их изучение за счёт учебных часов. Далее, не все программы поддерживают дифференцированную систему оценки, т.е. когда правильные ответы на вопросы большей сложности имеют больший вес при выставлении финальной оценки, и наоборот. Кроме того, хотелось бы иметь древовидную структуру тестов, которые можно относить к общим темам, а темы к одному разделу. Нами был сделан вывод, что программ, в полной мере обеспечивающих все необ-ходимые требования к экспресс-контролю знаний студентов по инженерной графике нет. А имеющееся программное обеспечение подходит лишь частично в большей или меньшей степени, что заставляет подстраиваться под эти программы. В связи с этим было решено разработать свое собственную программное обеспечение.
В условиях работы по новым стандартам (БГУИР в 2013 году перешел на 4-летнее обучение), когда существенно уменьшилось количество учебных часов, отпущенных на освоение дисциплин кафедры инженерной графики, было решено, что наиболее целесообразно проводить экспресс-контроль знаний в форме компьютерного тес-тирования, которое позволяет достаточно точно оценить знания студента за малый временной промежуток по всем темам предмета. Как известно тестирование в учебном заведении выполняет три основные взаимо-связанные функции: диагностическую, обучающую и воспитательную:
Большое значение в образовательном процессе имеет контроль качества получаемых учеником знаний и умений. Важность функции контроля в процессе обучения не ограничивается только лишь простой оценкой факта знания, но также помогает управлять учебным процессом с точки зрения возможности его оценки и корректировки.
Вложение | Размер |
---|---|
ispolzovanie_kompyuternyh_tehnologiy_dlya_otsenki_urovnya_znaniy_uchashchihsya.docx | 26.23 КБ |
Предварительный просмотр:
Использование компьютерных технологий для оценки
уровня знаний учащихся
1.1 Виды проверки знаний, используемые в образовательном процессе
Большое значение в образовательном процессе имеет контроль качества получаемых учеником знаний и умений. Важность функции контроля в процессе обучения не ограничивается только лишь простой оценкой факта знания, но также помогает управлять учебным процессом с точки зрения возможности его оценки и корректировки.
Выделяют несколько видов контроля знаний:
традиционный контроль. Наиболее часто используемая форма контроля в современных образовательных учреждениях. В этом случае, для оценивания уровня знаний обучающихся применяются такие формы контроля как самостоятельные, курсовые и контрольные работы.
В последнее десятилетие четко прослеживается переход от традиционных форм контроля знаний к компьютерной их оценке. Эффективность применения компьютеров для этих задач в значительной мере зависит от особенностей изучаемого предмета и целей обучения. Коме того, важно понимать насколько уместно использование компьютерной проверки знаний для каждой конкретной дисциплины.
С точки зрения использования компьютера как инструмента контроля знаний акцент делается на педагогическое тестирование – совокупность педагогических и организационных мероприятий, обеспечивающих разработку педагогических тестов, подготовку и проведение стандартизованной процедуры измерения уровня подготовленности испытуемых, а также обработку и анализ результатов. [1]
При создании педагогических тестов необходимо учитывать, что задания должны быть составлены таким образом, чтобы это позволило проверить степень освоения учащимся знаний. Можно выделить несколько уровней владения материалом:
- знание основных понятий и определений по изучаемой теме;
- возможность применять полученные знания при решении стандартных задач;
- способность к анализу нестандартных проблем;
- умение обобщать изученный материал и находить связь с уже имеющимися данными.
Как правило, тестирование является одним из наиболее популярных инструментов оценки уровня образования с использованием компьютерных технологий. Основной задачей компьютерного тестирования является выявление несоответствия знаний учащихся определенному образовательному стандарту. Главная цель тестирования - обнаружение несоответствия этих моделей, оценка уровня их несоответствия в количественной форме. Такая форма контроля подразумевает использование заранее подготовленного набора тестовых заданий. Таким образом, применение компьютерного контроля знаний позволяет не только добиться простоты и легкости в оценке степени подготовленности учеников, но и является основой для получения объективной и независимой характеристики уровня учебных достижений.
1.2. Основные свойства компьютерных тестов
При создании программ для проверки знаний с помощью компьютерного технологий необходимо обозначить ряд свойств, которыми должен обладать современный программный комплекс тестирования:
- универсальность. Под универсальностью имеется ввиду возможность абстрагирования от теоретического содержания, уровня сложности, типа задаваемых вопросов, особенностей контента и т.д. Такого рода универсальность комплексов тестирования позволяет учителю с легкостью создавать разнообразные тестовые задания без обращения к услугам специалистов. Постепенно освоившись в системе, преподаватель может без труда наполнять ее содержательную часть по различным дисциплинам на основе общих принципов;
- модульность. Это свойство обеспечивается наличием в системе определенных взаимосвязанных блоков для создания тестовых заданий. Можно выделить следующие основные модули: проектирование тестов, проверка и хранение результатов, проведения тестирования;
- централизованность. Под этим свойством подразумевается то, что все данные, которые обеспечивают работу программы хранятся централизованно ну удаленном сервере;
- защищенность. Работа программы должна быть построена таким образом, чтобы мог осуществляться контроль прав пользователей. В основном эта функция системы необходима для предотвращения доступа учащихся к верным ответам теста;
- адаптивность. Программа для создания компьютерных тестов должна иметь возможность использоваться в условиях различных моделей диагностики знаний;
- возможность автоматической обработки результатов тестов.
Кроме того, необходимо отметить ряд важных особенностей компьютерных программ по созданию тестов, которые могут значительно облегчить, как и само проектирование заданий, так и непосредственное тестирование:
1.3. Обзор возможностей программ для создания компьютерных тестов
Анализ существующих компьютерных программ, которые дают современному учителю создавать тесты, позволит пользователю выбрать нужный программный пакет, наиболее подходящий для конкретных учебных целей.
На настоящий момент имеется много тестирующих программ, которые содержат уже готовые вопросы для контроля. Однако их использование не всегда актуально, поскольку такие комплексы, очень часто, не учитывают специфику конкретной школы и конкретного класса.
С этой точки зрения, предпочтение отдается программам, которые позволяют конструировать свои собственные тесты. Существует большое множество таких конструкторов тестов. Рассмотрим основные из них.
MyTest это система программ, состоящая из программы тестирования учащихся, редактора тестов и журнала результатов.
MyTest имеет интуитивно понятный интерфейс, благодаря сему может с легкостью быть использована не только опытными пользователями, но и учениками. программа легка и удобна в использовании.
Другая программа Tester служит для создания контрольных тестов различного уровня сложности. Программа достаточно проста в использовании.
Master test. Программа включает в себя редактор тестовых заданий, саму программу для проведения контроля и просмотр результатов. Количество вопросов в Master test не ограничено, хотя, с другой стороны, количество вариантов ответа для одного задания не должно превышать шести. Тип заданий здесь также используется только один: выбор одного варианта ответа. К плюсам этой программы можно отнести возможность сопровождать вопросы изображениями и комментариями.
Также, для создания тестов могут быть использованы: PowerPoint и Flash редактор. В этих программах предусмотрены заранее подготовленные шаблоны, которые помогут учителю создать учебные тесты различного уровня сложности.
При подготовке тестов в программе PowerPoint имеется возможность добавлять в них всевозможные мультимедийные файлы (изображения, видео, аудио), а также оформить тест в более приятной для ученика форме.
Использование Flash редактора с целью создания тестов позволяет добавлять в них анимацию, что значительно облегчает восприятие информации.
В заключение отметим, что использование компьютерных программ позволяет избежать возможности списывания и подсказок, повысить объективность в оценке результата, усилить мотивацию и интерес учащихся.
Большое значение в образовательном процессе имеет контроль качества получаемых учеником знаний и умений. С точкии зрения использования компьютера как инструмента контроля знаний акцент делается на педагогическое тестирование – совокупность педагогических и организационных мероприятий, обеспечивающих разработку педагогических тестов, подготовку и проведение стандартизованной процедуры измерения уровня подготовленности испытуемых, а также обработку и анализ результатов
Просмотр содержимого документа
«Использование компьютерных технологий для оценки уровня знаний учащихся»
Использование компьютерных технологий для оценки уровня знаний учащихся
1.1 Виды проверки знаний, используемые в образовательном процессе
Большое значение в образовательном процессе имеет контроль качества получаемых учеником знаний и умений. Важность функции контроля в процессе обучения не ограничивается только лишь простой оценкой факта знания, но также помогает управлять учебным процессом с точки зрения возможности его оценки и корректировки.
Выделяют несколько видов контроля знаний:
традиционный контроль. Наиболее часто используемая форма контроля в современных образовательных учреждениях. В этом случае, для оценивания уровня знаний обучающихся применяются такие формы контроля как самостоятельные, курсовые и контрольные работы.
контроль с использованием не компьютерных средств. Для проведения подобной формы контроля преподаватели используют специальные бланки, в которых содержаться тестовые вопросы. Проверка осуществляется с использованием таблиц с правильными ответами или трафаретов.
удаленный контроль. Данный вид контроля качества обучения особенно интенсивно развивается в последнее время в связи с широким использованием сети Internetв школах. Главной особенностью удаленного контроля знаний является относительная свобода в выборе подходящего времени и места для прохождения тестирования.
В последнее десятилетие четко прослеживается переход от традиционных форм контроля знаний к компьютерной их оценке. Эффективность применения компьютеров для этих задач в значительной мере зависит от особенностей изучаемого предмета и целей обучения. Коме того, важно понимать насколько уместно использование компьютерной проверки знаний для каждой конкретной дисциплины.
С точки зрения использования компьютера как инструмента контроля знаний акцент делается на педагогическое тестирование – совокупность педагогических и организационных мероприятий, обеспечивающих разработку педагогических тестов, подготовку и проведение стандартизованной процедуры измерения уровня подготовленности испытуемых, а также обработку и анализ результатов. 1
При создании педагогических тестов необходимо учитывать, что задания должны быть составлены таким образом, чтобы это позволило проверить степень освоения учащимся знаний. Можно выделить несколько уровней владения материалом:
знание основных понятий и определений по изучаемой теме;
возможность применять полученные знания при решении стандартных задач;
способность к анализу нестандартных проблем;
умение обобщать изученный материал и находить связь с уже имеющимися данными.
Как правило, тестирование является одним из наиболее популярных инструментов оценки уровня образования с использованием компьютерных технологий.Основной задачей компьютерного тестирования является выявление несоответствия знаний учащихся определенному образовательному стандарту. Главная цель тестирования - обнаружение несоответствия этих моделей, оценка уровня их несоответствия в количественной форме. Такая форма контроля подразумевает использование заранее подготовленного набора тестовых заданий. Таким образом, применение компьютерного контроля знаний позволяет не только добиться простоты и легкости в оценке степени подготовленности учеников, но и является основой для получения объективной и независимой характеристики уровня учебных достижений.
1.2. Основные свойства компьютерных тестов
При создании программ для проверки знаний с помощью компьютерного технологий необходимо обозначить ряд свойств, которыми должен обладать современный программный комплекс тестирования:
универсальность. Под универсальностью имеется ввиду возможность абстрагирования от теоретического содержания, уровня сложности, типа задаваемых вопросов, особенностей контента и т.д. Такого рода универсальность комплексов тестирования позволяет учителю с легкостью создавать разнообразные тестовые задания без обращения к услугам специалистов. Постепенно освоившись в системе, преподаватель может без труда наполнять ее содержательную часть по различным дисциплинам на основе общих принципов;
модульность. Это свойство обеспечивается наличием в системе определенных взаимосвязанных блоков для создания тестовых заданий. Можно выделить следующие основные модули: проектирование тестов, проверка и хранение результатов, проведения тестирования;
централизованность. Под этим свойством подразумевается то, что все данные, которые обеспечивают работу программы хранятся централизованно ну удаленном сервере;
защищенность. Работа программы должна быть построена таким образом, чтобы мог осуществляться контроль прав пользователей. В основном эта функция системы необходима для предотвращения доступа учащихся к верным ответам теста;
адаптивность. Программа для создания компьютерных тестов должна иметь возможность использоваться в условиях различных моделей диагностики знаний;
возможность автоматической обработки результатов тестов.
Кроме того, необходимо отметить ряд важных особенностей компьютерных программ по созданию тестов, которые могут значительно облегчить, как и само проектирование заданий, так и непосредственное тестирование:
интерфейс программы должен быть интуитивно понятен как учителю, так и ученику;
легкость в создании тестовых заданий;
различные режимы работы при выполнении тестирования(локально независимый или сетевой);
статистическая обработка и сохранение результатов работы пользователей;
создание возможности отсроченного ответа на вопрос при тестировании;
1.3. Обзор возможностей программ для создания компьютерных тестов
Анализ существующих компьютерных программ, которые дают современному учителю создавать тесты, позволит пользователю выбрать нужный программный пакет, наиболее подходящий для конкретных учебных целей.
На настоящий момент имеется много тестирующих программ, которые содержат уже готовые вопросы для контроля. Однако их использование не всегда актуально, поскольку такие комплексы, очень часто, не учитывают специфику конкретной школы и конкретного класса.
С этой точки зрения, предпочтение отдается программам, которые позволяют конструировать свои собственные тесты. Существует большое множество таких конструкторов тестов. Рассмотрим основные из них.
MyTestэто система программ, состоящая изпрограммы тестирования учащихся, редактора тестов и журнала результатов.
MyTestимеет интуитивно понятный интерфейс, благодаря сему может с легкостью быть использована не только опытными пользователями, но и учениками. программа легка и удобна в использовании.
Программа позволяет создавать семь различных типов заданий:
выбор одного варианта ответа
выбор нескольких вариантов ответа
установление правильного порядка следования каких-либо фактов. Актуально использование таких видов теста при, например, при необходимости расположить в хронологическом порядке даты
ввод текста или числа
выбор места на изображении
Важной особенностью программы MyTestявляется возможность создания тестов, обеспечивающих не только контроль учащихся, но и их обучение. В этом случае ученик получает информацию о своих ошибках и правильных ответах.
Другая программаTesterслужит для создания контрольных тестов различного уровня сложности. Программа достаточно проста в использовании.
Mastertest. Программа включает в себя редактор тестовых заданий, саму программу для проведения контроля и просмотр результатов. Количество вопросов в Mastertestне ограничено, хотя, с другой стороны, количество вариантов ответа для одного задания не должно превышать шести. Тип заданий здесь также используется только один: выбор одного варианта ответа.К плюсам этой программы можно отнести возможность сопровождать вопросы изображениями и комментариями.
В программеMastertestвы можете обозначить время на прохождение одного теста и последовательность вывода вопросов на экран. По завершению тестирования автоматически открывается окно результатов.
Также, для создания тестов могут быть использованы: PowerPoint иFlash редактор. В этих программах предусмотрены заранее подготовленные шаблоны, которые помогут учителю создать учебные тесты различного уровня сложности.
При подготовке тестов в программе PowerPointимеется возможность добавлять в них всевозможные мультимедийные файлы (изображения, видео, аудио), а также оформить тест в более приятной для ученика форме.
Использование Flash редактора с целью создания тестов позволяет добавлять в них анимацию, что значительно облегчает восприятие информации.
1.4. Возможности использования компьютерного тестирования в оценке качества обучения
Случайный выбор параметров вопроса. Эта функция позволяет создавать вопросы индивидуально для каждого ученика. В этом случае суть остается одной и той же, меняется лишь содержание задачи. Например,случайным образом могут подбираться исходные данные.
Появление сетевой базы данных, которая обеспечивает хранение всех вопросов. В этом случае организуется коллективная среда, обеспечивающая доступ учителей к различным тестовым программам. С развитием средств коммуникации каждый заинтересованный педагог может участвовать в пополнении тестами этой единой базы. Таким образом, отпадает необходимость каждый раз создавать новые продукты.
Использование автоматической системы для регистрации и анализа оценки. Хранение информации о предыдущих оценках учеников создает возможность для подведения своего рода итогов. Таким образом, можно вовремя скорректировать учебный процесс. Автоматический анализ итога тестирования исключает влияние «человеческого» фактора в оценке результатов обучения.
Вопросы безопасности.При разработке компьютерных программ для тестирования, разработчики обычно предусматривают определенные средства защиты: доступ к базе данных с вопросами теста осуществляется по паролю, который обновляется по прошествии определенного промежутка времени.
Оценка психологического статуса ученика. С использование компьютерного тестирования позволяет не только оценить качество образования, но и диагностировать психологическое состояние ученика.
В заключение отметим, что использование компьютерных программ позволяет избежать возможности списывания и подсказок, повысить объективность в оценке результата, усилить мотивацию и интерес учащихся.
Большое значение в образовательном процессе имеет контроль качества получаемых учеником знаний и умений. Важность функции контроля в процессе обучения не ограничивается только лишь простой оценкой факта знания, но также помогает управлять учебным процессом с точки зрения возможности его оценки и корректировки.
Выделяют несколько видов контроля знаний:
традиционный контроль. Наиболее часто используемая форма контроля в современных образовательных учреждениях. В этом случае, для оценивания уровня знаний обучающихся применяются такие формы контроля как самостоятельные, курсовые и контрольные работы.
контроль с использованием не компьютерных средств. Для проведения подобной формы контроля преподаватели используют специальные бланки, в которых содержаться тестовые вопросы. Проверка осуществляется с использованием таблиц с правильными ответами или трафаретов.
удаленный контроль. Данный вид контроля качества обучения особенно интенсивно развивается в последнее время в связи с широким использованием сети Internet в школах. Главной особенностью удаленного контроля знаний является относительная свобода в выборе подходящего времени и места для прохождения тестирования.
В последнее десятилетие четко прослеживается переход от традиционных форм контроля знаний к компьютерной их оценке. Эффективность применения компьютеров для этих задач в значительной мере зависит от особенностей изучаемого предмета и целей обучения. Коме того, важно понимать насколько уместно использование компьютерной проверки знаний для каждой конкретной дисциплины.
С точки зрения использования компьютера как инструмента контроля знаний акцент делается на педагогическое тестирование – совокупность педагогических и организационных мероприятий, обеспечивающих разработку педагогических тестов, подготовку и проведение стандартизованной процедуры измерения уровня подготовленности испытуемых, а также обработку и анализ результатов.
При создании педагогических тестов необходимо учитывать, что задания должны быть составлены таким образом, чтобы это позволило проверить степень освоения учащимся знаний. Можно выделить несколько уровней владения материалом:
знание основных понятий и определений по изучаемой теме;
возможность применять полученные знания при решении стандартных задач;
способность к анализу нестандартных проблем;
умение обобщать изученный материал и находить связь с уже имеющимися данными.
Как правило, тестирование является одним из наиболее популярных инструментов оценки уровня образования с использованием компьютерных технологий.Основной задачей компьютерного тестирования является выявление несоответствия знаний учащихся определенному образовательному стандарту. Главная цель тестирования - обнаружение несоответствия этих моделей, оценка уровня их несоответствия в количественной форме. Такая форма контроля подразумевает использование заранее подготовленного набора тестовых заданий. Таким образом, применение компьютерного контроля знаний позволяет не только добиться простоты и легкости в оценке степени подготовленности учеников, но и является основой для получения объективной и независимой характеристики уровня учебных достижений.
Основные свойства компьютерных тестов
При создании программ для проверки знаний с помощью компьютерного технологий необходимо обозначить ряд свойств, которыми должен обладать современный программный комплекс тестирования:
универсальность. Под универсальностью имеется ввиду возможность абстрагирования от теоретического содержания, уровня сложности, типа задаваемых вопросов, особенностей контента и т.д. Такого рода универсальность комплексов тестирования позволяет учителю с легкостью создавать разнообразные тестовые задания без обращения к услугам специалистов. Постепенно освоившись в системе, преподаватель может без труда наполнять ее содержательную часть по различным дисциплинам на основе общих принципов;
модульность. Это свойство обеспечивается наличием в системе определенных взаимосвязанных блоков для создания тестовых заданий. Можно выделить следующие основные модули: проектирование тестов, проверка и хранение результатов, проведения тестирования;
централизованность. Под этим свойством подразумевается то, что все данные, которые обеспечивают работу программы хранятся централизованно ну удаленном сервере;
защищенность. Работа программы должна быть построена таким образом, чтобы мог осуществляться контроль прав пользователей. В основном эта функция системы необходима для предотвращения доступа учащихся к верным ответам теста;
адаптивность. Программа для создания компьютерных тестов должна иметь возможность использоваться в условиях различных моделей диагностики знаний;
возможность автоматической обработки результатов тестов.
Кроме того, необходимо отметить ряд важных особенностей компьютерных программ по созданию тестов, которые могут значительно облегчить, как и само проектирование заданий, так и непосредственное тестирование:
интерфейс программы должен быть интуитивно понятен как учителю, так и ученику;
легкость в создании тестовых заданий;
различные режимы работы при выполнении тестирования(локально независимый или сетевой);
Это не руководство, какие символы нужно ввести в редакторе кода, чтобы получились модульные тесты. Это — пища для ума, которую необходимо употребить до того, как предпринимать упомянутые действия.
Тема модульного тестирования не так проста, как может показаться. Многие из нас, разработчиков, приходят в модульное тестирование под давлением клиентов, сотрудников, коллег, своих кумиров и так далее. Мы быстро понимаем его ценность, и, закончив технические приготовления, забываем об общей картине, если вообще когда-либо её понимали. В этой статье я вкратце расскажу о том, чем является и чем не является модульное тестирование как в целом, так и в PHP, а заодно опишу, какое место занимает модульное тестирование в сфере QA.
Что такое тестирование?
Прежде чем углубляться в модульные тесты, нужно изучить теорию самого тестирования, чтобы не делать ошибок вроде той, что совершили авторы одного из самых популярных PHP-фреймворков: на своём сайте они показали интеграционные тесты и назвали их модульными. Нет, Laravel, это не модульные тесты. Хотя это не мешает мне всё ещё любить этот фреймворк.
Тестирование ПО определяется как «расследование, проведённое с целью предоставления заинтересованным сторонам информации о качестве продукта». Этому противопоставляется «тестирование ПО — это пустая трата бюджета проекта разработчиками, которые не делают ничего важного, а затем просят ещё времени и денег, потому что «ничего» может быть весьма дорогим». Тут ничего нового.
Вот моя краткая история становления тестирования:
- 1822 — Разностная машина (Difference engine) (Чарльз Бэббидж).
- 1843 — Аналитическая машина (Analytical engine) (Ада Лавлейс).
- 1878 — Эдисон вводит термин «баг».
- 1957 — Тестирование и отладка программ (Чарльз Бэйкер).
- 1958 — Первая команда тестирования ПО (Джеральд Вайнберг).
- 1968 — Кризис ПО (Фридрих Бауэр).
- 1970-е — Модель «водопад», реляционная модель, декомпозиция, критический анализ (Walkthrough), проектирование и инспектирование кода, качество и метрики, шаблоны проектирования.
- 1980-е — CRUD-анализ, архитектура системы, автотестирование, V-модель, надёжность, стоимость качества, способы использования, шаблоны ООП-проектирования.
- 1990-е — Scrum, usability-тестирование, MoSCoW, эвристическое тестирование, автоматизация ПО и тестирования.
- … — 1956 отладка
- 1957 — 1978 демонстрация
- 1979 — 1982 разрушение (destruction)
- 1983 — 1987 оценка
- 1988 — … предотвращение
Чем на самом деле является тестирование?
Есть разные классификации тестирования ПО. Чтобы лучше понимать место модульного тестирования, упомяну лишь о наиболее широкораспространённых подходах.
Тесты бывают: статические и динамические, «ящичные» (белый ящик, чёрный ящик, серый ящик), уровни и типы. В рамках каждого подхода используются разные критерии классификации.
Статическое и динамическое тестирование
Статическое тестирование проводится без исполнения кода. Сюда относится корректура, проверка, ревизия кода (при наблюдении за работой другого / парном программировании), критический анализ, инспекции и так далее.
Динамическое тестирование для получения корректных результатов требует исполнять код. Например, для модульных тестов, интеграционных, системных, приёмочных и прочих тестов. То есть тестирование проводится с использованием динамических данных, входных и выходных.
«Ящичный» подход
Согласно этому подходу, все тесты ПО делятся на три вида ящиков:
- Тестирование типа «белый ящик» проверяет внутренние структуры и модули, игнорирует ожидаемую функциональность для конечных пользователей. Это может быть тестирование API, внесение неисправностей (fault injection), модульное тестирование, интеграционное тестирование.
- Тестирование типа «чёрный ящик» больше интересуется тем, что делает ПО, а не как делает. Это означает, что тестировщики не обязаны ни разбираться в объекте тестирования, ни понимать, как он работает под капотом. Такой тип тестирования нацелен на конечных пользователей, их опыт взаимодействия с видимым интерфейсом. К «чёрным ящикам» относится тестирование на основе моделей, тестирование способов использования, таблицы переходов состояний, спецификационное тестирование и т. д.
- Тестирование типа «серый ящик» проектируется со знанием программных алгоритмов и структур данных (белый ящик), но выполняется на пользовательском уровне (чёрный ящик). Сюда относится регрессионное тестирование и шаблонное тестирование (pattern testing).
Уровни тестирования
Их количество варьируется, обычно, в диапазоне от 4 до 6, и все они полезны. Названия тоже бывают разные, в зависимости от принятой в компании культуры вы можете знать «интеграционные» тесты как «функциональные», «системные» тесты как «автоматизированные», и так далее. Для простоты я опишу 5 уровней:
- Модульное тестирование.
- Интеграционное тестирование.
- Тестирование интерфейсов компонентов.
- Системное тестирование.
- Эксплуатационное приёмочное тестирование.
Типы тестирования
Каждый тип тестирования, вне зависимости от его уровня, также может подразделяться на другие типы. Существует больше 20 общепринятых типов. Самые распространённые:
- Регрессионное тестирование.
- Приёмочное тестирование.
- Дымовое (smoke) тестирование.
- UAT
- Разрушительное (Destructive) тестирование.
- Тестирование производительности.
- Непрерывное тестирование.
- Usability-тестирование.
- Тестирование безопасности.
Теперь вы знаете, что модульные тесты являются динамическими, относятся к классу «белый ящик», выполняются на уровне модулей, представляют собой регрессионные тесты, но при этом под модульными тестами можно понимать многие разновидности тестов. Так что же такое на самом деле модульные тесты?
Что такое модульное тестирование?
V-модель — это графическое представление вышеупомянутых уровней, типов и их назначения в жизненном цикле разработки ПО.
И это справедливо. У модульных тестов масса достоинств. Они:
- Изолируют каждую часть программы и проверяют её корректность.
- Помогают рано обнаруживать проблемы.
- Заставляют разработчиков мыслить в рамках входных, выходных и ошибочных условий.
- Придают коду удобный для тестирования вид, облегчают будущий рефакторинг.
- Упрощают интегрирование рабочих (!) модулей.
- Частично заменяют техническую документацию.
- Заставляют отделять интерфейс от реализации.
- Доказывают, что код модуля работает так, как ожидалось (хотя бы математически).
- Могут использоваться как низкоуровневые наборы регрессионных тестов.
- Демонстрируют прогресс в незавершённой системной интеграции.
- Снижают стоимость исправления багов (с TDD — ещё больше).
- Позволяют улучшать архитектуру приложения с помощью определения ответственности модулей.
- Если вы можете это протестировать, то можете присоединить к своей системе.
- Модульное тестирование — это ВЕСЕЛО!
- Модульное тестирование не вылавливает ошибки интегрирования.
- Каждое булево выражение требует как минимум двух тестов, и количество быстро растёт.
- Модульные тесты столь же глючные, как и тестируемый ими код.
- Привязка тестов к паре конкретных фреймворков или библиотек может ограничить рабочий процесс.
- Большинство тестов пишется после завершения разработки. Печально. Используйте TDD!
- Возможно, после маленького рефакторинга система будет работать как прежде, но тесты будут сбоить.
- Вырастает стоимость разработки.
- Человеческая ошибка: комментирование сломанных тестов.
- Человеческая ошибка: добавление в код обходных путей специально для прохождения модульных тестов.
Я часто обсуждал с коллегами и клиентами, что такое хороший модульный тест. Он:
- Быстрый.
- Автоматизированный.
- Полностью управляет всеми своими зависимостями.
- Надёжен: может запускаться в любом порядке, вне зависимости от других тестов.
- Может запускаться только в памяти (никаких взаимодействий с БД, чтений/записей в файловой системе).
- Всегда возвращает один результат.
- Удобен для чтения и сопровождения.
- Не тестирует SUT-конфигурацию (system under test).
- Имеет чётко определённую ЕДИНСТВЕННУЮ ЗАДАЧУ.
- Хорошо именован (и достаточно понятно, чтобы избежать отладки только ради выяснения, что же сбоит).
Что нужно подвергать модульному тестированию?
В нормальных системах модульные тесты нужно писать для:
- Модулей — неделимых изолированных частей системы, которые выполняют какую-то одну задачу (функция, метод, класс).
- Публичных методов.
- Защищённых методов, но только в редких случаях и когда никто не видит.
- Багов и их исправлений.
Так что вы сами можете определять, что для вас является модулем. Или можете тестировать методы один за другим, упростив жизнь тому парню, что потом будет работать с кодом.
Если вы не проводите модульное тестирование, предлагаю заняться этим после возникновения следующего большого бага. Проверьте, с каким методом он будет связан, напишите сбойный тест с правильными аргументами и результатом, исправьте баг, снова запустите модульный тест. Если он будет пройден, то можете быть уверены, что этот баг пришлось исправлять в последний раз (с учётом ваших определённых входных сценариев).
Такой подход помогает легче понять модульное тестирование. Проанализируйте отдельно каждый метод. Поставщики данных могут помочь определить входные и выходные данные для любых сценариев, которые могут прийти вам в голову, поэтому что бы ни произошло, вы будете знать, чего ожидать.
Что НЕ нужно тестировать
Чуть сложнее определить, что тестировать не нужно. Я постарался собрать список элементов, которые не нужно подвергать модульному тестированию:
- Функциональность за пределами контекста (scope) модулей (!)
- Интеграция модулей с другими модулями (!)
- Неизолированное поведение (неимитируемые (unmockable) зависимости, настоящие БД, сеть)
- Приватные, защищённые методы.
- Статичные методы.
- Внешние библиотеки.
- Ваш фреймворк.
Как писать модульные тесты?
- Пишите код, пригодный для модульного тестирования, затем тестируйте его.
- Пишите код, пригодный для модульного тестирования, затем тестируйте его.
- Пишите код, пригодный для модульного тестирования, затем тестируйте его.
Но ответить на первый вопрос (как писать код, пригодный для модульного тестирования) гораздо легче, и вряд ли ситуация сильно изменится со временем:
- SOLID
- DRY
- Отсутствие новых ключевых слов в конструкторе.
- Отсутствие циклов в конструкторе (и переходов, если это оговаривается).
- Отсутствие статичных методов, параметров, классов.
- Отсутствие методов setup(): объекты должны быть полностью инициализированы после конструирования.
- Отсутствие синглтонов (глобального состояния) и прочих нетестируемых антипаттернов.
- Отсутствие всемогущих объектов (God objects).
- Отсутствие классов со смешанной функциональностью (mixed concern classes).
- Отсутствие скрытых зависимостей.
В заключение: модульные тесты очень важны как для разработчиков, так и для бизнеса. Их нужно писать, существуют отработанные методики, которые помогут вам легко покрыть модули тестами, в основном с помощью подготовки самих модулей. Но все эти методики не имеют смысла без знания теории тестирования, описанной в этой статье. Нужно уметь отличать модульные тесты от тестов других типов. И когда у вас в голове будет ясное понимание, то и писать тесты вам станет гораздо легче.
Читайте также: