По мотивам - Коротко. Про тесты и пост- и пред-условия.
Вот кстати "параллельное мнение" (надеюсь, что автор не обидится на меня):
"Предусловия и Постусловия сделать - нет проблем. Но, если уж следовать
логике, то лучше бы их реализовать так:
Предусловия: (
)
Выполнить (
)
Постусловия: (
)
А вот это технически (на уровне скриптов) сейчас нереализуемо. Я,
по-началу, развлекался возможностью задавать Параметры: до Выполнить и
после. Но, оказалось, что не работает так. Пришлось эту возможность
вычеркнуть.
Но это, повторюсь, текущая проблема, которая при заточке машинки может
быть легко решена.
Теперь дополнения и замечания. Параметры создавались с основной задачей -
упростить код теста. Убрать оттуда все ненужное, чтобы это все было "за
кадром". Т.е. чтобы код теста (в Выполнить) максимально соответствовал
тексту в ошибке/задаче. Это был основной постулат. Плюс очередная попытка
упростить понимание тестов. Идея в том, что "в кишки", коих уже написано
много до поры до времени тестировщик не лезет. А поддерживает их
программист/более опытный тестировщик. Но, понятно, что в нашем случае
получилась очередная утопия (пришел "Новый незамутнённый тестировщик" и влез "в кишки", а параметры
ничем ему не помогли).
Мне не очень нравится слова постусловия и предусловия и вот почему.
Параметры задумывались с целью уменьшить/упростить код теста. Это, по возможности,
отглагольные существительные (передаю привет стандарту IDEF0), указывающие на действия, которые будут
сделаны в тесте. Их основное назначение - краткость. Как в Паскале есть
begin, а в Cи "{" на не "begin inner block" или что-то подобное. Поэтому,
вот такая запись: "Если документ уже был открыт, то закончить тест с
успехом" мне режет глаза. Кстати, вот эта тоже - "Документ из базы
{("Случайный документ")}". По мне, так лучше "Случайный документ" и все.
Еще не забываем параметры по умолчанию. Их цель - убрать необходимость
писать все параметры во всех тестах. На некоторых тестах ничего писать не
нужно. Для этого существуют параметры по умолчанию и возможность опускать слово "Параметры:".
Есть у меня идеи по связыванию пред и постусловий (частично я их уже начал реализовывать). Т.е. если вставлен "Случайный
документ", то автоматически выставляется "Закрыть документ". Если были
операции с базой, то автоматически выставляется параметр "Очистка базы".
Зачем? Чтобы "чей-нибудь склероз" не разнес все тесты нафиг. А здесь
появляются два момента. Первый, когда нужен какой-нибудь отладочный
режим. Т.е. доводим до какого-нибудь момента и ничего не закрываем. Такой режим должен учитываться.
Но тут отдельная тема для размышлений и, пока, не об ней речь.
Второй, все равно нужен контроль используемых ресурсов.
Выставили/невыставили параметр или где-нибудь в "Выполнить" что-то с базой
сделали - должна быть на выходе проверка, что база изменилась. И вот здесь
появляется новое понятие - проверяющие слова. Если слово обнаружило, что
параметра не было, а база изменилась, то она должна также выдать
Error/Warning и базу почистить. Но тогда, если есть такие слова (они,
кстати, будут внутренним понятием, вряд ли нужно их выпускать наружу)
смысл в постусловиях, частично, теряется. Они фактически выставляют флаги,
не более того. Другое дело - проверки теста. Вот их нужно задавать в
постусловиях.
Да, "Если документ уже был открыт, то закончить тест с успехом" в текущие
параметрические тесты не вписывается. Нет там сейчас такой обработки.
Досрочное окончание теста не предполагалось. Надо бы над этим подумать...
И последнее замечание, параметры (предусловия/постусловия) - это не только замена try except end,
а ближе к препроцессорной обработке. Они как замена условной компиляции. Хотя, наверно, несколько более широкое понятие. Текущая реализация - это не более, чем временное техническое ограничение. Его пока не требуется преодолевать, т.к. не накопилось достаточной массы задач, которым требуется что-то большее."
Мнение хотя и "другое" и "ортогональное", но (на мой взгляд) не нарушает "общей картины".
Вот кстати "параллельное мнение" (надеюсь, что автор не обидится на меня):
"Предусловия и Постусловия сделать - нет проблем. Но, если уж следовать
логике, то лучше бы их реализовать так:
Предусловия: (
)
Выполнить (
)
Постусловия: (
)
А вот это технически (на уровне скриптов) сейчас нереализуемо. Я,
по-началу, развлекался возможностью задавать Параметры: до Выполнить и
после. Но, оказалось, что не работает так. Пришлось эту возможность
вычеркнуть.
Но это, повторюсь, текущая проблема, которая при заточке машинки может
быть легко решена.
Теперь дополнения и замечания. Параметры создавались с основной задачей -
упростить код теста. Убрать оттуда все ненужное, чтобы это все было "за
кадром". Т.е. чтобы код теста (в Выполнить) максимально соответствовал
тексту в ошибке/задаче. Это был основной постулат. Плюс очередная попытка
упростить понимание тестов. Идея в том, что "в кишки", коих уже написано
много до поры до времени тестировщик не лезет. А поддерживает их
программист/более опытный тестировщик. Но, понятно, что в нашем случае
получилась очередная утопия (пришел "Новый незамутнённый тестировщик" и влез "в кишки", а параметры
ничем ему не помогли).
Мне не очень нравится слова постусловия и предусловия и вот почему.
Параметры задумывались с целью уменьшить/упростить код теста. Это, по возможности,
отглагольные существительные (передаю привет стандарту IDEF0), указывающие на действия, которые будут
сделаны в тесте. Их основное назначение - краткость. Как в Паскале есть
begin, а в Cи "{" на не "begin inner block" или что-то подобное. Поэтому,
вот такая запись: "Если документ уже был открыт, то закончить тест с
успехом" мне режет глаза. Кстати, вот эта тоже - "Документ из базы
{("Случайный документ")}". По мне, так лучше "Случайный документ" и все.
Еще не забываем параметры по умолчанию. Их цель - убрать необходимость
писать все параметры во всех тестах. На некоторых тестах ничего писать не
нужно. Для этого существуют параметры по умолчанию и возможность опускать слово "Параметры:".
Есть у меня идеи по связыванию пред и постусловий (частично я их уже начал реализовывать). Т.е. если вставлен "Случайный
документ", то автоматически выставляется "Закрыть документ". Если были
операции с базой, то автоматически выставляется параметр "Очистка базы".
Зачем? Чтобы "чей-нибудь склероз" не разнес все тесты нафиг. А здесь
появляются два момента. Первый, когда нужен какой-нибудь отладочный
режим. Т.е. доводим до какого-нибудь момента и ничего не закрываем. Такой режим должен учитываться.
Но тут отдельная тема для размышлений и, пока, не об ней речь.
Второй, все равно нужен контроль используемых ресурсов.
Выставили/невыставили параметр или где-нибудь в "Выполнить" что-то с базой
сделали - должна быть на выходе проверка, что база изменилась. И вот здесь
появляется новое понятие - проверяющие слова. Если слово обнаружило, что
параметра не было, а база изменилась, то она должна также выдать
Error/Warning и базу почистить. Но тогда, если есть такие слова (они,
кстати, будут внутренним понятием, вряд ли нужно их выпускать наружу)
смысл в постусловиях, частично, теряется. Они фактически выставляют флаги,
не более того. Другое дело - проверки теста. Вот их нужно задавать в
постусловиях.
Да, "Если документ уже был открыт, то закончить тест с успехом" в текущие
параметрические тесты не вписывается. Нет там сейчас такой обработки.
Досрочное окончание теста не предполагалось. Надо бы над этим подумать...
И последнее замечание, параметры (предусловия/постусловия) - это не только замена try except end,
а ближе к препроцессорной обработке. Они как замена условной компиляции. Хотя, наверно, несколько более широкое понятие. Текущая реализация - это не более, чем временное техническое ограничение. Его пока не требуется преодолевать, т.к. не накопилось достаточной массы задач, которым требуется что-то большее."
Мнение хотя и "другое" и "ортогональное", но (на мой взгляд) не нарушает "общей картины".
Комментариев нет:
Отправить комментарий