1. Крайние случаи (пустые данные, минимум данных, максимум данных).
2. Некорректные данные (в т.ч. некорректный объём данных).
3. Stress-test (много данных в единицу времени, в т.ч. параллельно).
4. Есть ли у тебя unit-test'ы для всех execution paths? Если не для всех, то для какого %? Если нет unit-test, то по какому % execution paths ты прошёлся вручную или под дебаггером?
Для справки, скажем, вот в таком коде: if (a1) then (b1) else (c1); if (a2) then (b2) else (c2); ... if (a8) then (b8) else (c8); будет 256 различных execution path, т.к. в каждой точке ветвления ты можешь выбрать 1 из 2 вариантов, и таких ветвлений 8.
Если ты можешь доказать независимость bi и ci друг от друга, то тебе достаточно простировать всего 9 execution paths (в каждом отдельно взятом if'е выбрать 2-й вариант, в остальных 1-й, отдельным вариантом выбрать 1-й везде).
Далее - везде, где у тебя есть какие-то входные данные в идеале тебе нужно либо протестировать все возможные значения (напр., строка в 8-битной кодировке длиной в 100 символов может принимать 2^(8*100) различных значений), либо сделать небольшую их выборку и доказать, что эта выборка покрывает все execution paths.
5. Тебе делали code review? Если нет, дай другому человеку прочесть твой код (на свежую голову).
---
А вообще, конечно, в 400 строках кода, написанных тобой одним махом вполне может быть совсем (или почти) без багов. Баги ты внесёшь опосля, когда будешь править и наворачивать этот код. Или когда кто-нибудь другой это будет делать...
Со скоростью тоже не беспокойся. Когда количество строк кода перевалит за 50'000, будешь за 4.5 часа дописывать 5 строчек (ой!) ;)
no subject
Date: 2009-06-02 05:12 am (UTC)1. Крайние случаи (пустые данные, минимум данных, максимум данных).
2. Некорректные данные (в т.ч. некорректный объём данных).
3. Stress-test (много данных в единицу времени, в т.ч. параллельно).
4. Есть ли у тебя unit-test'ы для всех execution paths? Если не для всех, то для какого %? Если нет unit-test, то по какому % execution paths ты прошёлся вручную или под дебаггером?
Для справки, скажем, вот в таком коде:
if (a1) then (b1) else (c1);
if (a2) then (b2) else (c2);
...
if (a8) then (b8) else (c8);
будет 256 различных execution path, т.к. в каждой точке ветвления ты можешь выбрать 1 из 2 вариантов, и таких ветвлений 8.
Если ты можешь доказать независимость bi и ci друг от друга, то тебе достаточно простировать всего 9 execution paths (в каждом отдельно взятом if'е выбрать 2-й вариант, в остальных 1-й, отдельным вариантом выбрать 1-й везде).
Далее - везде, где у тебя есть какие-то входные данные в идеале тебе нужно либо протестировать все возможные значения (напр., строка в 8-битной кодировке длиной в 100 символов может принимать 2^(8*100) различных значений), либо сделать небольшую их выборку и доказать, что эта выборка покрывает все execution paths.
5. Тебе делали code review? Если нет, дай другому человеку прочесть твой код (на свежую голову).
---
А вообще, конечно, в 400 строках кода, написанных тобой одним махом вполне может быть совсем (или почти) без багов. Баги ты внесёшь опосля, когда будешь править и наворачивать этот код. Или когда кто-нибудь другой это будет делать...
Со скоростью тоже не беспокойся. Когда количество строк кода перевалит за 50'000, будешь за 4.5 часа дописывать 5 строчек (ой!) ;)