stringtranslate.com

Tácticas de pruebas de software

En este artículo se analiza un conjunto de tácticas útiles en las pruebas de software . Se pretende que sea una lista completa de enfoques tácticos para el control de calidad del software (conocido más comúnmente como control de calidad (tradicionalmente llamado por el acrónimo "QA")) y la aplicación general del método de prueba (generalmente llamado simplemente "prueba" o, a veces, "prueba de desarrollador").

Prueba de instalación

Una prueba de instalación garantiza que el sistema esté instalado correctamente y funcione en el hardware real del cliente.

El enfoque de la caja

Los métodos de prueba de software se dividen tradicionalmente en pruebas de caja blanca y de caja negra. Estos dos enfoques se utilizan para describir el punto de vista que adopta un ingeniero de pruebas al diseñar casos de prueba.

Prueba de caja blanca

Las pruebas de caja blanca (también conocidas como pruebas de caja transparente, pruebas de caja de vidrio, pruebas de caja transparente y pruebas estructurales, mediante la observación del código fuente) prueban las estructuras internas o el funcionamiento de un programa, en contraposición a la funcionalidad expuesta al usuario final. En las pruebas de caja blanca, se utiliza una perspectiva interna del sistema, así como habilidades de programación, para diseñar casos de prueba. El evaluador elige entradas para practicar rutas a través del código y determinar las salidas apropiadas. Esto es análogo a probar nodos en un circuito, por ejemplo, pruebas en circuito (ICT).

Si bien las pruebas de caja blanca se pueden aplicar en los niveles de unidad , integración y sistema del proceso de prueba de software, generalmente se realizan en el nivel de unidad. Pueden probar rutas dentro de una unidad, rutas entre unidades durante la integración y entre subsistemas durante una prueba a nivel de sistema. Si bien este método de diseño de pruebas puede descubrir muchos errores o problemas, es posible que no detecte partes no implementadas de la especificación o requisitos faltantes.

Las técnicas utilizadas en las pruebas de caja blanca incluyen:

Las herramientas de cobertura de código pueden evaluar la integridad de un conjunto de pruebas creado con cualquier método, incluidas las pruebas de caja negra. Esto permite al equipo de software examinar partes de un sistema que rara vez se prueban y garantiza que se hayan probado los puntos de función más importantes. [1] [ ¿ Fuente poco confiable? ] La cobertura de código como métrica de software se puede informar como un porcentaje para:

  • Cobertura de funciones , que informa sobre las funciones ejecutadas
  • Cobertura de declaración , que informa sobre la cantidad de líneas ejecutadas para completar la prueba.
  • Cobertura de decisión , que informa si se han ejecutado tanto la rama Verdadera como la Falso de una prueba determinada.

La cobertura del 100 % de las declaraciones garantiza que todas las rutas o ramas del código (en términos de flujo de control ) se ejecuten al menos una vez. Esto es útil para garantizar una funcionalidad correcta, pero no es suficiente, ya que el mismo código puede procesar distintas entradas de manera correcta o incorrecta.

Prueba de caja negra

Diagrama de caja negra

Las pruebas de caja negra tratan el software como una "caja negra", examinando la funcionalidad sin ningún conocimiento de la implementación interna, sin ver el código fuente. Los evaluadores solo son conscientes de lo que se supone que debe hacer el software, no de cómo lo hace. [2] Los métodos de prueba de caja negra incluyen: partición de equivalencia , análisis de valores límite , prueba de todos los pares , tablas de transición de estados , prueba de tabla de decisiones , prueba de fuzz , prueba basada en modelos , prueba de casos de uso , prueba exploratoria y prueba basada en especificaciones.

Las pruebas basadas en especificaciones tienen como objetivo probar la funcionalidad del software de acuerdo con los requisitos aplicables. [3] Este nivel de pruebas generalmente requiere que se proporcionen casos de prueba exhaustivos al evaluador, quien luego puede simplemente verificar que para una entrada dada, el valor de salida (o comportamiento), "es" o "no es" el mismo que el valor esperado especificado en el caso de prueba. Los casos de prueba se construyen en torno a especificaciones y requisitos, es decir, lo que se supone que debe hacer la aplicación. Utiliza descripciones externas del software, incluidas especificaciones, requisitos y diseños para derivar casos de prueba. Estas pruebas pueden ser funcionales o no funcionales , aunque generalmente funcionales.

Las pruebas basadas en especificaciones pueden ser necesarias para garantizar una funcionalidad correcta, pero son insuficientes para protegerse contra situaciones complejas o de alto riesgo. [4]

Una ventaja de la técnica de caja negra es que no se requieren conocimientos de programación. Independientemente de los sesgos que puedan tener los programadores, es probable que el evaluador tenga un conjunto diferente y pueda enfatizar diferentes áreas de funcionalidad. Por otro lado, se ha dicho que las pruebas de caja negra son "como un paseo por un laberinto oscuro sin una linterna". [5] Debido a que no examinan el código fuente, hay situaciones en las que un evaluador escribe muchos casos de prueba para verificar algo que podría haberse probado con un solo caso de prueba, o deja algunas partes del programa sin probar.

Este método de prueba se puede aplicar a todos los niveles de pruebas de software: unitario , de integración , de sistema y de aceptación . Por lo general, comprende la mayoría de las pruebas, si no todas, de los niveles superiores, pero también puede dominar las pruebas unitarias.

Prueba visual

El objetivo de las pruebas visuales es proporcionar a los desarrolladores la capacidad de examinar lo que estaba sucediendo en el momento de la falla del software presentando los datos de tal manera que el desarrollador pueda encontrar fácilmente la información que necesita y la información se exprese con claridad. [6] [7]

En el centro de las pruebas visuales está la idea de que mostrarle a alguien un problema (o un fallo de prueba), en lugar de simplemente describirlo, aumenta enormemente la claridad y la comprensión. Por lo tanto, las pruebas visuales requieren la grabación de todo el proceso de prueba, capturando todo lo que ocurre en el sistema de prueba en formato de video. Los videos de salida se complementan con la entrada en tiempo real del probador a través de una cámara web con imagen en imagen y comentarios de audio de micrófonos.

Las pruebas visuales ofrecen una serie de ventajas. La calidad de la comunicación aumenta drásticamente porque los evaluadores pueden mostrar el problema (y los eventos que lo provocaron) al desarrollador en lugar de simplemente describirlo y, en muchos casos, ya no será necesario replicar los errores de las pruebas. El desarrollador tendrá todas las pruebas que necesite de un error de prueba y podrá centrarse en la causa del fallo y en cómo solucionarlo.

Las pruebas visuales son particularmente adecuadas para entornos que implementan métodos ágiles en el desarrollo de software, ya que los métodos ágiles requieren una mayor comunicación entre evaluadores y desarrolladores y colaboración dentro de equipos pequeños. [ cita requerida ]

Las pruebas ad hoc y exploratorias son metodologías importantes para verificar la integridad del software, ya que requieren menos tiempo de preparación para su implementación y, al mismo tiempo, los errores importantes se pueden encontrar rápidamente. En las pruebas ad hoc, donde las pruebas se realizan de manera improvisada, la capacidad de una herramienta de prueba para registrar visualmente todo lo que ocurre en un sistema se vuelve muy importante para documentar los pasos que se tomaron para descubrir el error. [ aclaración necesaria ] [ cita necesaria ]

Las pruebas visuales están ganando reconocimiento en la aceptación del cliente y en las pruebas de usabilidad , porque la prueba puede ser utilizada por muchas personas involucradas en el proceso de desarrollo. [ cita requerida ] Para el cliente, resulta fácil proporcionar informes de errores detallados y comentarios, y para los usuarios del programa, las pruebas visuales pueden registrar las acciones del usuario en la pantalla, así como su voz e imagen, para proporcionar una imagen completa en el momento de la falla del software para los desarrolladores.

Prueba de caja gris

Las pruebas de caja gris (en inglés, gray-box testing) implican tener conocimiento de las estructuras de datos internas y los algoritmos con el fin de diseñar pruebas, mientras se ejecutan esas pruebas a nivel de usuario o de caja negra. No se requiere que el evaluador tenga acceso total al código fuente del software. [2] La manipulación de los datos de entrada y el formateo de la salida no se califican como pruebas de caja gris, porque la entrada y la salida están claramente fuera de la "caja negra" que llamamos el sistema bajo prueba. Esta distinción es particularmente importante cuando se realizan pruebas de integración entre dos módulos de código escritos por dos desarrolladores diferentes, donde solo las interfaces están expuestas para la prueba.

Sin embargo, las pruebas que requieren modificar un repositorio de datos de back-end, como una base de datos o un archivo de registro, sí califican como pruebas de caja gris, ya que el usuario normalmente no podría cambiar el repositorio de datos en operaciones de producción normales. [ cita requerida ] Las pruebas de caja gris también pueden incluir ingeniería inversa para determinar, por ejemplo, valores límite o mensajes de error.

Al conocer los conceptos subyacentes de cómo funciona el software, el evaluador toma decisiones de prueba mejor informadas mientras prueba el software desde afuera. Por lo general, a un evaluador de caja gris se le permitirá configurar un entorno de prueba aislado con actividades como la inicialización de una base de datos . El evaluador puede observar el estado del producto que se está probando después de realizar ciertas acciones, como ejecutar sentencias SQL contra la base de datos y luego ejecutar consultas para asegurarse de que se hayan reflejado los cambios esperados. Las pruebas de caja gris implementan escenarios de prueba inteligentes, basados ​​en información limitada. Esto se aplicará particularmente al manejo de tipos de datos, manejo de excepciones , etc. [8]

Pruebas automatizadas

Muchos grupos de programación recurren cada vez más a las pruebas automatizadas , especialmente los grupos que utilizan el desarrollo basado en pruebas . Existen muchos marcos en los que se pueden escribir pruebas, y el software de integración continua ejecutará pruebas automáticamente cada vez que se introduzca código en un sistema de control de versiones .

Si bien la automatización no puede reproducir todo lo que un ser humano puede hacer (y todas las formas en que piensa hacerlo), puede ser muy útil para las pruebas de regresión. Sin embargo, requiere un conjunto de pruebas bien desarrollado de scripts de prueba para que sea realmente útil.

Herramientas de prueba automatizadas

Las herramientas de prueba y depuradores pueden ayudar significativamente a la detección de fallas y pruebas de programas . Las herramientas de prueba y depuración incluyen características como:

Algunas de estas características pueden incorporarse en una única herramienta compuesta o en un entorno de desarrollo integrado (IDE).

Abstracción de capas de aplicación aplicadas a pruebas automatizadas

En general, se reconocen cuatro niveles de pruebas: pruebas unitarias, pruebas de integración, pruebas de interfaz de componentes y pruebas de sistema. Las pruebas se agrupan con frecuencia según el lugar en el que se agregan en el proceso de desarrollo de software o según el nivel de especificidad de la prueba. Los principales niveles durante el proceso de desarrollo, tal como se define en la guía SWEBOK, son las pruebas unitarias, de integración y de sistema, que se distinguen por el objetivo de la prueba sin implicar un modelo de proceso específico. [9] Otros niveles de prueba se clasifican según el objetivo de la prueba. [9]

Existen dos niveles diferentes de pruebas desde la perspectiva de los clientes: pruebas de bajo nivel (LLT) y pruebas de alto nivel (HLT). Las LLT son un grupo de pruebas para componentes de diferentes niveles de una aplicación o producto de software. Las HLT son un grupo de pruebas para toda la aplicación o producto de software. [ cita requerida ]

Pruebas unitarias

Las pruebas unitarias se refieren a pruebas que verifican la funcionalidad de una sección específica de código, generalmente a nivel de función. En un entorno orientado a objetos , esto suele ser a nivel de clase, y las pruebas unitarias mínimas incluyen los constructores y destructores. [10]

Este tipo de pruebas suelen ser escritas por los desarrolladores mientras trabajan en el código (estilo caja blanca), para garantizar que la función específica funcione como se espera. Una función puede tener múltiples pruebas, para detectar casos extremos u otras ramificaciones en el código. Las pruebas unitarias por sí solas no pueden verificar la funcionalidad de un software, sino que se utilizan para garantizar que los componentes básicos del software funcionen de forma independiente entre sí.

Las pruebas unitarias son un proceso de desarrollo de software que implica la aplicación sincronizada de un amplio espectro de estrategias de prevención y detección de defectos con el fin de reducir los riesgos, el tiempo y los costos del desarrollo de software. Las realiza el desarrollador o ingeniero de software durante la fase de construcción del ciclo de vida del desarrollo de software. En lugar de reemplazar los enfoques tradicionales de control de calidad, los amplía. Las pruebas unitarias tienen como objetivo eliminar los errores de construcción antes de que el código pase a control de calidad; esta estrategia tiene como objetivo aumentar la calidad del software resultante, así como la eficiencia del proceso general de desarrollo y control de calidad.

Dependiendo de las expectativas de la organización para el desarrollo de software, las pruebas unitarias pueden incluir análisis de código estático , análisis de flujo de datos , análisis de métricas, revisiones de código por pares, análisis de cobertura de código y otras prácticas de verificación de software .

Pruebas de integración

Las pruebas de integración son cualquier tipo de prueba de software que busca verificar las interfaces entre componentes frente a un diseño de software. Los componentes de software pueden integrarse de forma iterativa o todos juntos ("big bang"). Normalmente, la primera opción se considera una mejor práctica, ya que permite localizar y solucionar problemas de interfaz más rápidamente.

Las pruebas de integración sirven para exponer defectos en las interfaces y la interacción entre los componentes integrados (módulos). Se van integrando y probando grupos cada vez más grandes de componentes de software probados, correspondientes a elementos del diseño arquitectónico, hasta que el software funciona como un sistema. [11]

Prueba de interfaz de componentes

La práctica de las pruebas de interfaz de componentes se puede utilizar para verificar el manejo de los datos que pasan entre varias unidades o componentes del subsistema, más allá de las pruebas de integración completa entre esas unidades. [12] [13] Los datos que se pasan pueden considerarse como "paquetes de mensajes" y se puede verificar el rango o los tipos de datos, para los datos generados desde una unidad, y probar su validez antes de pasarlos a otra unidad. Una opción para las pruebas de interfaz es mantener un archivo de registro separado de los elementos de datos que se pasan, a menudo con una marca de tiempo registrada para permitir el análisis de miles de casos de datos pasados ​​entre unidades durante días o semanas. Las pruebas pueden incluir la verificación del manejo de algunos valores de datos extremos mientras que otras variables de interfaz se pasan como valores normales. [12] Los valores de datos inusuales en una interfaz pueden ayudar a explicar el rendimiento inesperado en la siguiente unidad. Las pruebas de interfaz de componentes son una variación de las pruebas de caja negra , [13] con el enfoque en los valores de datos más allá de las acciones relacionadas de un componente del subsistema.

Prueba del sistema

Las pruebas del sistema prueban un sistema completamente integrado para verificar que el sistema cumple con sus requisitos. [14] Por ejemplo, una prueba del sistema podría implicar probar una interfaz de inicio de sesión, luego crear y editar una entrada, además de enviar o imprimir resultados, seguido del procesamiento resumido o la eliminación (o archivo) de las entradas y luego cerrar la sesión.

Pruebas de aceptación operativa

La aceptación operativa se utiliza para llevar a cabo la preparación operativa (prelanzamiento) de un producto, servicio o sistema como parte de un sistema de gestión de calidad . La OAT es un tipo común de prueba de software no funcional, que se utiliza principalmente en proyectos de desarrollo y mantenimiento de software . Este tipo de prueba se centra en la preparación operativa del sistema que se va a respaldar y/o a formar parte del entorno de producción. Por lo tanto, también se conoce como prueba de preparación operativa (ORT) o prueba de preparación y garantía de operaciones (OR&A). Las pruebas funcionales dentro de la OAT se limitan a aquellas pruebas que se requieren para verificar los aspectos no funcionales del sistema.

Además, las pruebas de software deben garantizar que la portabilidad del sistema, además de funcionar como se espera, no dañe o corrompa parcialmente su entorno operativo ni provoque que otros procesos dentro de ese entorno dejen de funcionar. [15]

Prueba de compatibilidad

Una causa común de falla de software (real o percibida) es la falta de compatibilidad con otro software de aplicación , sistemas operativos (o versiones de sistemas operativos , antiguas o nuevas) o entornos de destino que difieren en gran medida del original (como una aplicación de terminal o GUI destinada a ejecutarse en el escritorio que ahora se requiere que se convierta en una aplicación web , que debe mostrarse en un navegador web ). Por ejemplo, en el caso de una falta de compatibilidad con versiones anteriores , esto puede ocurrir porque los programadores desarrollan y prueban software solo en la última versión del entorno de destino, que puede que no todos los usuarios estén ejecutando. Esto da como resultado la consecuencia no deseada de que el último trabajo puede no funcionar en versiones anteriores del entorno de destino o en hardware más antiguo que las versiones anteriores del entorno de destino eran capaces de usar. A veces, estos problemas se pueden solucionar abstrayendo de manera proactiva la funcionalidad del sistema operativo en un módulo o biblioteca de programa independiente .

Pruebas de humo y de cordura

Las pruebas de cordura determinan si es razonable continuar con más pruebas.

Las pruebas de humo consisten en intentos mínimos de operar el software, diseñados para determinar si existen problemas básicos que impidan su funcionamiento. Estas pruebas se pueden utilizar como prueba de verificación de la compilación .

Prueba de regresión

Las pruebas de regresión se centran en encontrar defectos después de que se haya producido un cambio importante en el código. En concreto, buscan descubrir regresiones de software , como características degradadas o perdidas, incluidos errores antiguos que han vuelto a aparecer. Estas regresiones se producen siempre que la funcionalidad del software que antes funcionaba correctamente deja de hacerlo como estaba previsto. Normalmente, las regresiones se producen como consecuencia no intencionada de los cambios en el programa, cuando la parte del software recién desarrollada choca con el código que ya existía. Los métodos habituales de pruebas de regresión incluyen volver a ejecutar conjuntos de casos de prueba anteriores y comprobar si han vuelto a aparecer los fallos corregidos anteriormente. La profundidad de las pruebas depende de la fase del proceso de lanzamiento y del riesgo de las características añadidas. Pueden ser completas, en el caso de los cambios añadidos al final del lanzamiento o considerados arriesgados, o muy superficiales, consistentes en pruebas positivas de cada característica, si los cambios se producen al principio del lanzamiento o se consideran de bajo riesgo. Las pruebas de regresión suelen ser el mayor esfuerzo de prueba en el desarrollo de software comercial, [16] debido a la verificación de numerosos detalles en las características de software anteriores, e incluso se puede desarrollar software nuevo mientras se utilizan algunos casos de prueba antiguos para probar partes del nuevo diseño para garantizar que la funcionalidad anterior aún sea compatible.

Prueba de aceptación

Las pruebas de aceptación pueden significar una de dos cosas:

  1. Una prueba de humo se utiliza como prueba de aceptación antes de introducir una nueva compilación en el proceso de prueba principal, es decir, antes de la integración o la regresión .
  2. Las pruebas de aceptación que realiza el cliente, generalmente en su entorno de laboratorio y en su propio hardware, se conocen como pruebas de aceptación del usuario (UAT). Las pruebas de aceptación pueden realizarse como parte del proceso de transferencia entre dos fases de desarrollo. [ cita requerida ]

Prueba alfa

Las pruebas alfa son pruebas operativas simuladas o reales que realizan usuarios o clientes potenciales o un equipo de pruebas independiente en las instalaciones de los desarrolladores. Las pruebas alfa suelen emplearse para software comercial como una forma de prueba de aceptación interna, antes de que el software pase a la fase de prueba beta. [17]

Prueba beta

Las pruebas beta se realizan después de las pruebas alfa y pueden considerarse una forma de prueba de aceptación de usuarios externos . Las versiones del software, conocidas como versiones beta , se lanzan a una audiencia limitada fuera del equipo de programación, conocida como probadores beta. El software se lanza a grupos de personas para que las pruebas posteriores puedan garantizar que el producto tenga pocas fallas o errores . Las versiones beta se pueden poner a disposición del público abierto para aumentar el campo de comentarios a un número máximo de futuros usuarios y para entregar valor antes, durante un período de tiempo extendido o incluso indefinido ( beta perpetua ). [ cita requerida ]

Pruebas funcionales y no funcionales

Las pruebas funcionales se refieren a actividades que verifican una acción o función específica del código. Por lo general, se encuentran en la documentación de requisitos del código, aunque algunas metodologías de desarrollo funcionan a partir de casos de uso o historias de usuario. Las pruebas funcionales tienden a responder a la pregunta "¿puede el usuario hacer esto?" o "¿funciona esta característica en particular?".

Las pruebas no funcionales se refieren a aspectos del software que pueden no estar relacionados con una función específica o una acción del usuario, como la escalabilidad u otro rendimiento , el comportamiento bajo ciertas restricciones o la seguridad . Las pruebas determinarán el punto de ruptura, el punto en el que los extremos de escalabilidad o rendimiento conducen a una ejecución inestable. Los requisitos no funcionales tienden a ser aquellos que reflejan la calidad del producto, particularmente en el contexto de la perspectiva de idoneidad de sus usuarios.

Prueba continua

Las pruebas continuas son el proceso de ejecutar pruebas automatizadas como parte del proceso de entrega de software para obtener retroalimentación inmediata sobre los riesgos comerciales asociados con un candidato a lanzamiento de software. [18] [19] Las pruebas continuas incluyen la validación tanto de los requisitos funcionales como de los no funcionales ; el alcance de las pruebas se extiende desde la validación de los requisitos de abajo hacia arriba o las historias de usuario hasta la evaluación de los requisitos del sistema asociados con los objetivos comerciales generales. [20] [21] [22]

Pruebas destructivas

Las pruebas destructivas intentan provocar que el software o un subsistema falle. Verifican que el software funcione correctamente incluso cuando recibe entradas no válidas o inesperadas, estableciendo así la solidez de las rutinas de validación de entradas y gestión de errores. [ cita requerida ] La inyección de fallas de software , en forma de fuzzing , es un ejemplo de prueba de fallas. Varias herramientas comerciales de prueba no funcional están vinculadas desde la página de inyección de fallas de software ; también hay numerosas herramientas de software libre y de código abierto disponibles que realizan pruebas destructivas.

Pruebas de rendimiento de software

Las pruebas de rendimiento se realizan generalmente para determinar el rendimiento de un sistema o subsistema en términos de capacidad de respuesta y estabilidad bajo una carga de trabajo particular. También pueden servir para investigar, medir, validar o verificar otros atributos de calidad del sistema, como la escalabilidad, la confiabilidad y el uso de recursos.

Las pruebas de carga se ocupan principalmente de probar que el sistema puede seguir funcionando bajo una carga específica, ya sea grandes cantidades de datos o una gran cantidad de usuarios . Esto generalmente se conoce como escalabilidad del software . La actividad de prueba de carga relacionada, cuando se realiza como una actividad no funcional, a menudo se conoce como prueba de resistencia . Las pruebas de volumen son una forma de probar las funciones del software incluso cuando ciertos componentes (por ejemplo, un archivo o una base de datos) aumentan radicalmente de tamaño. Las pruebas de estrés son una forma de probar la confiabilidad bajo cargas de trabajo inesperadas o poco frecuentes. Las pruebas de estabilidad (a menudo denominadas pruebas de carga o resistencia) verifican si el software puede funcionar bien de manera continua durante un período aceptable o por encima de él.

Existe poco consenso sobre cuáles son los objetivos específicos de las pruebas de rendimiento. Los términos pruebas de carga, pruebas de rendimiento, pruebas de escalabilidad y pruebas de volumen suelen usarse indistintamente.

Los sistemas de software en tiempo real tienen restricciones de tiempo estrictas. Para comprobar si se cumplen las restricciones de tiempo, se utilizan pruebas en tiempo real .

Pruebas de usabilidad

Las pruebas de usabilidad sirven para comprobar si la interfaz de usuario es fácil de usar y comprender. Se centran principalmente en el uso de la aplicación.

Pruebas de accesibilidad

Las pruebas de accesibilidad pueden incluir el cumplimiento de estándares como:

Pruebas de seguridad

Las pruebas de seguridad son esenciales para el software que procesa datos confidenciales para evitar la intrusión de piratas informáticos en el sistema .

La Organización Internacional de Normalización (ISO) lo define como un "tipo de prueba realizada para evaluar el grado en el que un elemento de prueba y los datos e información asociados están protegidos de modo que personas o sistemas no autorizados no puedan usarlos, leerlos o modificarlos, y a las personas o sistemas autorizados no se les niegue el acceso a ellos". [23]

Pruebas de internacionalización y localización

La capacidad general de un software para ser internacionalizado y localizado se puede probar automáticamente sin una traducción real, mediante el uso de pseudolocalización . Esto verificará que la aplicación aún funciona, incluso después de haber sido traducida a un nuevo idioma o adaptada a una nueva cultura (como diferentes monedas o zonas horarias). [24]

También es necesario probar la traducción real a los idiomas humanos. Entre los posibles errores de localización se incluyen los siguientes:

Pruebas de desarrollo

Las "pruebas de desarrollo" son un proceso de desarrollo de software que implica la aplicación sincronizada de un amplio espectro de estrategias de prevención y detección de defectos para reducir los riesgos, el tiempo y los costos del desarrollo de software. Las lleva a cabo el desarrollador o el ingeniero de software durante la fase de construcción del ciclo de vida del desarrollo de software. En lugar de reemplazar los enfoques tradicionales de control de calidad, los amplía. Las pruebas de desarrollo tienen como objetivo eliminar los errores de construcción antes de que el código pase a control de calidad; esta estrategia tiene como objetivo aumentar la calidad del software resultante, así como la eficiencia del proceso general de desarrollo y control de calidad.

Dependiendo de las expectativas de la organización para el desarrollo de software, las pruebas de desarrollo pueden incluir análisis de código estático , análisis de flujo de datos, análisis de métricas, revisiones de código por pares, pruebas unitarias, análisis de cobertura de código, trazabilidad y otras prácticas de verificación de software.

Prueba A/B

Las pruebas A/B son básicamente una comparación de dos resultados, generalmente cuando solo ha cambiado una variable: se ejecuta una prueba, se cambia una cosa, se vuelve a ejecutar la prueba y se comparan los resultados. Esto es más útil en situaciones de menor escala, pero muy útil para ajustar cualquier programa. En proyectos más complejos, se pueden realizar pruebas multivariantes.

Pruebas concurrentes

En las pruebas concurrentes, el enfoque se centra en el rendimiento mientras se ejecuta de forma continua con una entrada normal y en condiciones operativas normales, a diferencia de las pruebas de estrés o pruebas de fuzz. Las fugas de memoria, así como los fallos básicos, son más fáciles de detectar con este método.

Prueba de conformidad o prueba de tipo

En las pruebas de software, las pruebas de conformidad verifican que un producto funciona de acuerdo con los estándares especificados. Los compiladores, por ejemplo, se someten a pruebas exhaustivas para determinar si cumplen con el estándar reconocido para ese lenguaje.

Referencias

  1. ^ Introducción, Análisis de cobertura de código, Steve Cornett
  2. ^ ab Patton, Ron (2006). Pruebas de software (2.ª ed.). Sams Publishing (publicado el 26 de julio de 2005). ISBN 978-0672327988.[ página necesaria ]
  3. ^ Laycock, GT (1993). "La teoría y la práctica de las pruebas de software basadas en especificaciones". Departamento de Ciencias de la Computación, Universidad de Sheffield, Reino Unido. Archivado desde el original ( PostScript ) el 2007-02-14 . Consultado el 2008-02-13 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  4. ^ Bach, James (junio de 1999). "Pruebas basadas en riesgos y requisitos" (PDF) . Computer . 32 (6): 113–114 . Consultado el 19 de agosto de 2008 .
  5. ^ Savenkov, Roman (2008). Cómo convertirse en probador de software . Roman Savenkov Consulting. pág. 159. ISBN 978-0-615-23372-7.
  6. ^ "Pruebas visuales de software – Universidad Tecnológica de Helsinki" (PDF) . Consultado el 13 de enero de 2012 .
  7. ^ "Artículo sobre pruebas visuales en Test Magazine". Testmagazine.co.uk. Archivado desde el original el 24 de julio de 2012. Consultado el 13 de enero de 2012 .
  8. ^ "Herramientas de prueba SOA para técnicas de prueba SOA de caja negra, blanca y gris". Crosschecknet.com . Consultado el 10 de diciembre de 2012 .
  9. ^ ab "Guía de SWEBOK – Capítulo 5". Computer.org . Consultado el 13 de enero de 2012 .
  10. ^ Binder, Robert V. (1999). Pruebas de sistemas orientados a objetos: objetos, patrones y herramientas. Addison-Wesley Professional. pág. 45. ISBN 0-201-80938-9.
  11. ^ Beizer, Boris (1990). Técnicas de prueba de software (segunda edición). Nueva York: Van Nostrand Reinhold. pp. 21, 430. ISBN 0-442-20672-0.
  12. ^ ab Clapp, Judith A. (1995). Control de calidad de software, análisis de errores y pruebas. p. 313. ISBN 0815513631.
  13. ^ ab Mathur, Aditya P. (2008). Fundamentos de las pruebas de software. Universidad de Purdue. p. 18. ISBN 978-8131716601.
  14. ^ IEEE (1990). Diccionario informático estándar IEEE: una recopilación de glosarios informáticos estándar IEEE . Nueva York: IEEE. ISBN 1-55937-079-3.
  15. ^ Documento técnico: Aceptación operativa: una aplicación de la norma de pruebas de software ISO 29119. Mayo de 2015 Anthony Woods, Capgemini
  16. ^ Paul Ammann; Jeff Offutt (2008). Introducción a las pruebas de software. pág. 215 de 322 páginas.
  17. ^ van Veenendaal, Erik. "Glosario estándar de términos utilizados en pruebas de software" . Consultado el 4 de enero de 2013 .
  18. ^ Parte del proceso: Por qué las pruebas continuas son esenciales, por Adam Auerbach, TechWell Insights, agosto de 2015
  19. ^ La relación entre el riesgo y las pruebas continuas: una entrevista con Wayne Ariola, por Cameron Philipp-Edmonds, Stickyminds, diciembre de 2015
  20. ^ DevOps: ¿Está enviando errores a los clientes más rápidamente?, por Wayne Ariola y Cynthia Dunlop, PNSQC, octubre de 2015
  21. ^ DevOps y QA: ¿Cuál es el costo real de la calidad?, por Ericka Chickowski, DevOps.com, junio de 2015
  22. ^ Desplácese hacia la izquierda y priorice la calidad, por Adam Auerbach, TechWell Insights, octubre de 2014
  23. ^ ISO/IEC/IEEE 29119-1:2013 – Ingeniería de software y sistemas – Pruebas de software – Parte 1 – Conceptos y definiciones; Sección 4.38
  24. ^ "Globalización paso a paso: el enfoque de pruebas preparado para el mundo. Microsoft Developer Network". Msdn.microsoft.com . Consultado el 13 de enero de 2012 .

Enlaces externos