[разработка самотестирующегося PHP-кода]материал подготовил: А. В. Кириллов 16.02.2005
Улучшение кода не должно сказываться на его первоначальной (после проведенных доработок) функциональности. Как минимум, после переработки приложение не должно содержать больше ошибок на единицу строк кода, чем до начала этого процесса. Достичь этого можно с помощью внедренных в приложение процедур по проверке правильности работы функций программы. Если принять содержимое функции за черный ящик (имеющий определенную вами функциональность), то по реакции функции на набор входных значений можно судить о правильности ее работы. На этом принципе можно построить несложную, но достаточно функциональную схему тестирования кода.
Разберем простейший случай организации процедуры тестирования качества кода на примере введения тестирования работоспособности всего одной функции, выполняющей, например, несложные преобразования текста… Предположим, в вашей программе понадобилась некая функция, которая увеличивает длину строкового представления целого числа до указанной величины с помощью добавления слева символов «0».
Процедуры тестирования кода
Вот как выглядит функция, которую впоследствии будет проверять сам класс, в который она будет входить:
<? function addspace( $int_,$len ) { $i=0; $str_=trim($int_); while (strlen($str_)<$len) { $str_="0".$str_; if ($i++>$len) break; } return $str_; } ?>
Этот код сознательно написан несколько некорректно, чтобы вы могли проследить, как функционируют методы отлова таких ситуаций на практике. Некорректность состоит в неверной обработке отрицательных значений.
Пример функции
Если на этапе создания новой функции сразу создать код, проверяющий ее работоспособность путем анализа соответствия массивов входных значений с выходными, то при дальнейшей доработке этой функции можно не беспокоиться о ее работоспособности — достаточно запустить этот тестирующий код, и тогда можно будет сделать вывод, что функция работает корректно либо не работает. Далее будет показан несложный пример такого тестирующего кода для нашей функции обработки текста.
Введение тестирующей функции
Основная проблема при построении механизма проверки функций — это осуществление разработки кода для контроля нужной вам функциональности. Наибольшая сложность в организации процесса производства программного продукта при этом состоит в том, чтобы создавать тестирующий код по мере добавления новых функций в ваше приложение.
Проблемы, возникающие в процессе разработки тестирующих функций
хорошим тоном будет создание «самотестирующегося кода» начиная с самого начала разработки класса (функции) на PHP. После внесения некоторых изменений в код функции разработчику достаточно запустить тестирующий код, который выдаст результаты сравнения эталонных данных с текущими. Можно долго спорить про то, как лучше оформлять результаты такого тестирования, но, в том случае если вы еще не успели в