шляхів на графі передач управління програми (Її керуючому графі). Навіть для середніх по складності програм числом таких шляхів може досягати десятків тисяч. Якщо обмежитися перебором тільки лінійних незалежних шляхів, то і в цьому випадку вичерпне структурне тестування практично неможливо, тому що неясно, як підбирати тести, щоб забезпечити "покриття" всіх таких шляхів. Тому при структурному тестуванні необхідно використовувати інші критерії його повноти, що дозволяють досить просто контролювати їх виконання, але не дають гарантії повної перевірки логіки програми.
Але навіть якщо припустити, що вдалося досягти повного структурного тестування деякої програми, в ній проте можуть міститися помилки, так p> 1) програма може не відповідати своїй зовнішній специфікації, що зокрема, може призвести до того, що в її керуючому графі виявляться пропущеними деякі необхідні шляху;
2) не будуть виявлені помилки, поява яких залежить від даних (тобто на одних початкових даних програма працює правильно, а на інших - з помилкою). p> Таким чином, ні структурне, ні функціональне тестування не може бути вичерпним. Розглянемо докладніше основні етапи тестування програмних комплексів.
У тестування багатомодульних програмних комплексів можна виділити чотири етапи:
1) тестування окремих модулів;
2) спільне тестування модулів;
3) тестування функцій програмного комплексу (тобто пошук відмінностей між розробленою програмою і її зовнішньою специфікацією);
4) тестування всього комплексу загалом (тобто пошук невідповідності створеного програмного продукту сформульованим раніше цілям проектування, відображеним звичайно в технічному завданні).
На перших двох етапах використовуються передусім методи структурного тестування, так
на подальших етапах тестування ці методи використовувати складніше через великі розміри програмного забезпечення;
подальші етапи тестування орієнтовані на виявлення помилок різного типу, які не обов'язково пов'язані з логікою програми.
При тестуванні як окремих модулів, так і їх комплексів повинні бути вирішені дві задачі:
1) побудова ефективної безлічі тестів;
2) вибір способу комбінування (Збирання) модулів при створенні трестируємого варіанту програми. br/>
СТРУКТУРНЕ ТЕСТУВАННЯ.
Оскільки вичерпне структурне тестування неможливо, необхідно вибрати такі критерії його повноти, які допускали б їх просту перевірку і полегшували б цілеспрямований підбір тестів.
Найбільш слабким з критеріїв повноти структурного тестування є вимога хоч би однократного виконання (покриття) кожного оператора програми. p> Більше сильним критерієм є так званий критерій С1: кожна гілка алгоритму (кожний перехід) повинна бути пройдена (виконана) хоча б один раз. Для більшості мов програмування покриття переходів забезпечує і покриття операторів, але, наприклад, для програм на мові ПЛ/1 додатково до...