Особенности автоматизации проверки задач по программированию

12 сентября 19:19

Features of automation of check of tasks on programming

03.05.2018
 

Выходные сведения:
Гаспарян А. В., Тимошина Н. В. Особенности автоматизации проверки задач по программированию // ИТпортал, 2018. №2 (18). URL: http://itportal.ru/science/tech/osobennosti-avtomatizatsii-proverki/

Авторы:
Гаспарян А. В. 1
1 магистрант физико-технологического института Федерального государственного бюджетного образовательного учреждения высшего образования Калужский Государственный Университет им. К. Э. Циолковского, e-mail: andranik.dev@gmail.com
Тимошина Н. В. 2
2 кандидат педагогических наук, доцент кафедры информатики и информационных технологий КГУ им К.Э. Циолковского.

Authors:
Gasparyan A. V. 1
1 undergraduate Physics and Technology Institute, management and law Federal state budget educational institution of higher professional education Kaluga State University named after K. E. Tsiolkovsky, e-mail: andranik.dev@gmail.com
Timoshina N. V. 2
2 Candidate of Pedagogic Sciences, Associate Professor at the Department of Computer Science and Information Kaluga State University named after K. E. Tsiolkovsky.

Ключевые слова:
тестирующая система, программирования, автоматизация проверки решений

Keyword:
testing system, programming, automation of decision verification

Аннотация: 
Данная статья рассматривает понятие автоматизированных тестирующих систем, которые широко распространены в различных отраслях, в то числе и в образовании. Более детально рассмотрены особенности автоматизации проверки задач по программированию. Дана характеристика задач программирования, их внутренняя структура, состав и компоненты.

Решениями задач в программирования являются программы, а задачи в представлены условием и набором тестов – входных и выходных файлов. Программе-решению на вход подается файл с исходными данными. На основе этих данных программа должна решить задачу и выдать результат в другой файл, который проверяется тестирующей системой. Для проверки, обычно, используется специальная программа-чекер, сравнивающая ответ программы-решения с эталонным ответом.

Программа-решение задачи не только должно выдать верный ответ на тест, но и решить задачу наиболее оптимально.

Критерии оптимальности решения задачи могут быть самыми разными: время выполнения программы, используемая память, объём исходного кода и т.д.

Исходя из того, что решением задачи в программировании является программа, встает вопрос безопасности тестирования программ: пользователи могут использовать возможности языков программирования для нанесения вреда системе тестирования, её взлома и т. д. В статье описаны меры безопасности, которые следует предпринимать при проверке решений в автоматизированном режиме, а также конкретные инструменты для создания безопасной среды выполнения решений пользователей.

Практически любое соревнование в области программирования не обходится без использования тестирующей системы, т.к. ручная проверка решений занимает большое количество времени, а отслеживание вышеописанных ограничений и вовсе становится невозможным.

Annotation: 
This article considers the concept of automated testing systems, which are widely distributed in various industries, including in education. More details are given to the automation of checking tasks on programming. The characteristics of programming problems, their internal structure, composition and components are given.

Solutions to problems in programming are programs, and tasks in are represented by a condition and a set of tests — input and output files. The program with the input data is supplied with the input data file. Based on this data, the program must solve the problem and output the result to another file, which is checked by the testing system. To check, usually, a special program-checker is used, which compares the response of the program-solution with the standard response.

The program-solution of the problem not only must give the correct answer to the test, but also solve the problem most optimally. Criteria for optimality of the solution of the problem can be very different: the execution time of the program, the memory used, the amount of source code, etc.

Proceeding from the fact that the solution of the problem in programming is the program, there arises the question of the security of testing programs: users can use the capabilities of programming languages to harm the testing system, hacking it, etc. The article describes the security measures that should be taken when verifying decisions in automated mode, as well as specific tools for creating a secure execution environment for user solutions.

Virtually any competition in programming can not do without the use of a testing system, because manual verification of decisions takes a lot of time, and monitoring of the above limitations is completely impossible.

Особенности автоматизации проверки задач по программированию

Введение

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

Одним из методов контроля знаний, позволяющим объективно измерить уровень подготовки специалиста, является тестирование.

Развитие компьютерных и инфокоммуникационных технологий затронуло практически все области жизни, включая и сферу образования. Теперь ни одно учреждение не может обойтись в своей работе без применения компьютеров, которые с успехом выполняют рутинную работу, повышая эффективность любой деятельности. Последние достижения в области информационных технологий привели к новым концепциям в учебном процессе: применяемые в учебной деятельности письменные тесты с успехом трансформируют в компьютерные тесты. Идея автоматизированного контроля знаний позволяет более эффективно использовать время, охватить больший объем содержания, быстро установить обратную связь с обучающимися и определить результаты усвоения материала. Положительной стороной данного процесса также является то, что студенты находятся в одинаковых условиях, исключаются элементы необъективности экзаменационного процесса. Кроме того, в процессе компьютерного тестирования, обучающиеся могут оценивать собственные знания по дисциплине самостоятельно.

 

Материалы и методы

Системы, позволяющие проводить тестирование знаний, называются автоматизированными тестирующими системами. Автоматизация играет большую роль ввиду большого объема проверяемых данных. Такие системы востребованы в процессе обучения в школах, в университетах, а также в олимпиадах различного рода.

Автоматизированная тестирующая система – это комплекс программных (или программно-аппаратных) средств, которые позволяют в автоматическом режиме проводить тестирование решений пользователей в рамках объекта тестирования.

Тесты в таких системах могут быть совершенно разными в зависимости от тестируемого предмета: это могут быть тестовые задания открытого или закрытого типа, тесты с множественным выбором, тесты установления соответствий и т. д.

Говоря о задачах по программированию важно отметить то, что они кардинально отличаются от всех остальных задач. Например, задача по математике или физике состоит из условия задачи и единственного вопроса, на который нужно предоставить ответ. В задачах программирования система оценки совершенно иная: решением задачи в программировании является программа, которая решает целый класс однотипных задач, которые отличаются входными данными.

 

Основные результаты исследования

Классическая задача по программированию, если говорить об её представлении в автоматизированных тестирующих системах, состоит из нескольких компонентов:

·        Непосредственно условие задачи в текстовом виде;

·        Набор входных и выходных тестов (файлов). При этом, тесты могут разделяться на тесты предварительного и полного тестирования.

·        Программа-чекер — это специальная программа, которая проверяет ответ решения пользователя. Чекер, обычно, создается под каждую задачу индивидуально: в одних задачах достаточно проверить сходство ответа пользователя с эталонным ответом, а в других — правильных ответов может быть несколько, и простая сверка ответов уже не подойдет.

 

Задача по программированию — это не просто получение правильного ответа на тест. В задачах по программированию участнику также предстоит оптимизировать свою программу так, чтобы она прошла через ряд ограничений.

Эти ограничения могут быть разными в зависимости от определенных требований к проведению состязания, от возможностей тестирующей системы и т. д. В основном, к решениям предъявляются требования по следующим критериям:

·        Время выполнения. Программа-решение должна выдавать ответ за определенное время. Обычно, на каждый тест программе выделяется 1 секунда, и если за это время программа не завершается и не выдает ответ — решение задачи является неоптимальным и баллы за него не начисляются.

·        Количество используемой оперативной памяти также является важным фактором. Если программа выделяет слишком много памяти, то это в большинстве случаев говорит о её неоптимальности.

·        Размер исходного кода программы также учитывается в тестирующих системах, и слишком большие по размеру файлы исходных кодов в тестирующие системы просто не пропускаются.

 

Наряду с определенными ограничениями, касающимися непосредственно задачи, нельзя забывать о том, что пользователи могут попытаться навредить тестирующей системе, попытаться вывести её из строя или обойти защиту системы и начислить себе фиктивные баллы — поэтому, вопрос безопасности в таких системах очень важен.

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

Программа, присланная на проверку в тестирующую систему, запускается непосредственно на сервере тестирования вместе со всеми другими решениями, поэтому, теоретически, она может управлять сервером любыми доступными её командами. В лучшем (простейшем) случае вредоносное решение может удалять файлы на сервере тестирования, в худшем – похищать какие-либо данные.

Защита системы от вредоносных решений обычно выполняется в три этапа.

Первый этап – поверхностный, это проверка исходного кода решения на вредоносные участки. Такая проверка является наиболее простой и быстрой, так как позволяет ещё на этапе загрузки решения в систему проверить её исходный код. Обычно, производится проверка на использование различных библиотек, которые в большинстве случаев необходимы для доступа к низкоуровневым системным функциям, а также проверяется наличие ASM (ассемблер) вставок, которые также используются для доступа к низкоуровневым командам процессора.

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

Третий этап является самым важным и сложным в реализации, так как он напрямую зависит от операционной системы. Программа-решение участника должно запускаться в специальном «контейнере», который ограничен одной единственной директорией исполнения. В Linux-системах для реализации такого контейнера используется утилита chroot, в Windows-системах необходимо создавать специальные Job-объекты, внутри которых есть возможность запускать процессы с наложением ограничений.

 

Выводы

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

Библиографический список

1.Андриенко А.В. Компьютерное тестирование как механизм оценки качества образования [Текст] / А.В. Андриенко // Тестирование в сфере образования: проблемы и перспективы развития: материалы II Всероссийской научно-практической конференции 19-20 мая 2009 г., Красноярск: СибГТУ, 2009. –С.267-277
2.Белов, А.А. Система анализа результатов тестирования / А.А Белов // Университетское образование: Сборник материалов VIII Междунар. науч.-методич. конф. Пенза, 15-16 апреля Пенза : ПДЗ,2004.
3.Белов, А.А. Система анализа результатов тестирования [Текст] / А.А. Белов // Университетское образование: Сборник материалов VIII Междунар. науч.-методич. конф. — Пенза: ПДЗ, 2004. — С.497-498.
4.Вергазов, Р.И. Автоматизация проверки качества тестовых заданий / Р.И. Вергазов, И.Г. Кревский, А.Ю. Жильцов // Инновации в образовании: Материалы I науч.-методич. конф. Пенза, 26-27 апреля 2003 г. Пенза : Изд-во ПТУ, 2003.
5.Вергазов, Р.И. Интероперабельность тестовых материалов / Р.И. Вергазов // Университетское образование: Сборник материалов VII Междунар. науч.-методич. конф. Пенза, 10-11 апреля 2003 г. Пенза: ПДЗ, 2003.-с. 495-497.
6.Корнеев Г.А., Станкевич А.С. Методы тестирования решений задач на соревнованиях по программированию. //Труды II межвузовской конференции молодых ученых. — СПб.: СПбГУ ИТМО, 2004.
7.Поддубная, Л.М. Задания в тестовой форме для автоматизированного контроля знаний студентов [Текст]/Л.М. Поддубная, А.О. Татур, М.Б. Челышкова. — М.: Исследовательский центр проблем качества подготовки специалистов, 1995.
8.Станкевич А.С. Общий подход к подведению итогов соревнований по программированию при использовании различных систем оценки. //Компьютерные инструменты в образовании. №2, 2011.
9.Макиева З.Дж., Каримова Г.Т., Макаева А.Д. Требования к веб-ориентированной информационной системе по секторальной квалификационной рамке Кыргызской Республики для ИКТ направлений. //Теоретический и научно-методический журнал «Вестник университета (ГУУ)» ФГБОУ ВПО «Государственный университет управления», Москва, № 19/2014.
10.Аванесов, В.С. Композиция тестовых заданий [Текст] / В.С. Аванесов. — М.: Центр тестирования, 2002
11.Аванесов, В.С. Эффективность педагогических тестов и тестовых заданий [Электронный ресурс] / В.С. Аванесов. – Режим доступа: http://www.testolog.narod.ru
12.Белоус, В. В. Тестовый метод контроля качества обучения и критерии качества образовательных тестов [Электронный ресурс] / В.В. Белоус, А.С. Домников, А.П. Карпенко // Наука и образование: научное издание МГТУ им. Н.Э. Баумана. — 2011. — № 4
13.Куклин, В.Ж. О компьютерной технологии оценки качества знаний [Текст] / В.Ж. Куклин, В.И. Мешалкин, В.Г. Наводнов, Б.А. Савельев // Высшее образование в России. — 1993. — №3. — С.146-153
14.Мисюк, Т.М. Использование компьютерных технологий в линейном программировании [Текст] / Т.М. Мисюк // Ярославский педагогический вестник – 2011. – № 1. – Том III (Естественные науки). — С. 23-30
15.Попов, А.В. Тестирование как метод контроля качества знаний студентов [Текст] / А.В. Попов // Труды Санкт-Петербургского государственного университета культуры и искусств. — 2013. — Том 200. — С. 283 — 286.
16.Соколова, И.И. Компьютерное тестирование как наукоемкая педагогическая технология[Текст]/ И.И. Соколова // Известия Российского государственного педагогического университета им. А.И. Герцена. — 2004. — № 9. — Том 4. — С. 77-86
17.Талызина, Н.Ф. Теоретические основы контроля в учебном процессе[Текст] / Н.Ф. Талызина. — M.: Знание, 1983. — С. 3-37.
18.Тясто, А. А., Куимова М. В. О компьютерном тестировании в учебном процессе [Текст] / А.А.Тясто, М. В. Куимова. // Молодой ученый. — 2015. — №9. — С. 1206-1207.
19.Углев, В. А. Обучающее компьютерное тестирование // Теоретические и прикладные вопросы современных информационных технологий: Материалы VIII Всероссийской научно-технической конференции [Текст] / В.А. Углев. — Улан-Удэ: ВСГТУ, 2007. — С. 312 — 316.
20.Челышкова, М.Б. Методические рекомендации по разработке педагогических тестов для комплексной оценки подготовленности студентов в вузе [Текст] / М. Б. Челышкова, Б. А. Савельев. – М.: ИЦПКПС,1995. – 77 с.

References

1.Andrienko A.V. Komp’yuternoe testirovanie kak mekhanizm ocenki kachestva obrazovaniya [Tekst] / A.V. Andrienko // Testirovanie v sfere obrazovaniya: problemy i perspektivy razvitiya: materialy II Vserossijskoj nauchno-prakticheskoj konferencii 19-20 maya 2009 g., Krasnoyarsk: SibGTU, 2009. –S.267-277
2.Belov, A.A. Sistema analiza rezul’tatov testirovaniya / A.A Belov // Universitetskoe obrazovanie: Sbornik materialov VIII Mezhdunar. nauch.-metodich. konf. Penza, 15-16 aprelya Penza : PDZ,2004.
3.Belov, A.A. Sistema analiza rezul’tatov testirovaniya [Tekst] / A.A. Belov // Universitetskoe obrazovanie: Sbornik materialov VIII Mezhdunar. nauch.-metodich. konf. — Penza: PDZ, 2004. — S.497-498.
4.Vergazov, R.I. Avtomatizaciya proverki kachestva testovyh zadanij / R.I. Vergazov, I.G. Krevskij, A.YU. ZHil’cov // Innovacii v obrazovanii: Materialy I nauch.-metodich. konf. Penza, 26-27 aprelya 2003 g. Penza : Izd-vo PTU, 2003.
5.Vergazov, R.I. Interoperabel’nost’ testovyh materialov / R.I. Vergazov // Universitetskoe obrazovanie: Sbornik materialov VII Mezhdunar. nauch.-metodich. konf. Penza, 10-11 aprelya 2003 g. Penza: PDZ, 2003.-s. 495-497.
6.Korneev G.A., Stankevich A.S. Metody testirovaniya reshenij zadach na sorevnovaniyah po programmirovaniyu. //Trudy II mezhvuzovskoj konferencii molodyh uchenyh. — SPb.: SPbGU ITMO, 2004.
7.Poddubnaya, L.M. Zadaniya v testovoj forme dlya avtomatizirovannogo kontrolya znanij studentov [Tekst]/L.M. Poddubnaya, A.O. Tatur, M.B. CHelyshkova. — M.: Issledovatel’skij centr problem kachestva podgotovki specialistov, 1995.
8.Stankevich A.S. Obshchij podhod k podvedeniyu itogov sorevnovanij po programmirovaniyu pri ispol’zovanii razlichnyh sistem ocenki. //Komp’yuternye instrumenty v obrazovanii. №2, 2011.
9.Makieva Z.Dzh., Karimova G.T., Makaeva A.D. Trebovaniya k veb-orientirovannoj informacionnoj sisteme po sektoral’noj kvalifikacionnoj ramke Kyrgyzskoj Respubliki dlya IKT napravlenij. //Teoreticheskij i nauchno-metodicheskij zhurnal «Vestnik universiteta (GUU)» FGBOU VPO «Gosudarstvennyj universitet upravleniya», Moskva, № 19/2014.
10.Avanesov, V.S. Kompoziciya testovyh zadanij [Tekst] / V.S. Avanesov. — M.: Centr testirovaniya, 2002
11.Avanesov, V.S. EHffektivnost’ pedagogicheskih testov i testovyh zadanij [EHlektronnyj resurs] / V.S. Avanesov. – Rezhim dostupa: http://www.testolog.narod.ru
12.Belous, V. V. Testovyj metod kontrolya kachestva obucheniya i kriterii kachestva obrazovatel’nyh testov [EHlektronnyj resurs] / V.V. Belous, A.S. Domnikov, A.P. Karpenko // Nauka i obrazovanie: nauchnoe izdanie MGTU im. N.EH. Baumana. — 2011. — № 4
13.Kuklin, V.ZH. O komp’yuternoj tekhnologii ocenki kachestva znanij [Tekst] / V.ZH. Kuklin, V.I. Meshalkin, V.G. Navodnov, B.A. Savel’ev // Vysshee obrazovanie v Rossii. — 1993. — №3. — S.146-153
14.Misyuk, T.M. Ispol’zovanie komp’yuternyh tekhnologij v linejnom programmirovanii [Tekst] / T.M. Misyuk // YAroslavskij pedagogicheskij vestnik – 2011. – № 1. – Tom III (Estestvennye nauki). — S. 23-30
15.Popov, A.V. Testirovanie kak metod kontrolya kachestva znanij studentov [Tekst] / A.V. Popov // Trudy Sankt-Peterburgskogo gosudarstvennogo universiteta kul’tury i iskusstv. — 2013. — Tom 200. — S. 283 — 286.
16.Sokolova, I.I. Komp’yuternoe testirovanie kak naukoemkaya pedagogicheskaya tekhnologiya[Tekst]/ I.I. Sokolova // Izvestiya Rossijskogo gosudarstvennogo pedagogicheskogo universiteta im. A.I. Gercena. — 2004. — № 9. — Tom 4. — S. 77-86
17.Talyzina, N.F. Teoreticheskie osnovy kontrolya v uchebnom processe[Tekst] / N.F. Talyzina. — M.: Znanie, 1983. — S. 3-37.
18.Tyasto, A. A., Kuimova M. V. O komp’yuternom testirovanii v uchebnom processe [Tekst] / A.A.Tyasto, M. V. Kuimova. // Molodoj uchenyj. — 2015. — №9. — S. 1206-1207.
19.Uglev, V. A. Obuchayushchee komp’yuternoe testirovanie // Teoreticheskie i prikladnye voprosy sovremennyh informacionnyh tekhnologij: Materialy VIII Vserossijskoj nauchno-tekhnicheskoj konferencii [Tekst] / V.A. Uglev. — Ulan-Udeh: VSGTU, 2007. — S. 312 — 316.
20.CHelyshkova, M.B. Metodicheskie rekomendacii po razrabotke pedagogicheskih testov dlya kompleksnoj ocenki podgotovlennosti studentov v vuze [Tekst] / M. B. CHelyshkova, B. A. Savel’ev. – M.: ICPKPS,1995. – 77 s.