Существуют следующие методы тестирования по принципу «белого ящика»:
- покрытие операторов;
- покрытие решений;
- покрытие условий;
- покрытие решений/условий;
- комбинаторное покрытие условий.
2.1. Метод покрытия операторов
Целью этого метода тестирования является выполнение каждого оператора программы хотя бы один раз.
Рис. 1. Пример алгоритма программы
а – правильный; б – с ошибкой
Если для тестирования задать значения переменных А=2, В=0, Х=3, будет реализован путь ace, т.е. каждый оператор программы выполнится один раз (рис. 1, а). Но, если внести в алгоритм ошибки – заменить в первом условии and на or, а во втором X > 1 на X < 1 (рис. 1, б), ни одна ошибка не будет обнаружена (см. табл. 1).
Кроме того путь abd вообще не будет охвачен тестом и, если в нем есть ошибка, она также не будет обнаружена. В табл. 1 ожидаемый результат определяется по блок-схеме на рис. 1-а, а фактический по рис. 1-б.
Как видно из этой таблицы, ни одна из внесенных в алгоритм ошибок не будет обнаружена.
2.2. Метод покрытия решений (покрытия переходов)
Согласно методу покрытия решений каждое направление перехода должно быть реализовано, по крайней мере, один раз. Этот метод включает в себя критерий покрытия операторов, т.к. при выполнении всех направлений переходов выполнятся все операторы, находящиеся на этих направлениях.
Для программы приведенной на рис. 1 покрытие решений может быть выполнено двумя тестами, покрывающими пути , либо . Для этого выберем следующие исходные данные: – в первом случае и – во втором. Однако путь, где X не меняется, будет проверен с вероятностью 50%: если во втором условии вместо условия X > 1 записано X < 1, то ошибка не будет обнаружена двумя тестами.
Результаты тестирования приведены в табл. 2.
2.3. Метод покрытия условий
Этот метод может дать лучшие результаты по сравнению с предыдущими. В соответствии с методом покрытия условий записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении выполнялись, по крайней мере, один раз.
а) A=2, B=0, X=4 ace
б) A=1, B=1, X=0 abd
Результаты тестирования приведены в табл. 3.
2.4. Метод покрытия решений/условий
Критерий покрытия решений/условий требует такого достаточного набора тестов, чтобы все возможные результаты каждого условия выполнялись по крайней мере один раз, все результаты каждого решения выполнялись по крайней мере один раз и, кроме того, каждой точке входа передавалось управление по крайней мере один раз.
- не всегда можно проверить все условия;
- невозможно проверить условия, которые скрыты другими условиями;
- недостаточная чувствительность к ошибкам в логических выражениях.
Так в рассматриваемом примере два теста метода покрытия условий
а) A=2, B=0, X=4 ace
б) A=1, B=1, X=0 abd
отвечают и критерию покрытия решений/условий. Это является следствием того, что одни условия приведенных решений скрывают другие условия в этих решениях. Так, если условие А>1 будет ложным, транслятор может не проверять условия В=0, поскольку при любом результате условия В=0, результат решения ((А>1)1, B=0.
ОПЕРАТОРЫ. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С ЧИСЛАМИ В C# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | Урок # 8
Для того чтобы протестировать эти комбинации, необязательно использовать все 8 тестов. Фактически они могут быть покрыты четырьмя тестами:
5 способов решения квадратного уравнения ➜ Как решать квадратные уравнения?
Источник: studfile.net
Найти корни квадратного уравнения — C# (187725)
Помогите с решением вопросов для экзамена. Спасибо! Дано квадратное уравнение ax^2+bx+c=0, где a,b,c – действительные числа. Выяснить обладает ли оно действительными корнями, и если да, то – найти их. В противном случае выдать сообщение об отсутствии действительных корней.
Код к задаче: «Найти корни квадратного уравнения»
Листинг программы
using System; class Program < static void Main ( string [ ] args ) < double a, b, c; Console.WriteLine («Введите a» ); a = double.Parse ( Console.ReadLine ( ) ); Console.WriteLine ( «Введите b» ); b = double.Parse ( Console.ReadLine ( ) ); Console.WriteLine ( «Введите c» ); c = double.Parse ( Console.ReadLine ( ) ); double d = b * b — 4 * a * c; if ( d >= 0 ) < double x1 = ( -b + Math.Sqrt ( d ) ) / ( 2 * a ); double x2 = ( -b — Math.Sqrt ( d ) ) / ( 2 * a ); Console.WriteLine ( «x1 = » + x1 ); Console.WriteLine ( «x2 = » + x2 ); >else < Console.WriteLine (» Уравнение не имеет корней» ); >Console.ReadKey ( ); > >
Источник: studassistent.ru
Разработать программу решения уравнения где a b c любые вещественные числа
Нужно написать программу решения квадратных уравнений, где a, b, c — любые вещественные числа.
Итого я написал:
#include #include #include int main(int argc, char* argv[]) < double a,b,c,x,D; printf(«Vvedite chisla n»); scanf(«%Lf»,a); scanf(«%Lf»,b); scanf(«%Lf»,c); D=b*b+4*a*c; if(D>0) < x=(-1*b-D)/2*a; printf(«nOtveti: %Lf», x); x=(-1*b+D)/2*a; printf(» %Lfn», x); >else if(D=0) < x=(-1*b)/2*a; printf(» %Lfn», x); >return 0; >
Но, почему то при вводе чисел программа вылетает. (пишет ошибку)
В чём проблема?
Регистрация: 19.12.2008
Сообщений: 5,788
scanf(«%Lf», scanf(«%Lf», scanf(«%Lf»,
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.
___________________________________ ___________________________________ _______
[=Правила форума=] _____ [Поиск] _____ [Литература по С++] ____ [Литература. Паскаль]
Пользователь
Регистрация: 06.05.2009
Сообщений: 10
Чего-то я намудрил. Какие-то ответы странные получаются…
Регистрация: 19.12.2008
Сообщений: 5,788
Угу.. Намудрили
#include #include #include using namespace std; int main(int argc, char* argv[]) < double a,b,c,x,D; printf(«Vvedite chisla n»); scanf(«%Lf», scanf(«%Lf», scanf(«%Lf», D=b*b-4*a*c; if(D>0) < x=(-b-sqrt(D))/(2*a); printf(«nOtveti: %Lf», x); x=(-b+sqrt(D))/(2*a); printf(» %Lfn», x); > else if(D=0) < x=(-b)/2*a; printf(» %Lfn», x); >getch(); return 0; >
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.
___________________________________ ___________________________________ _______
[=Правила форума=] _____ [Поиск] _____ [Литература по С++] ____ [Литература. Паскаль]
Источник: www.programmersforum.ru