Правильный подход к тестированию в приложениях на php?
coverage говорит о покрытии тестами конкретных строк. Если во время прогона тестов не были затронуты какие-то строки исходного кода, то coverage будет менее 100%. В среднем считается что хорошее покрытие это > 80%. 100% достичь слишком трудно и дорого (и не нужно).
> И если я напишу еще 1000 такого типа тестов это лишь будет гарантировать, что всё хорошо на этих 1000 наборах данных, а вдруг ошибка как раз в другом, 1001-м наборе?
Гарантий вам никто не даст. Для гарантий есть формальная верификация, но это больше про математику чем про программирование. А так это ответственность программиста тестировать пограничные случаи. Ничего страшного в том что вы их пропустили обычно не приосходит. Просто если возникнет баг, то сначала добавите тест который его воспроизведет, а затем уже почините.
Из интересного:
* property-based testing https://en.wikipedia.org/wiki/QuickCheck
* bdd behat.org/en/latest/guides.html
* browser tests https://codeception.com/
* как писать тесты (концептуальная история) https://ru.hexlet.io/blog/posts/how-to-test-code
Сначала нужно определять граничные случаи и выбирать тест внутри этих диапазонов.
Например в вашем случае используется два целых числа:
1. Даст ли метод верный ответ, если одно или оба числа отрицательные или равны нулю
2. Даст ли метод верный ответ, если в процессе произойдёт переполнение переменнойОстальное можно придумать в зависимости от декларации и кода метода.
Поэтому вполне можно проверить пары:5, 19
-5, -19
5, -19
-5, 19
0, 19
5, 0
16874681246, 1254781628
если все тесты будут пройдены, то с большой вероятностью другие пары так же дадут верный результат.