СИСТЕМА АВТОМАТИЧНОГО ТЕСТУВАННЯ КОНСОЛЬНИХ ПРОГРАМ "ACM Contester"
Прислано webmaster на 23.04.2007 15:36:59

СИСТЕМА АВТОМАТИЧНОГО ТЕСТУВАННЯ КОНСОЛЬНИХ ПРОГРАМ

"ACM Contester"

Семен Юрій Володимирович, Бабіля Руслан Васильович, Яремчук Назарій Іванович, Україна

Керівник: аспірант кафедри програмування Білецький Василь Миколайович

Львівський Національний Університет, факультет прикладної математики та інформатики

 

Сьогодні існує багато систем тестування, однак жодна з них не може дати відповідь на питання чи правильно написаний код, метою якого є розв'язання деякої прикладної алгоритмічної задачі. Такі програми, в основному дають оцінку знань користувача шляхом перевірки вибраного варіанту відповіді. Більш функціональними є програми тестування, які дають можливість ввести користувачеві текстову відповідь. В цьому випадку можна передбачити декілька різних варіантів, які будуть однаково правильними. Але що робити, коли є необхідність перевірити вміння складати та правильно реалізовувати обчислювальні алгоритми?

У цьому випадку, звичайними програмами тестування не скористаєшся. Адже теоретичні знання - не показник. Людина може ідеально досконало знати синтаксис мови програмування, знати які базові типи присутні та їх властивості і т.д. Бувають випадки, коли людина вміє визначити результати виконання конкретного програмного коду. Але при самостійному написанні коду, який виконуватиме поставлену задачу, виникають труднощі. Отже, щоб оцінити вміння програмувати - необхідно перевірити вміння створювати програми. Тобто здатність будувати алгоритми.

Очевидно, що це не так просто. Варіантів програмного коду, який виконує одну і ту саму задачу, безліч. Ми не можемо навчити звичайну систему тестування відрізнити правильний код від неправильного.

Цю, на перший погляд, досить складну проблему ми вирішили наступним чином:

Введемо деякі обмеження та уточнення:

У цьому випадку, ми можемо поставити перед користувачем завдання - розробити певний алгоритм, який буде отримувати початкові дані, і повертати результати роботи алгоритму. Отриманий результат ми можемо перевірити на відповідність еталонному результату.

Цей принцип перевірки правильності побудови алгоритму лежить в основі проведення престижних міжнародних змагань за правилами ACM, які проходять за підтримки провідних лідерів у виробництві комп'ютерної техніки та програмних продуктів.

Розроблена нами система працює в режимі 24/7 і зарекомендувала себе як надійна, стабільна система, яке не потребує ніяких втручань у її роботу. Завдяки цьому, користувачі системи мають змогу у будь-який, зручний для них, час перевірити чи правильно побудований алгоритм.

Крім цього постійно підтримується база даних, у якій зберігаються усі спроби разом із результатами. Це дає змогу відображати динамічний рейтинг, який додає певного стимулу. А також, при необхідності провести "он-лайн" змагання, досить вибрати час початку, тривалість та завдання, які будуть включені до цього змагання і воно розпочнеться автоматично в заданий час.

На даний момент у системі зареєстровано понад 170 користувачів та понад 50 завдань олімпіадного рівня різної складності. Зареєстровано понад 8 тисяч запитів на перевірку алгоритму та проведено 5 відкритих інтернет олімпіад і понад 10 олімпіад факультетського рівня.