Одне з небагатьох речей, з яким погоджується більшість розробників програмного забезпечення, - це те, що ви не повинні покладатися на правильний код коду, якщо ви не протестуєте його. Якщо ви не перевірите це, можливо, у ньому є приховані помилки, які лише змусять вас більше працювати в дорозі.
Я розумію, як перевірити свій звичайний код, але як слід перевірити свій тестовий код, щоб переконатися, що він може ефективно знаходити та повідомляти про помилки, коли вони є? Я особисто був досить дурним, щоб писати помилкові тестові справи, які проходили б тоді, коли їх не було, тим самим перемагаючи мету моїх тестів з письма в першу чергу. На щастя, я виявив і виправив помилки в часі, але, згідно з тестуванням мантри, схоже, що жоден тестовий набір не буде повним, не маючи власного набору тестів, щоб переконатися, що він працював.
Мені здається, що найкращим способом зробити це було б переконатися, що тест не спрацьовує з помилковим кодом. * Якщо я витрачаю 2 хвилини по черзі на додавання помилок до коду і переконуюсь, що він не працює, я повинен мати впевнену ступінь впевненості, що тести "працюють". Це підводить мене до мого другого питання: Які хороші способи ввести помилки, щоб переконатися, що вони потрапили в тестові випадки? Якщо я просто випадковим чином коментую заяви, переконайтеся, що неправильна гілка запису if-else
запускається, відкидаючи його стан, і змінюю порядок виконання коду з побічними ефектами тощо, поки я не переконаюся, що мої тести зловить більшістьзвичайні помилки? Як професійні розробники підтверджують, що їхні тести насправді роблять те, що вони повинні робити? Вони просто припускають, що тести працюють, чи вони також потребують часу, щоб перевірити їх? Якщо так, як вони проводять тести?
Я не пропоную людям витратити стільки часу на тестування своїх тестів, а потім тестувати тести на свої тести, щоб вони ніколи насправді не писали реальний код, але я зробив досить дурні речі, за які я відчуваю, що можу отримати користь "мета-тестування", і було цікаво про найкращий спосіб зробити це. : D
* Я міг би перевірити, чи проходить тест при тестуванні коду без помилок, але використання коду як специфікації для тесту здається зовсім зворотним ...