Documente Academic
Documente Profesional
Documente Cultură
El Software y su evolucin
Durante los primeros aos de la era del computador, el software se contemplaba como un aadido, la creacin de este era un diseo artesanal artesanal" para el que existan pocos mtodos sistemticos sistemticos. El software se diseaba a medida para cada aplicacin y tenia una distribucin relativamente pequea. La mayora del software se desarrollaba y era utilizado por la misma p persona u organizacin. La misma persona lo escriba, lo ejecutaba y, g p , j si fallaba, lo depuraba. Debido a este entorno personalizado del software, el diseo era un proceso implcito, realizado en la mente de alguien y, la documentacin normalmente no exista.
El Software y su evolucin
Los primeros aos 1950 - 1965 La segunda era 1965 - 1975 Sistemas de tiempo Real Software a a medida Diseo implcito Procesos no documentados Software como producto Sistemas de gestin de Base de datos Mantenimiento i i del Software Incorporacin de inteligencia Acceso instantneo a instantneo datos Sistemas expertos Redes neuronales artificiales Inteligencia artificial La tercera era 1975 - 1985 La cuarta era 1985 -
Enfoque de Ingeniera
Usando un enfoque de ingeniera para desarrollo de software implica que: el proceso de desarrollo es bien conocido; los proyectos se planifican; ciclo de vida de los modelos son definidos; existen estndares para los productos y procesos; las mediciones se utilizan para evaluar productos y procesos de calidad calidad.
Enfoque de Ingeniera
La validacin y verificacin de los procesos desempean un papel clave en la determinacin de la calidad; l i los ingenieros ti i tienen una educacin d i adecuada, capacitacin y certificacin.
Enfoque de Ingeniera
Componentes de un proceso de ingeniera de software. El proceso d d de desarrollo d ll de software, como la mayora de los procesos de ingeniera, debe ser gestionado Es decir gestionado. decir, se debe disear, aplicar, evaluar, y mantenerse. Al igual que en otras disciplinas de la ingeniera, el d i i l desarrollo d ll de software es un proceso debe evolucionar de forma coherente y previsible previsible.
Testing
Una de las disciplinas de la ingeniera de software que participa, de madera transversal, durante todo el ciclo del d l software es el T ti ft l Testing que d t determina el nivel d i l i l de calidad que puede llegar a tener este. Aqu se deben efectuar unas medidas o pruebas que permitan comprobar el grado de cumplimiento respecto de las especificaciones iniciales del sistema sistema.
Testing
La necesidad de productos de software de alta calidad es lo que ha motivado a identificar y cuantificar los factores d calidad t l f t de lid d tales como l f ilid d d uso, la facilidad de comprobabilidad, mantenibilidad y fiabilidad. Las pruebas de software, testing o beta testing es un proceso usado para identificar posibles fallos de implementacin, calidad, implementacin calidad o usabilidad de un software software. Estas pruebas son llevadas a cabo por un Tester quien se encarga de realizar un anlisis crtico del producto en un entorno apartado al de produccin.
Objetivos de la revisin del software Detectar defectos en la lgica, funcin o implementacin. implementacin Verificar satisfaccin de requerimientos. q Asegurar cumplimiento de estndares. Fomentar uniformidad Hacer proyectos ms manejables.
Norma Iso
La ISO 9126 es un estndar internacional para la evaluacin del Software. El estndar est di idid en cuatro partes l t d t dividido t t las cuales di i l dirigen, respectivamente, lo siguiente: modelo de calidad, mtricas externas, mtricas internas y calidad en las mtricas de uso. Esta se centra en 6 puntos bsicos y fundamentales:
Eficiencia: comportamiento del producto y el comportamiento de
recursos.
Faciliad de mantencin: facilidad de anlisis, facilidad de cambio,
Norma Iso
Portablidad: facilidad de instalacin, coformidad,
facilidad de reemplazo.
Funcionalidad: adecuacin, precisin,
seguridad.
Confiabilidad: marudrez, tolerancia a fallas,
de aprendizaje, facilidad de
operacin.
defectos, no lo opuesto, por lo tanto, desarrollo exitoso puede ll d llevar a t ti no exitoso ( encuentra testing it (no t defectos).
El propsito del testing es encontrar defectos, es un
Proceso de testing
Planificacin: al comienzo del desarrollo, se establecen guas,
mtodos y niveles de ambicin, si ser automtico o manual, estimacin de recursos requeridos, estndares involucrados.
Identificacin: estimacin ms detalla de los recursos requeridos. Especializacin: descripcin de las pruebas a nivel funcional
Proceso de testing
Engloba:
-Enfoque de gestin de calidad -Tecnologa de ingeniera de software efectiva -Revisiones tcnicas formales que se aplican durante el proceso del software -Estrategia de prueba multiescalada -Control de documentacin de Software -Procedimiento para asegurar ajuste en los estndares -Medicin e informes
Software de alta calidad: concordancia con los requisitos funcionales y de rendimiento explcitamente establecidos con los establecidos, estndares de desarrollo explcitamente documentados, y con las caractersticas implcitas que se espera de todo software desarrollado profesionalmente.
Niveles de Testing
Sistemas de gran tamao necesitan abordarse
en niveles
En la mayor parte de los casos hay 3 o 4 niveles
Unidad: Componentes individuales Integracin: Componentes g p g p grupales Sistema: Sistema como un todo Aceptacin: Requerimientos del sistema
Niveles de Testing
Niveles de Testing
El enfoque usado para el desarrollo del software
software
Por Procedimientos Orientado a Objetos j
Cod. Mdulos
Cd. Completo
Requisitos de Software
Pruebas de Sistema
Arquitectura
Pruebas de Integracin
Diseo Detallado D t ll d
Pruebas Unitarias U it i
Codificacin
Pruebas de Unidad
Propsito: Encontrar defectos en un mdulo o funcin. Realiza solo una funcin Puede compilarse por si solo Poca cantidad de cdigo, debera verse entero en la pantalla Desarrollar las pruebas de unidad son las ms fcil de desarrollar, ejecutar p , j y guardar y analizar resultados Solucionar los problemas en este nivel es fcil debido al reducido cdigo Se deben incluir pruebas para
Casos habituales y casos extremos de los parmetros. Todas l T d las excepciones. i Todos los tipos de efectos laterales.
Planificacin
El enfoque general del Plan, los recursos, y el calendario Determinar las caractersticas a probar Redefinir el plan general
Medicin
Pruebas de Integracin
Propsitos P it
Detectar errores en las interfaces de las unidades Ensamblar las unidades en subsistemas y finalmente en un sistema
Las pruebas de unidad puede no recrear la situacin de tener otros mdulos o unidades combinadas Funciona mejor como un proceso iterativo Debemos planificar las pruebas de integracin:
En el Documento de Arquitectura, o bien en el Plan de Pruebas de Sistema. Hay que destinar recursos a esto (gente y tiempo).
Al probar cada mdulo individualmente es necesario crear mdulos auxiliares que simulen las acciones de los mdulos invocados por el mdulo que se est probando. Debido a todo esto, a menudo se combinan ambos tipos de prueba: unitarias y de integracin, por ejemplo a travs de la prueba llamada desarrollo incremental.
Desarrollo Incremental
El tipo de prueba incremental consiste en agregar cada
separadamente es difcil identificar los componentes individuales o mdulos que causan resultados incorrectos.
Lo ms probable es que los problemas que surjan al
incorporar un nuevo componente, surjan de este ltimo o de las interfaces entre l y los otros componentes.
El primer componente o mdulo que se desarrolla y prueba es el que est arriba en la jerarqua.
Los mdulos de nivel ms bajo se sustituyen por mdulos auxiliares que simulan el resto de la funcionalidad. En este caso no son necesarios mdulos conductores
Una ventaja de esta estrategia es que las interfaces entre los mdulos son probadas en una fase temprana y con frecuencia.
Este tipo de enfoque de las pruebas permite un desarrollo ms paralelizado que el enfoque el Top-Down, pero presenta mayores dificultades a la hora de planificar y de gestionar las pruebas.
Pruebas de Sistema
Propsito: Asegurar que se cumplen los
requisitos de software.
Este es un proceso formal:
Planificado en el Plan de Pruebas de Sistema. L b La base son l casos d prueba d fi id en l los de b definidos la
Sistema.
Pruebas de Sistema S alcance es el sistema completo. L pruebas Su l l i t l t Las b tpicas que deben hacerse son:
Pruebas funcionales
Consisten en determinar que se han cumplido los requisitos de software del sistema, y que ste realiza correctamente todas sistema las funciones especificadas en los requisitos de usuario.
Pruebas de comunicaciones
Determinan si las interfaces entre los componentes del sistema funcionan adecuadamente. Esto se refiere tanto a: las comunicaciones entre dispositivos remotos, las interfaces f entre diferentes mdulos, interfaces hombre-mquina, etc.
Pruebas de Sistema
Pruebas de rendimiento
Consisten en determinar que los tiempos de respuesta estn dentro de los intervalos establecidos en las especificaciones del sistema.
Pruebas de volumen
Consisten en examinar el funcionamiento del sistema cuando est trabajando con grandes volmenes de datos, simulando la carga de trabajo esperada. g g j p
Consisten en comprobar el funcionamiento del sistema en el umbral lmite de los recursos, sometindolo a cargas excesivas. recursos excesivas
Consisten en demostrar que el sistema puede recuperarse ante fallas sin fallas, prdidas indebidas de datos. Esto considera el hardware y el software.
Pruebas de Sistema
Consisten en comprobar la adaptabilidad del sistema a las necesidades de los usuarios, tanto para asegurarse que se acomoda al modo habitual de trabajo de stos, como para determinar si les facilita su trabajo. , p j
Pruebas de operacin
Consisten en comprobar los procedimientos de operacin, incluyendo los procedimientos de inicio y fi d t b j y l f ilid d d operacin. di i t d i i i fin de trabajo la facilidad de i
Pruebas de entorno
Consisten en verificar las interacciones del sistema con otros sistemas dentro sistemas, del mismo entorno.
Pruebas de seguridad
Consisten en verificar los mecanismos de control de acceso al sistema para evitar alteraciones indebidas en los datos.
Pruebas de Aceptacin
Propsito: Certificar que los requisitos del cliente se han
Pruebas de Aceptacin
Son aquellas pruebas que realiza el usuario/cliente con el objeto de
anteriormente, pero son determinadas por el usuario, en lugar de serlo por el equipo de desarrollo.
Un tipo especial de estas pruebas es el de la ejecucin en paralelo
con el viejo sistema (legado), para comparar los resultados producidos por ambas ejecuciones.
Se chequea fundamentalmente: correctitud, robustez, performance
y documentacin.
Pruebas de regresin
Propsito: Asegurar que cambios en el software no introducen nuevos defectos. Se ejecutan luego de modificar el sistema. Consisten en repetir las pruebas que ya se han hecho al sistema en una versin anterior, y comparar el resultado actual con el anterior. i t i l lt d t l l t i Aqu hay un beneficio enorme al tener un ambiente automatizado de pruebas. pruebas Repetir slo pruebas de verificacin
verificacin y validacin.
Model) M d l)
58
Plan de pruebas
59
Pruebas organizacionales
Tareas del equipo de pruebas
Mantener y aplicar las politicas de prueba. Desarrollar y aplicar pruebas para la estandarizacin. Participacion en la revision de codigo, diseo y requerimientos. Planeamiento de pruebas Diseo de pruebas Ejecucin de las pruebas
Pruebas de medicion. Pruebas de control de costos, fechas, y tareas. Adquisicin de herramientas y equipo Ad i i i d h i i para las pruebas. Identificar y aplicar nuevas herramientas y metodos de pruebas. Capacitar nuevo personal.
Pruebas organizacionales
Introduciendo especialistas en pruebas Una vez que las politicas y metas que se deben alcansar para cada etapa del proyecto ,tanto globales como particulares, esten establecidas (lo que implica un gran avanse tanto particulares para la organizacion), se debe crear un equipo de especialistas de pruebas, asignar recursos a ellos y crear una carrera para estos profesionales entre otras cosas. Esto implica redisear las funciones y administracion de la jerarquia organizacional
Pruebas organizacionales
Ingeniero en pruebas El ingeniero en pruebas como primer paso debe asegurar que en su area las pruebas que estan siendo relizadas son efectivas y productivas productivas. Estos no son desarrolladores ni analistas pero deben tener conocimiento de estas areas, estos solo agregan valor al producto de software en terminos de alta calidad y satisfaccin al cliente cliente. Su punto de vista debe ser constructivo y no destructivo.
Pruebas organizacionales
Habilidades del ingeniero de pruebas (organizacionales).
Habilidades organizacionales y de planeacin. Habilidad para encontrar y poner atencion a los detalles. Determinacin para descubrir y solucionar problemas. Habilidad para trabajar en grupo y resolver conflictos. Habilidad ensear a otros otros.
Habilidad para trabajar con los usuarios y clientes. Gran habilidad oratoria y de redaccin. Habilidad H bilid d para trabajar en multiples b j li l ambientes . Creatividad.
Pruebas organizacionales
Habilidades del ingeniero de pruebas (tecnicas).
Estudios en ingenieria de software con sus principales metodologias. Gran conocimiento de codificacion en diferentes lenguajes. Estudios de los principales metodos y pruebas de testeo.
Conocimiento de como funcionan las redes, bases de datos y S O S.O. Conocimiento de los distintos documentos de pruebas y uso de p estos.
Pruebas organizacionales
Secuencia para construir un equipo de trabajo
Pruebas organizacionales
Estructura del equipo de pruebas
Test manager: creacion de politicas, interaccin con el cliente, plan d i t i l li t l de pruebas, supervision del personal y reportes de avance y estado. Test leader: apoya al director de pruebas ademas de involucrarse en las pruebas de ejecucion y reportes. Test engineer: disea, crea y ejecuta las pruebas. Junior test engineer: generalmente son empleados nuevos que estan ganando experiencia ayudando al ingeniero de pruebas.
Pruebas organizacionales
Crear carrera profesional dentro de la empresa (ejemplo AT&T)
Apprenticeship: nuevo personal que ingresa el cual asiste a seminarios, i l l i t i i cursos para obtener los mejores habilidades y metodos. Mastery:asume mas responsabilidades y se involucra en el proceso de planeacion, ejecucin y diseo de pruebas pruebas. Specialization:cuendo de alcanza un nivel de conocimiento mayor en alguna alg na area como standares de seguridad entre otros.
Pruebas organizacionales
Crear carrera profesional dentro de la empresa (ejemplo AT&T)
Leadership: en este nivel el ingeniero necesita ademas d l i i it d de la especializacion en alguna area habilidades tecnicas y comunicacionales. Top-level tester:necesita gran conocimiento en el area de pruebas, ademas debe trabajar con los mas altos directivos en la direccion de estrategias para el testeo.
Pruebas organizacionales
Certificacin de ingenieros en prueba Algunas empresas piden como requisitos a sus ingenieros estar certificados para asegurar sus habilidades como testeadores testeadores. En Estados Unidos existen dos organizaciones para la certificacin la primera es The American Society for Quality (ASQ) y The Quality Assurance Institute (QAI).
Pruebas organizacionales
Introducir las actividades de pruebas al ciclo de vida de un software Para asegurar la calidad del software se deben introducir las pruebas los mas tempranamente posible dentro del ciclo de vida, ya que, si se realizan pruebas solo en vida que el termino del projecto no se toman en cuenta ni el tiempo ni el presupuesto. Existen variados metodos para incorporar la calidad de software en el ciclo de vida estandar como: CMM CMMI TMM TMMI V model entre otros. CMM, CMMI, TMM, TMMI, V-model otros A continuacin explicaremos como usar el V-model:
Pruebas organizacionales
Introducir las actividades de pruebas al ciclo de vida de un software
Pruebas organizacionales
Introducir las actividades de pruebas al ciclo de vida de un software V-model Fase de requerimientos: en esta etapa se deben tomar y verificar que los requerimientos esten bien definidos y sean testeables, esto implica reunirse con el testeables cliente para que este acepte los mismos, claro, previamente provados con algun metodo como caja blanca o negra. Ademas en esta etapa se deben calcular los costos y hitos importantes del proyecto. Fase de Diseo:en esta etapa se deben revisar si el diseo cumple con las politicas antes establecidas, si estas se cumplen se puede pasar a la etapa de integracion donde el ingeniero de p g pruebas debe interactuar directamente con el diseador p para luego crear el documento que sera usado para reparar el codigo o desarrollar nuevas salidas.
Pruebas organizacionales
Introducir las actividades de pruebas al ciclo de vida de un software V-model Fase de Codificacion: en esta etapa se pueden completar las tareas que no se han terminado en la fase de diseo ademas de comenzar la etapa de codificacion por los diseo, desarrolladores ,los ingenieros de pruebas pueden ir haciendo los testeos a los modulos ya terminados de forma paralela. Fase de ejecucion:una vez finalizado la etapa de codificacion se puede comenzar a ejecutar a cabalidad las pruebas, que se estimaron previamente,sobre el softwarae con todos sus modulos completos permitiendo estimar el desempeo de este y generar el reporte de los incidentes. p
En el eje y se encuentran las tareas y en el eje estan l t l j x t los graficos de barra donde muestran el estado de cada uno de acuerdo a las semanas para evaluar el p progreso de una forma mas clara.
Entradas:La reunin la componen el equipo d d prueba, l j f d i de de b los jefes de pruebas, el jefe de proyectos, el grupo de softwrae quality assurance, los reportes e , p informacion referente a cada tarea. Salidas:actividades para resolver los distintos problemas gastos v/s problemas, presupuesto, proximas actividades para la siguiente reunin, etc.
D t t un numero especifico de d f t (esto Detectar ifi d defectos ( t requiere una tabla de datos historicos). El promedio de defectos para un cierto periodo esta por debajo de lo especificado para ese nivel.