Что значит качество?
В моих планах на год значилась тема unit-тестирования, а именно определиться с терминологией и выстроить для себя стройную модель применения тестов на практике.
Проблемы начались сразу же, с определений, а именно что такое unit и тестирование. Под юнитами могут подразумеваться функции, методы, классы, модули, бизнес-кейсы и т.д. С термином тестирование все печальнее, а если же попытаться дать определение цели тестирования, а именно Качеству, то можно погрязнуть в пучине метафизики и философии.
В тщетных попытках получить по этой теме что-нибудь внятное я наткнулся на такую вещь, как SQuaRE - Software product Quality Requirements and Evaluation - группа стандартов, посвященная качеству ПО, в которых освещены темы спецификации, построения моделей, планированию, оценке качества и чего-то там еще. Чтобы не запутаться во всей этой кипе документов есть даже целый гайд ISO/IEC 25000:2014.
Круто! - подумал я, вот то, что мне нужно. Всю работу уже сделали за меня, осталось только прочитать и разобраться. Но тут есть один нюанс - за каждый документ нужно отвалить порядка 150$ по текущему курсу, сам гайд по SQuaRE ссылается на 100500 других стандартов, общая сумма приближается к астрономической.. В связи с этим у меня возникло несколько вопросов:
- Кто эти люди, которые читали вышеупомянутые стандарты?
- Как происходит процесс сертификации?
- А зачем оно мне надо?
Опыта с сертификатами я не имел, но могу предположить, что есть конторы, которые проводят консультации и аудит, и в итоге сетифицируют вашу организацию по выбранному стандарту. В российской действительности возможно что ни заказчик, ни аудитор в глаза не видели оригинальный текст стандарта. Но главная проблема - со всей этой сертификацией я отклонился от первоначальной темы и зашел не туда, поэтому нужно сконцентрироваться на третьем вопросе.
Пытаясь ответить на глобальный вопрос о том, что же такое качество я углубился в тему, которая мне неинтересна, а ответ, даже если он есть, не будет иметь практической ценности, посему заканчиваю с философскими вопросами и останавливаюсь на следующем:
- Имея дело с субъективными понятиями необходимо применять субъективный подход - гораздо важнее чтобы внутри проекта было единое понимание той или иной сущности (unit, качество, тестирование и т.д.), чем точное, но абстрактное определение
- В процессе изучения темы тестирования попалась на глаза книга, которую стоит почитать: The Art of Unit Testing
- Качество - вещь абстрактная, а говнокод реален, корень всех зол в нем.