Обучение программированию на Java с помощью автоматических тестов

WarFair 4 августа 2014 в 22:02 50,2k
Началось все с простого — один мой друг захотел писать проги на яве. Естественно, что просто выучив синтаксис языка, никакого опыта в программировании не наберешся, и потому нужно просто писать уже хоть что-нибудь. Вот я и обдумывал вопрос, что же лучше всего подойдет для этого. Я пришел к выводу, что самое лучше в начале пути, на мой взгляд, это создать простенький класс который бы описывал абстрактную «сущность», но при этом был прост в понимании. В итоге было решено выдать тренировочное задание по написанию самопального класса комплексного числа.
Конечно можно было бы просто написать на листочке все требования к этому классу, описать интерфейс всех его методов и тому подобное, однако потом это пришлось бы проверять, и при этом очень даже вероятно что проверять по нескольку раз, так как товарищ только обучается.
Но тут меня потянуло в сторону экспериментов, а так как я нетак давно заинтересовался TDD, то и эксперименты пошли в ту же степь.


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

И вот пришло время кодить. Первое что я решил, это проводить все тесты внутри функции main посредством обычных вызовов методов. Какова причина этого? Все просто — главная задача это пошаговое создание класса, с плавным увеличением его сложности, что очень легко устроить посредством указания последовательности вызовов тестирующих методов и выходом из программы в случае провала одного из них. Также для того чтобы узнать, каковы результаты тестов достаточно просто нажать F6 (я делал это в нетбинсе), узнать из окна вывода что именно работает не так, и продолжить редактировать код.

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

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

Для всех желающих опробывать на себе, что же в итоге получилось, предлагаю скачать архив с проектом (для нетбинса). Правила пользования просты:
-Открываете проект
-Открываете файл doxygen/html/index.html (в нем находятся пояснения к требованиям и некоторая полезная информация, а также описания всего что под капотом)
-Выполняете приложение и следуете указаниям в выводе до тех пор, пока все тесты не будут выполнены.
Поидее все это должно занять около часа.
Буду рад конструктивной критике.

На последок вопрос — имеет ли смысл такое обучение и будет ли от него эффект?
Проголосовать:
+1
Сохранить: