Análisis de valor límite: naturaleza de las raíces de una ecuación cuadrática

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
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *