Обложка канала

Протестировал

Фильтрованный контент о тестировании и качестве ПО.

Протестировал

6 лет назад
Открыть в
Известно давно, что нет серебряной пули в разработке ПО, которая поможет избавиться от всех багов. Есть разные техники, инструменты тестирования, улучшения качества кода и для снижения количества багов нужно комбинировать разные инструменты. Но насколько инспекция кода лучше, чем статический анализ или насколько тестирование хуже, чем динамический анализ? Автор статьи https://dwheeler.com/essays/heartbleed.html попробовал сравнить различные техники улучшения качества проекта openssl через призму яузвимости heartbleed. Так, например, инспекция кода и фаззинг помогли выявить проблему с heartbleed (правда уже постфактум), а 100% покрытие кода тестами по веткам не поможет. Статья очень большая и если лень читать или нет времени, то листайте до раздела "Conclusions and recommendations", там кратко подведены итоги.

A key lesson to be learned is that the static and dynamic analysis approaches often used by many projects today cannot find problems like Heartbleed. This includes mostly-positive automated test suites, common fuzz testing approaches, and typical statement or branch code coverage approaches. Several source code weakness analyzer developers are improving their tools to detect vulnerabilities very similar to Heartbleed, and that is good news. But it is obvious that this is not enough.
...
There is no magic bullet. However, there are important lessons that need to be learned. Projects need to aggressively use a suite of approaches so that vulnerabilities like Heartbleed almost never occur again.

У того же автора есть похожий постмортем для уязвимости Apple goto fail.