Considere un problema para la determinación de la naturaleza de las raíces de una ecuación cuadrática donde las entradas son 3 variables (a, b, c) y sus valores pueden ser del intervalo [0, 100]. La salida puede ser una de las siguientes dependiendo de los valores de las variables:
- No es una ecuación cuadrática,
- raíces reales,
- raíces imaginarias,
- raíces iguales
Nuestro objetivo es diseñar los casos de prueba de valor límite.
El análisis de valores límite es una técnica de prueba de software en la que las pruebas están diseñadas para incluir representantes de valores límite en un rango. Un análisis de valor límite tiene un total de 4*n+1 casos de prueba distintos , donde n es el número de variables en un problema.
Aquí tenemos que considerar las tres variables y diseñar todos los distintos casos de prueba posibles. Tendremos un total de 13 casos de prueba como n = 3.
- La ecuación cuadrática será del tipo: ax 2 +bx+c=0
- Las raíces son reales si (b 2 – 4ac) > 0
- Las raíces son imaginarias si (b 2 – 4ac) < 0
- Las raíces son iguales si (b 2 – 4ac) = 0
- La ecuación no es cuadrática si a = 0
¿Cómo diseñamos los casos de prueba?
Para cada variable consideramos a continuación 5 casos:
- un minuto = 0
- un min+1 = 1
- un nominal = 50
- a max-1 = 99
- un máximo = 100
Cuando estamos considerando estos 5 casos para una variable, el resto de las variables tienen los valores nominales, como en el caso anterior donde el valor de ‘a’ varía de 0 a 100, el valor de ‘b’ y ‘c’ será tomarse como el valor nominal o medio. De manera similar, cuando los valores de la variable ‘b’ cambian de 0 a 100, los valores de ‘a’ y ‘c’ serán nominales o promedio, es decir, 50.
Los posibles casos de prueba para la naturaleza de las raíces de una ecuación cuadrática en un análisis de valor límite pueden ser:
A continuación se muestra el programa que verifica los casos de prueba considerados en la tabla anterior. El programa toma entradas definidas por el usuario para que pueda verificar cualquiera de los casos de prueba mencionados anteriormente.
C++
// C++ program to check the nature of the roots #include <bits/stdc++.h> using namespace std; // BVA for nature of roots of a quadratic equation void nature_of_roots(int a, int b, int c) { // If a = 0, D/2a will yield exception // Hence it is not a valid Quadratic Equation if (a == 0) { cout << "Not a Quadratic Equation" << endl; return; } int D = b * b - 4 * a * c; // If D > 0, it will be Real Roots if (D > 0) { cout << "Real Roots" << endl; } // If D == 0, it will be Equal Roots else if (D == 0) { cout << "Equal Roots" << endl; } // If D < 0, it will be Imaginary Roots else { cout << "Imaginary Roots" << endl; } } // Function to check for all testcases void checkForAllTestCase() { cout << "Testcase" << "\ta\tb\tc\tActual Output" << endl; cout << endl; int a, b, c; int testcase = 1; while (testcase <= 13) { if (testcase == 1) { a = 0; b = 50; c = 50; } else if (testcase == 2) { a = 1; b = 50; c = 50; } else if (testcase == 3) { a = 50; b = 50; c = 50; } else if (testcase == 4) { a = 99; b = 50; c = 50; } else if (testcase == 5) { a = 100; b = 50; c = 50; } else if (testcase == 6) { a = 50; b = 0; c = 50; } else if (testcase == 7) { a = 50; b = 1; c = 50; } else if (testcase == 8) { a = 50; b = 99; c = 50; } else if (testcase == 9) { a = 50; b = 100; c = 50; } else if (testcase == 10) { a = 50; b = 50; c = 0; } else if (testcase == 11) { a = 50; b = 50; c = 1; } else if (testcase == 12) { a = 50; b = 50; c = 99; } else if (testcase == 13) { a = 50; b = 50; c = 100; } cout << "\t" << testcase << "\t" << a << "\t" << b << "\t" << c << "\t"; nature_of_roots(a, b, c); cout << endl; testcase++; } } // Driver Code int main() { checkForAllTestCase(); return 0; }
Java
// Java program to check the nature of the roots import java.util.*; class GFG { // BVA for nature of roots of a quadratic equation static void nature_of_roots(int a, int b, int c) { // If a = 0, D/2a will yield exception // Hence it is not a valid Quadratic Equation if (a == 0) { System.out.print("Not a Quadratic Equation" +"\n"); return; } int D = b * b - 4 * a * c; // If D > 0, it will be Real Roots if (D > 0) { System.out.print("Real Roots" +"\n"); } // If D == 0, it will be Equal Roots else if (D == 0) { System.out.print("Equal Roots" +"\n"); } // If D < 0, it will be Imaginary Roots else { System.out.print("Imaginary Roots" +"\n"); } } // Function to check for all testcases static void checkForAllTestCase() { System.out.print("Testcase" + "\ta\tb\tc\tActual Output" +"\n"); System.out.println(); int a, b, c; a = b = c = 0; int testcase = 1; while (testcase <= 13) { if (testcase == 1) { a = 0; b = 50; c = 50; } else if (testcase == 2) { a = 1; b = 50; c = 50; } else if (testcase == 3) { a = 50; b = 50; c = 50; } else if (testcase == 4) { a = 99; b = 50; c = 50; } else if (testcase == 5) { a = 100; b = 50; c = 50; } else if (testcase == 6) { a = 50; b = 0; c = 50; } else if (testcase == 7) { a = 50; b = 1; c = 50; } else if (testcase == 8) { a = 50; b = 99; c = 50; } else if (testcase == 9) { a = 50; b = 100; c = 50; } else if (testcase == 10) { a = 50; b = 50; c = 0; } else if (testcase == 11) { a = 50; b = 50; c = 1; } else if (testcase == 12) { a = 50; b = 50; c = 99; } else if (testcase == 13) { a = 50; b = 50; c = 100; } System.out.print("\t" + testcase+ "\t" + a+ "\t" + b+ "\t" + c+ "\t"); nature_of_roots(a, b, c); System.out.println(); testcase++; } } // Driver Code public static void main(String[] args) { checkForAllTestCase(); } } // This code is contributed by 29AjayKumar
Python3
# Python3 program to check the nature of the roots # BVA for nature of roots of a quadratic equation def nature_of_roots(a, b, c): # If a = 0, D/2a will yield exception # Hence it is not a valid Quadratic Equation if (a == 0): print("Not a Quadratic Equation"); return; D = b * b - 4 * a * c; # If D > 0, it will be Real Roots if (D > 0): print("Real Roots"); # If D == 0, it will be Equal Roots elif(D == 0): print("Equal Roots"); # If D < 0, it will be Imaginary Roots else: print("Imaginary Roots"); # Function to check for all testcases def checkForAllTestCase(): print("Testcase\ta\tb\tc\tActual Output"); print(); a = b = c = 0; testcase = 1; while (testcase <= 13): if (testcase == 1): a = 0; b = 50; c = 50; elif(testcase == 2): a = 1; b = 50; c = 50; elif(testcase == 3): a = 50; b = 50; c = 50; elif(testcase == 4): a = 99; b = 50; c = 50; elif(testcase == 5): a = 100; b = 50; c = 50; elif(testcase == 6): a = 50; b = 0; c = 50; elif(testcase == 7): a = 50; b = 1; c = 50; elif(testcase == 8): a = 50; b = 99; c = 50; elif(testcase == 9): a = 50; b = 100; c = 50; elif(testcase == 10): a = 50; b = 50; c = 0; elif(testcase == 11): a = 50; b = 50; c = 1; elif(testcase == 12): a = 50; b = 50; c = 99; elif(testcase == 13): a = 50; b = 50; c = 100; print("\t" , testcase , "\t" , a , "\t" , b , "\t" , c , "\t", end=""); nature_of_roots(a, b, c); print(); testcase += 1; # Driver Code if __name__ == '__main__': checkForAllTestCase(); # This code is contributed by 29AjayKumar
C#
// C# program to check the nature of the roots using System; class GFG { // BVA for nature of roots of a quadratic equation static void nature_of_roots(int a, int b, int c) { // If a = 0, D/2a will yield exception // Hence it is not a valid Quadratic Equation if (a == 0) { Console.Write("Not a Quadratic Equation" +"\n"); return; } int D = b * b - 4 * a * c; // If D > 0, it will be Real Roots if (D > 0) { Console.Write("Real Roots" +"\n"); } // If D == 0, it will be Equal Roots else if (D == 0) { Console.Write("Equal Roots" +"\n"); } // If D < 0, it will be Imaginary Roots else { Console.Write("Imaginary Roots" +"\n"); } } // Function to check for all testcases static void checkForAllTestCase() { Console.Write("Testcase" + "\ta\tb\tc\tActual Output" +"\n"); Console.WriteLine(); int a, b, c; a = b = c = 0; int testcase = 1; while (testcase <= 13) { if (testcase == 1) { a = 0; b = 50; c = 50; } else if (testcase == 2) { a = 1; b = 50; c = 50; } else if (testcase == 3) { a = 50; b = 50; c = 50; } else if (testcase == 4) { a = 99; b = 50; c = 50; } else if (testcase == 5) { a = 100; b = 50; c = 50; } else if (testcase == 6) { a = 50; b = 0; c = 50; } else if (testcase == 7) { a = 50; b = 1; c = 50; } else if (testcase == 8) { a = 50; b = 99; c = 50; } else if (testcase == 9) { a = 50; b = 100; c = 50; } else if (testcase == 10) { a = 50; b = 50; c = 0; } else if (testcase == 11) { a = 50; b = 50; c = 1; } else if (testcase == 12) { a = 50; b = 50; c = 99; } else if (testcase == 13) { a = 50; b = 50; c = 100; } Console.Write("\t" + testcase+ "\t" + a+ "\t" + b+ "\t" + c+ "\t"); nature_of_roots(a, b, c); Console.WriteLine(); testcase++; } } // Driver Code public static void Main(String[] args) { checkForAllTestCase(); } } // This code is contributed by 29AjayKumar
Testcase a b c Actual Output 1 0 50 50 Not a Quadratic Equation 2 1 50 50 Real Roots 3 50 50 50 Imaginary Roots 4 99 50 50 Imaginary Roots 5 100 50 50 Imaginary Roots 6 50 0 50 Imaginary Roots 7 50 1 50 Imaginary Roots 8 50 99 50 Imaginary Roots 9 50 100 50 Equal Roots 10 50 50 0 Real Roots 11 50 50 1 Real Roots 12 50 50 99 Imaginary Roots 13 50 50 100 Imaginary Roots
Publicación traducida automáticamente
Artículo escrito por mishrakishan1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA