На горизонте русскоязычного Интернета появился новый, но интересный проект, посвящённый тестированию и обеспечению качества программного обеспечения: Тестер - Сервер тестировщиков и инженеров качества tester.com.ua. Адрес рассылки subscribe.ru/catalog/comp.soft.prog.tester.
Здесь Вы найдёте обзоры методологии и технологий тестирования, обзоры инструментария и литературы для инженера качества, обзоры типов тестов и терминологии применяемой как в тестировании так и смежных областях, обсуждения вопросов и технологий тестирования, отзывы специалистов о применяемых ими подходах, наиболее интересные проблемы с которыми сталкиваются в своей работе инженеры качества.
Тематика "Тестера" особенно актуальна для мастеров экстремального программирования, ведь автоматизированное приёмочное и модульное тестирование являются ключевыми для данной методологии.
Изучаем методики XP
Учимся упрощать код.
Экстремальное программирование тем и отличается от других процессов разработки, что рекомендует стремиться к снижению затрат путём максимального упрощения. При этом, речь идёт об упрощении без потери в качестве, и более того: упрощение как одно из средств улучшения качества. В данном уроке рассмотрим упрощение кода.
Целью упрощения кода является уменьшение затрат на внесение последующих изменений и выявление скрытых ошибок. Существует ряд правил простоты. Слова Кента Бека в интерпретации Рона Джеффриеса и моём переводе звучат следующим образом:
Все тесты выполняются корректно.
Отсутствует дублирование.
Выражены все идеи, которые были обоснованы для программы.
Количество классов и методов минимально.
Указанная последовательность правил определяет их приоритетность. Совсем не обязательно стараться написать сразу код, который будет находиться в балансе между всеми этими правилами. Главное добиться выполнения всех тестов. Всё остальное будет возможность достичь в рамках рефакторинга.
Этими правилами можно охватить достаточно широкий круг возможных ситуаций из программистской практики. Например, очень часто программисты прибегают к совсем не методичному подходу, который в народе получил название "Copy-Paste". Он заключается в создании нового кода путём копирования существующего с небольшими изменениями. Пункт 1 здесь должен выполняться. Но есть необходимость и в пункте 2, ведь при очередном исправлении или изменении одного участка должно следовать и изменение в другом дублирующем участке кода, а это уже довольно хлопотно, и не всегда об этом можно вспомнить или вообще знать.
Упражнение.
Опишите словесно или реализуйте на любом удобном языку программирования модульные тесты для следующих задач:
1. Добавление информации о новых компакт-дисках.
2. Зачисление партии компакт-дисков на склад.
3. Продажа имеющихся на складе компакт-дисков.
4. Сортировка компакт-дисков по количеству продаж за последнюю неделю.
5. Количество каждого компакт-диска на складе.
Постарайтесь не задумываться над реализацией задачи: нужен только тест.
Адресуйте свои решения нам, lessons@xprogramming.com.ua.
Будем рады увидеть не только их, но и ваши отзывы и пожелания.