Проведение тестов в Qt


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

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

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

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

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

Для создания тестов Qt предоставляет специальный модуль QtTestLib, который разработан для того, чтобы упростить тестирование классов вашего приложения. Также он включает в себя возможности проведения тестов классов графического интерфейса и позволяет "симулировать" клавиатуру и мышь.

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

Читать далее: Создание тестов