Я недавно получил религию тестирования и начал в основном с модульного тестирования.Я кодирую модульные тесты, которые показывают, что функция работает в определенных случаях, в частности, используя точные входные данные, которые я использую.Я могу сделать несколько юнит-тестов, чтобы выполнить эту функцию.Тем не менее, я на самом деле не доказал ничего, кроме того, что функция выполняет то, что я ожидаю, в сценариях, которые я тестировал.Могут быть и другие исходные данные и сценарии, о которых я не думал, и думать о крайних случаях стоит дорого, особенно на полях.
Это все не очень приятно для меня.Когда я начинаю думать о необходимости создавать тесты для удовлетворения охвата веток и путей, а затем тестировать интеграцию, предполагаемые перестановки могут стать немного сводящими с ума.
Итак, мой вопрос, как можно доказать (вВ том же духе доказательства теоремы в математике), что функция работает (и в идеальном мире объединяет эти «доказательства» в доказательство того, что система работает)?
Существует ли определенная область тестирования, котораяохватывает подход, при котором вы пытаетесь доказать, что система работает, доказывая, что все ее функции работают?Кто-нибудь за пределами академии беспокоит такой подход?Существуют ли инструменты и методы, которые могут помочь?
Я понимаю, что мое использование слова «работа» не совсем точно.Я предполагаю, что имею в виду, что функция работает, когда она делает то, что в какой-то спецификации (написанной или подразумеваемой) говорится, что она должна делать, и ничего не делает, кроме этого.
Обратите внимание, я не математик, просто программист.