Sie sind auf Seite 1von 194

Gua rpida QTP

QTP - Introduccin
QTP significa Quick Test Profesional, un producto de Hewlett
Packard (HP). Esta herramienta ayuda a los Tester para realizar una
prueba funcional automatizada sin problemas y sin vigilancia si el
desarrollo del guin es completa.
HP QTP utiliza Visual Basic Scripting (VBScript) para la
automatizacin de las aplicaciones. El motor de secuencias de
comandos no necesita ser instalado en exclusiva, ya que es parte
disponible del sistema operativo Windows. La versin actual de
VBScript es 5.8, que est disponible como parte de Win 7 VBScript
no es un lenguaje orientado a objetos, sino un lenguaje basado en
objetos.

Prueba de Herramientas:
Herramientas de un contexto de pruebas de software, se
pueden definir como un producto que soporta una o ms actividades
de prueba directamente desde la planificacin, los requisitos, la
creacin de una construccin, ejecucin de la prueba, el registro de
defectos y anlisis de la prueba.

CLASIFICACIN DE HERRAMIENTAS
Las herramientas se pueden clasificar en funcin de varios
parmetros. Incluye,
El propsito de la herramienta
Las actividades que se admiten dentro de la herramienta
El tipo / nivel de pruebas que soporta.
El tipo de licencias (de cdigo abierto, gratuito, comercial)
La Tecnologa utilizada.
TIPOS DE HERRAMIENTAS:
S.N
Tipo de herramienta Se utiliza para Utilizado por
o#

Prueba Gestin, programacin,


Herramienta de gestin de
1.
pruebas
registro de defectos, seguimiento y Tester
anlisis.

Herramienta de gestin de Para la implementacin, ejecucin, Todos los miembros


2.
configuracin seguimiento de los cambios del equipo

Estticas Herramientas de
3. Prueba esttica Desarrolladores
anlisis

Herramientas Prueba Anlisis y Diseo, la generacin de


4.
Preparacin de datos datos de prueba Tester

Herramientas ejecucin de
5.
las pruebas
Implementacin, ejecucin Tester

La comparacin de los resultados Todos los miembros


6. Comparadores de prueba
esperados y los reales del equipo

Herramientas de medicin
7. Proporciona cobertura estructural Desarrolladores
de la cobertura

Herramientas de prueba de El monitoreo del rendimiento, el


8.
rendimiento tiempo de respuesta Tester

La planificacin de
Gerentes de
9. proyectos y herramientas de Para Planificacin
Proyecto
rastreo

Herramientas de Gestin de
10.
Incidentes
Para la gestin de las pruebas Tester
DNDE USAR QTP?
QTP es una herramienta de prueba funcional, que es el ms
adecuado para las pruebas de regresin de las aplicaciones. QTP
es una herramienta con licencia / propiedad comercial de HP, que es
una de las herramientas ms populares disponibles en el mercado.
En l se compara el resultado real y esperado, y reporta los
resultados de la ejecucin sumaria.

QTP Historia y Evolucin:


HP Quick Test Profesional fue originalmente propiedad de
Mercury Interactive y fue adquirido por Hp. Su nombre original era
Quick Test Astra y ms tarde nombrado como Quick Test Profesional,
pero la ltima versin se conoce como Functional Tester Unificado
(UFT).

HISTORIAL DE LAS VERSIONES:


Ahora echemos un vistazo a la historia de la versin de QTP.

Versiones Lneas de tiempo

V1.0 Quick Test Astra a v5.5 - Mercury Interactive Mayo 1998-agosto 2001

Quicktest v6.5 Profesional para v9.0 - Mercury Interactive Septiembre 2003-abril 2006

V9.1 Hp-QuickTest Profesional para v11.0 - adquieran y liberen Febrero 2007 a septiembre
por HP 2010

Hp-Unified Functional Testing v11.5 a v11.53 2012 a noviembre 2013

Ventajas:
El desarrollo de pruebas automatizadas usando VBScript no
requiere un programador altamente calificado y es relativamente
fcil en comparacin de otros lenguajes de programacin
orientado a objetos.
Fcil de usar, la facilidad de navegacin, resultado de la
validacin y generacin de informes.
Fcilmente integrado con la herramienta de gestin de pruebas
(Centro de Hp-Quality), que permite una fcil programacin y
seguimiento.
Tambin se puede utilizar para Mobile Application Testing.
Dado que es un producto de Hp, con el pleno apoyo proporcionado
por HP y por sus foros para abordar cuestiones tcnicas.

Desventajas:
A diferencia de selenio ( Sistema que funciona para Web en
Firefox ), QTP slo funciona en el sistema operativo Windows.
No todas las versiones de los navegadores son compatibles y los
Tester tienen que esperar a que el parche sea liberado para cada
una de las versiones principales.
Habiendo dicho eso, es una herramienta comercial, el costo de
licencias es muy alta.
A pesar de que el tiempo de codificacin del scripting es menor,
el tiempo de ejecucin es relativamente ms alto, ya que pone la
carga de trabajo del CPU y manejo de memoria RAM, muy alto.

Proceso de Pruebas Automatizadas:


Para cualquier aplicacin automatizada con la herramienta, las
siguientes son las fases / etapas de la misma. Cada una de las
etapas corresponde a una actividad particular y cada fase tiene un
resultado definitivo.
1. Prueba de Anlisis de Viabilidad para Automatizacin - El
primer paso es comprobar si la aplicacin se puede automatizar o
no. No todas las aplicaciones se pueden automatizar debido a sus
limitaciones, ver (ANEXOS).
2. Seleccin de la herramienta adecuada - El siguiente paso
ms importante es la seleccin de herramientas.Depende de la
tecnologa en la que se construye la aplicacin, sus caractersticas
y el uso.
3. Evaluar el marco adecuado - Al seleccionar la herramienta, la
siguiente actividad es seleccionar un marco adecuado. Hay
varios tipos de marcos y cada marco tiene su propio significado.
Nos ocuparemos de los marcos en detalle ms adelante de este
captulo.
4. Construir la prueba de concepto - Prueba de concepto (POC) se
desarrolla con un extremo a otro escenario para evaluar si la
herramienta puede apoyar la automatizacin de la aplicacin.
Como se realiza con un extremo a otro escenario que se
asegurar de que las principales funcionalidades se pueden
automatizar.
5. Desarrollar Framework para Automatizacin - Despus de
construir el POC, lleva a cabo el desarrollo del framework, que es el
paso crucial para el xito de cualquier proyecto de pruebas de
automatizacin. El framework debe ser construido despus de un
anlisis diligente de la tecnologa utilizada por la aplicacin y
tambin sus principales caractersticas.
6. Desarrollar el script de prueba, Ejecucin y Analicis - Una vez
que el desarrollo de secuencias de comandos se completa, los
scripts se ejecutan, los resultados se analizan y se registran los
defectos, en su caso. Las escrituras de la prueba son
generalmente versiones controladas.

Instalacin QTP:
QTP es una herramienta comercial se puede descargar desde el
sitio de HP directamente. A continuacin se muestra la URL
desde donde la versin de prueba se puede descargar.
La URL de descarga:
http://www8.hp.com/us/en/software-solutions/functional-
testing.html
Procedimiento de instalacin:
Paso 1 - Haga click en "prueba y demostracin" enlace y
seleccionar "Hp Unified Functional Testing 11.50 en Ingls SW E-
Media Evaluacin" como se muestra a continuacin:

Paso 2 - Al seleccionar "Hp Unified Functional Testing 11.50", se


abre el asistente de descarga. Rellene los datos personales y
haga clic en Siguiente
Paso 3 - Lea los trminos de uso y haga clic en "Siguiente".

Paso 4 - Abre la ventana de descarga. Posteriormente Haga click en


el Botn "Descargar" ( "Download" ).
Paso 5 - El archivo descargado ser del formato RAR. Ahora
tiene que descomprimir el archivo y el contenido de la carpeta se
muestran a continuacin y ejecutar el Setup.exe.
Paso 6 - Al ejecutar el archivo de instalacin, a fin de instalar,
seleccione "Unified Functional Testing Configurar" de la lista, como
se muestra a continuacin:

Paso 7 - A continuacin, pulse Siguiente ( Next ) para continuar.


Paso 8 - En la ventana de lista de diseos ( Service Pack ),
seleccione los PlugIns que se requieren para su automatizacin.
Es decir, usted debe seleccionar los PlugIns basados en la
tecnologa de su aplicacin bajo prueba. Por ejemplo, si su

aplicacin se basa en .NET entonces usted debe asegurarse de que


selecciona .NET.
Paso 9 - Al seleccionar los PlugIns necesarios para la instalacin,
haga click en Siguiente ( Next ) y posteriormente se pasara a la
finalizacin de la instalacin que va a terminar dndole click al
botn Finalizar.

Paso 10 - Una vez finalizada la instalacin, se abrir el cuadro de


dilogo "Requisitos de instalacin adicionales" ( "Additonal
Installation Requeriments" ). Seleccionar todo en la lista que no sea
"Asistente de instalacin de licencia Ejecutar" ( "Run License
Installation Wizard" ) y haga click en "RUN".No se selecciona
"Asistente de instalacin de licencia Run" porque estamos
instalando la versin de prueba que por defecto le da una licencia
por 30 das.
Paso 11 - Al trmino de Requisitos de instalacin adicionales, una
marca indica que los componentes se instalaron correctamente y
haga click en
el botn Cerrar
( Close ).
La Ejecucin de UFT y Pgina de Complementos:
Paso 1 - Despus de la instalacin, la aplicacin puede darle clik a
inicio desde el men Inicio, como se muestra.
Paso 2 - Aparece la pgina de licencias. Puede hacer clic en
continuar como hemos instalado la licencia de prueba

Paso 3 - El cuadro de dilogo Complementos ( Add-in ) se abre para


que el usuario
seleccione los
add-in's
requeridos, se
recomienda
marcar slo los
add-in's
requeridos y
haga click en el
botn "Ok"
Paso 4 - Despus de arrancar los addins requeridos, la herramienta
UFT 11.5 abre el primer vistazo de la UFT y muestra lo siguiente:

Grabacin y reproduccin
La Grabacin de una prueba se refiere a la grabacin de las
acciones por el usuarios de la aplicacin bajo prueba para que UFT
genera automticamente las secuencias de comandos que se
pueden reproducir. La Grabacin y reproduccin nos pueden dar la
primera impresin de comandos, si la herramienta puede soportar la
tecnologa o NO, si los ajustes iniciales se hacen correctamente.
Los Pasos para la grabacin y reproduccin es el siguiente:

Paso 1: Haga clic en la prueba "Nuevo" ( "New" ) de la pgina de


inicio, como se muestra a continuacin:

Paso 2: Al hacer clic en "Nuevo" ( "New" ), la nueva ventana de


prueba se abre y el usuario tiene que seleccionar el tipo de prueba.
Seleccione "GUI Test ", darle un nombre para la prueba y
tambin el lugar en el que necesita ser salvado.
Paso 3. Una vez que se crea una nueva prueba, la nueva pantalla
de prueba se abre como se muestra a continuacin y haga click en
"Accin1" la cual se crea con Accin1 por defecto.

Paso 4 - Haga clic en el men "Grabar" ( "Record" ) y seleccione


"Grabar y Ajustes Run" ( "Record and Run Settings" ) como se
muestra a continuacin:
Paso 5 - En la configuracin de grabacin y de dilogo al ejecutarse
se abre en funcin del tipo de aplicacin, es decir, uno puede
seleccionar Web, aplicaciones Java, Windows. Por ejemplo, vamos
a grabar una aplicacin basada en Web (http://easycalculation.com/)
Paso 6 - Haga clic en botn de grabacin, el Internet Explorer se
abre automticamente con el Direccin Web ( web address )
http://easycalculation.com/ segn la configuracin. Clic en el
enlace "Nmeros" ( "Numbers" ) en "lgebra" y escriba un nmero y
pulse "calcular" ( "calculate" ). Al trmino de la accin pulse el
botn "Stop" en el panel de registro. Usted se dar cuenta de que
el guin
se
genera
como se
muestra
a

continuacin:

Paso 7 - Ahora para reproducir la secuencia de comandos, se hace


click en el botn de reproduccin. Aparecen el botn replays,
Codificacin y
Resultados. En
ese orden.

Paso 8 - La ventana de resultados se abre por defecto, la cual


muestra exactamente la marca de tiempo de ejecucin, y la cantidad
de caminos que pasaron y que no.
Importancia de la Grabacin y reproduccin:
1.Se utiliza como el mtodo de investigacin preliminar para
verificar si UFT puede soportar la tecnologa / aplicacin.
2.Se utiliza para crear una prueba de una funcionalidad bsica de
una aplicacin o funcin que no requiere mantenimiento a largo
plazo.
3.Puede ser utilizado para la grabacin de los dos movimientos del
ratn y las entradas del teclado.

Los modos de grabacin:


1.Grabacin normal: Este es el modo de grabacin por defecto
que registra los objetos y las operaciones realizadas en la
aplicacin bajo prueba.
2.Grabacin analgica: Esta registra no slo las acciones del
teclado, sino tambin los movimientos del ratn con respecto a la
pantalla o la ventana de la aplicacin.
3.Grabacin de bajo nivel: Esta registra las coordenadas exactas
de los objetos independientes, del hecho de si UFT reconoce el
objeto o NO. Simplemente registra las coordenadas, por lo
tanto, no registra los movimientos del ratn.
4.Visin ( Insight ) grabacin: UFT genera operacin de registros
basandoce en su apariencia y no en base a sus propiedades
nativas.
Cmo elegir modos de grabacin:
Al hacer click en el botn de grabacin, el usuario puede elegir
el modo de grabacin en el panel de grabacin que aparece en la
pantalla una vez que empiece la grabacin. La seleccin se puede
hacer de cualquiera de los que se ha discutido anteriormente.

El Escenario a continuacin se registra en todos los modos y se


vera cmo la misma accin se ha grabado en diversas
circunstancias.
1.Lanzamiento de IE - http://easycalculation.com/
2.Click en "Nmeros" ( "Numbers" ) en virtud de "lgebra"
3.Click en el enlace "Raz cuadrada"
4.Introduzca un valor para calcular la raz cuadrada. Digamos
10
5.Calcula la cantidad de registros en el guion de defectos,
analgica y el modo de grabacin de bajo nivel.
'MODO DE GRABACIN POR DEFECTO
Browser("Free Online Math Calculator").Page("Free Online Math
Calculator").Link("Numbers").Click
Browser("Free Online Math Calculator").Page("Numbers Calculator - Math").Link("Square
Root").Click
Browser("Free Online Math Calculator").Page("Square Root Calculator").WebEdit("n").Set "10"
Browser("Free Online Math Calculator").Page("Square Root
Calculator").WebButton("calculate").Click

' ANALOG MODO DE GRABACIN


Desktop.RunAnalog "Track1"

'MODO DE GRABACIN DE BAJO NIVEL


Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 235,395
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 509,391
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 780,631
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Type "10"
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 757,666
Las grabaciones utilizando visin de modo de grabacin ser
como se muestra a continuacin:
Repositorio de Objetos:
Repositorio de objetos, es una coleccin de objetos y
propiedades con las que QTP ser capaz de reconocer los objetos y
actuar en consecuencia. Cuando un usuario registra una prueba,
los objetos y sus propiedades son capturados por defecto. Sin la
comprensin de los objetos y sus propiedades, QTP NO podr
reproducir los scripts.
Click en cada uno de los temas a continuacin para conocer
ms acerca de repositorio de objetos y sus caractersticas
asociadas, si gusta ver la documentacin original de los temas en
caso contrario siga adelante.

Tema Descripcin
Objeto del espa y sus
Para entender el uso del objeto Spy y sus funcionalidades asociadas.
caractersticas
Trabajar con repositorio de Aadir, modificar, eliminar objetos de un repositorio de objetos y
objetos sus funciones asociadas.

Se ocupa de Shared Object y Repositorios de Objetos (RO) Locales


Tipos de Object Repository
y su contexto con respecto al scripting.

Objetos definidos por el Se ocupa de las circunstancias, para utilizar los objetos definidos
usuario por el usuario.

Objeto de repositorio en Trata con covertir Repositorios de Objetos (RO) a XML y cmo
XML utilizar el Repositorio objeto como XML.

Comparacin y fusin de Las operaciones de comparar Repositorios de Objetos (RO),


OR (Repositorio de Objetos) fusionar o trabajar eficazmente con repositorio de objetos.

Circunstancias en las que se utilizan los identificadores ordinales y


Identificadores ordinales
sus ventajas.

Objetos secundarios El uso de los objetos secundarios de scripting eficaz


QTP - Objeto del espa ( Object Spy )

Objeto Spy:
Objeto del espa es una utilidad / opcin ( utility/option ) dentro
QTP para aadir objetos al repositorio de objetos OR. Al objeto del
ObjectSpy se puede acceder desde la barra de herramientas como se
muestra a continuacin:

1. Al hacer click en el icono de Spy objeto ( Object Spy icon ), se


abre el cuadro de dilogo Objeto Spy ( Object Spy Dialog box ). Los
objetos se pueden agregar al repositorio ( repository upon ) al hacer
clic en la mano que seala ( pointing hand ).
2. Despus usar el Espia ( Spying the object ), se mostrar la
jerarqua de objetos ( object hierarchy ). Digamos, al ejecutar el
ObjectSpy en el enlace "Nmeros" ( "Numbers" ) en
"http://easycalculation.com/". Las propiedades de los objetos ( Object
properties ) se muestran a continuacin.

3. Despus usar el ObjectSpy ( Spying an object ), podemos hacer


click en la opcin "Resaltar" ( "Highlight" ) para resaltar el objeto en
la aplicacin.
4. Para aadir el objeto en el repositorio de objetos, se debe hacer
click en el botn "Agregar objetos" ( "Add objects" ) en el dilogo de
espionaje de objetos ( Object spy dialog ).
5. Las propiedades ( properties ) y sus valores se muestran para el
objeto seleccionado en el cuadro de dilogo, debe ser nicos para
QTP, para reconocer los objetos, mientras que el script se ejecuta.

6. Las operaciones apoyadas en el objeto se pueden recuperar


haciendo clic en la pestaa de la operacin ( operation tab ).
Operaciones como "click" de un botn "Set" para un cuadro de
texto se recuperan de la pestaa "operaciones" ( "operations" )
como se muestra a continuacin ( tab as shown below ):
QTP - Trabajar con repositorio de objetos(Object
Repository)

Agregar objetos en OR:


Despus usar el ObjectSpy, el primer paso es la adicin de los
objetos en el depsito. Ya que el Script se puede ejecutar con xito
si y slo si se agregan los objetos en el repositorio de objetos. Al
hacer click en "Agregar objetos a OR" ( "Add Objects to OR" ), los
objetos se aaden al repositorio de objetos.
Incluso cuando un usuario hace una grabacin, los objetos y
sus propiedades se capturan automticamente. Por lo tanto somos
capaces de reproducir la secuencia de comandos con xito.
Repositorio de Objetos - Caractersticas:
1. Despus de agregar objetos a la sala de operaciones, podemos
verificar por navegar a "Recursos" -> "objeto del repositorio"
( "Resources" -> "Object Repository" ). La ventana de repositorio de
objetos se abre y podemos localizar el objeto aadido en el
repositorio, como se muestra a continuacin:

2. Uno puede agregar las propiedades, dando click en el botn "+"


y quitar mediante el botn "x". Si queremos restaurar a los
valores predeterminados podemos hacer click en el botn "flecha
circular" ( "circular arrow" ).
3. Uno puede cambiar el nombre del objeto. Por Ej. el nombre
del objeto es "nmeros" ( "Numbers" ) que puede cambiar el nombre
a "num", que no ( NOT ) tendr ningn efecto en la identificacin del
objeto de forma nica. Si hay un cambio en el nombre lgico, el
mismo nombre se debe utilizar mientras genera el Cdigo. Slo el
nombre del objeto puede ser cambiado y no ( NOT ) sus propiedades.

4. Las propiedades de cualquier objeto debe ser nicas para que


QTP sea capaz de reconocer los objetos y actuar en consecuencia.
Si las propiedades de los objetos son iguales para dos o ms
objetos, durante la ejecucin se producir un error que "existen ms
de un objeto iguales por las propiedades especificadas" ( "More than
one object is matched for the specified properties" ).
5. Despus de agregar los objetos, el mismo puede ser utilizado en
la escritura mediante un simple arrastrar y soltar, como se muestra
en la figura. Cuando el objeto es arrastrado y suelto, la
configuracin por defecto entra en funcionamiento. Por ejemplo:
Click en un botn, Set para un cuadro de texto, etc ( Click for a
button, Set for a Text Box etc. ), siendo estos por defecto los que se
generen en el arrastrado.
QTP - Objeto Tipos de repositorios( Object
Repository Types )

Tipos de Repository de Object(OR)


El repositorio de objetos es de dos tipos:

Repositorio de Objetos local ( Local Object Repository ) - Como


su nombre indica, el repositorio de objetos slo es aplicable para
esa accin. Como sabemos que QTP crea una nueva prueba con
Accin1 por defecto. El Repositorio de Objetos local se puede
abrir mediante el desplazamiento hasta Recursos -> gt; objeto de
repositorio ( Resources -> gt;Object Repository ). Este es el
valor predeterminado en QTP.
Shared Object Repository- El repositorio de objetos se comparte
a travs de acciones / mdulos, que se asignan a dos o ms
acciones. Los Objetos locales pueden ser exportados por el Shared
Object Repository mediante la opcin "Objetos de exportacin local"
( "Export Local Objects" ). Shared Object Repository se puede
abrir mediante el desplazamiento hasta Recursos -> gt;Object
Repository Manager ( Resource ->gt; Object Repository Manager )
A continuacin se presentan la mayor diferencia entre local

Repositorio de Objetos Local (LOR) Repositorio de objetos compartidos (SOR)

Este repositorio de objetos es uno disponible Este tipo de OR est disponible para mltiples
para cada accin. pruebas y de mltiples acciones.

Esta es la sala de operaciones que est Este tipo de OR se utiliza normalmente en los
disponible para cada uno de las pruebas de marcos considerandos re utilizables y con
forma predeterminada. facilidad de mantenimiento.

Compartido repositorio de objetos es de slo


Repositorio de Objetos de local es editable en
lectura por defecto, pero se puede editar en
el repositorio de objetos.
Object Repository Manager.

No es un archivo independiente que se puede SOR es un archivo independiente que se puede


editar. editar fcilmente.

Se guardan con la extensin .bdb SOR se guarda con una extensin .tsr

Se debe utilizar cuando no muchas pruebas SOR debe utilizarse cuando existen diferentes
estn trabajando en las mismas pantallas de la scripts que interactan con el mismo tipo de
aplicacin bajo prueba. objeto.
QTP - Objetos definidos por el usuario(User
Defined Objects )

Objetos definidos por el usuario ( User Defined Objects )


A veces, los objetos no son reconocibles por QTP, si en caso
que la aplicacin no utilice las clases estndar de Windows. QTP
utiliza Nombre de clase para encontrar el tipo de objeto. A veces,
se espera que el objeto se comporte como un botn o un cuadro
combinado, etc ( button or Combo Box, etc )
Cuando tratamos de aadir este tipo de botn, se podra
reconocer como Winobject.
Por lo tanto podemos asignar que WinObject se comporte como
"CheckBox" ( "CheckBox" ) Tipo de objeto de Navegacin a
Herramientas -> Identificacin de objetos ( Navigating to Tools ->
Object Identification ) y seleccione el entorno como "estndar de
Windows" ( "Standard Windows" ) y haga clic en el botn "Definido
por el usuario" ( "User Defined" ). Observe por favor que esta opcin
no funcionar contra cualquier otro entorno.

En el siguiente ejemplo, se hace un objeto de una clase


especfica de reconocer como un objeto de tipo "botn" ( "button" ).
De ah que este objeto hereda todas las propiedades de un
botn y
podemos usar
los objetos
que son
apoyadas por
botn.
QTP- Objeto de repositorio como XML(Object
Repository as XML)

Objeto de repositorio como XML


Repositorio de Objetos se pueden guardar en formato XML para
que el tamao del repositorio de objetos se redusca. El OR se puede
guardar como XML con la opcin "Exportar como XML" ( "Exporting
as XML" ) de la ventana de Repositorio de objeto compartido como
se muestra a continuacin:
El repositorio de objetos Igual se puede importar de XML y
puede ser editado / borrado y se exporta de nuevo a XML.
QTP - comparacin y fusin de OR's ( Comparing
and Merging OR's )

Comparando Repositorios de Objetos:


Muchas veces, podramos estar en condicin de comparar dos
repositorios de objetos para detectar la diferencia y fusionarla si los
objetos faltantes en el repositorio principal se insertan.
Estas herramientas nos ayudan mucho para encontrar las
diferencias en el repositorio de objetos.

Pasos para comparar OR's


Paso 1: Vaya a "Recursos" >> "Object Repository Manager"
( "Resources" >> "Object Repository Manager" )
Paso 2: Ir a "Herramientas" >> "Object Comparison Tool
repositorio" ( "Tools" >> "Object Repository Comparison Tool" )

Paso 3: La ventana de Repositorio de objetos para la comparacin


se abre y el usuario tiene que seleccionar los dos archivos del

repositorio de objetos a comparar.


Paso 4: Se realiza la comparacin y muestra la diferencias de uno
en uno, como se muestra a continuacin:

Paso 5: Incluso se puede filtrar en funcin de 3 parmetros a


saber; objetos nicos, objetos idnticos, objetos parcialmente
iguales ( unique objects, identical objects, partial match objects ).
La fusin de Repositorios de Objetos ( Merging Object
Repositories )
Algunas veces hay circunstancias en las que repositorio de
objetos necesita fusionarce con el mantenimiento de dos o ms
repositorio de objetos, agregando objetos adicionales.
Esta Opcin de fusin es una gran bendicin para los Tester que
la necesitan para fusionar dos repositorio de objetos sin perder la
jerarqua de objetos.

Pasos para fusionar OR's ( Steps to Merge OR's )


Paso 1: Vaya a "Recursos" >> "Object Repository Manager"
( "Resources" >> "Object Repository Manager" )
Paso 2: Ir a "Herramientas" >> "Object Comparison Tool
repositorio" ( "Tools" >> "Object Repository Comparison Tool" )

Paso 3:
La

ventana de objetos Repositorio Merge se abre y el usuario tiene que


seleccionar los dos archivos de repositorio de objetos a ser
fusionados.

Paso 4: Despus de la fusin, las estadsticas se muestran al


usuario.

Paso 5: Incluso se puede filtrar en funcin de 2 parmetros a


saber: muestra todos los objetos, mostrar slo los objetos en
conflicto ( show all objects, show only conflicting objects ).

QTP - Identificadores ordinales ( Ordinal


Identifiers )

Cules son Identificadores ordinales?


A veces hay una serie de objetos con el mismo nombre y
propiedades de la clase. Nos permite decir en una ventana hay una
serie de casillas de verificacin con el mismo conjunto de
propiedades. Si queremos actuar sobre aquellos objetos que
necesitamos identificar el correcto en caso de objetos con
caractersticas similares para que QTP se capaz de actuar.
Un Identificador Ordinal asigna un valor numrico a los objetos
de prueba que indica su ubicacin u orden con respecto a su grupo.
El valor ordenado permite a QTP reconocerlo nicamente
cuando las propiedades incorporadas no son suficientes para
hacerlo.
Hay 3 Identificadores ordinales en QTP que se pueden utilizar
en diferentes contextos:
ndice ( Index )
Ubicacin ( Location )
Momento de la creacin ( Creation Time )

ndice ( Index ):
Un objeto que aparece por primera vez en la pgina / ventana
( page/Window ) tendr un valor del ndice ms pequeo en
comparacin con otro objeto que viene ms adelante en la misma
pgina / ventana.

El valor de ndice para el grupo de cuadros de texto ser el


siguiente:

Nombre de ndice de
objeto Valor

TextBox 1 0

TextBox 4 1

TextBox 2 2

TextBox 5 3

TextBox 3 4

TextBox 6 5
Ubicacin ( Location ):
La propiedad Location funciona verticalmente de arriba a abajo
y de izquierda a derecha. De ah que para el mismo caso, el valor
de ubicacin para el grupo de cuadros de texto ser el siguiente:

Nombre de ndice de
objeto Valor

TextBox 1 0

TextBox 2 1

TextBox 3 2

TextBox 4 3

TextBox 5 4

TextBox 6 5
Hora de creacin ( Creation Time ):
La propiedad de Creacin es vlido slo para aplicacin basada
en web. Cuando abrimos 2 sesiones de navegador de la misma
pgina web, QTP no ser capaz de reconocer la ventana ya que tanto
la ventana tendr el mismo conjunto de propiedades. Por lo tanto
podemos usar el tiempo de la creacin con la que QTP ser capaz de
actuar sobre la ventana.

'Tendrn valor CreationTime = 0


SystemUtil.Run "iexplore.exe", "http://www.google.com"

' Se tienen CreationTime valor = 1


SystemUtil.Run "iexplore.exe", "http://www.yahoo.com"

'Tendrn valor CreationTime = 2


SystemUtil.Run "iexplore.exe", "http://www.microsoft.com"

' Se tienen CreationTime valor = 3


SystemUtil.Run "iexplore.exe", "http://www.facebook.com"

De ah que trabajar en un navegador especfico, tenemos que


mencionar explcitamente el tiempo de Creacin de OR o podemos
utilizar la descripcin de los objetos que veremos en detalle en la
seccin de programacin descriptiva.

' Sync s www . google . com


Browser("creationtime:=" ).Sync

'Obtiene la propiedad de texto RO de www.yahoo.com


Browser("creationtime:=1").GetROProperty("text")

' Highlights microsoft . com


Browser("creationtime:=2").Highlight
QTP - los objetos secundarios(Child Objects)

Cules son los objetos secundarios?


Son los objetos de un nivel mas abajo sobre el objeto padre en
este caso de la ventana ( en un sistema de Escritorio ) (text box,
combo box, links) que se conocen como objetos secundarios ( child
objects ). A veces, necesitaremos obtener las propiedades de todos
los enlaces en una pgina web o para obtener los valores de todos
los botones de opcin en una ventana ( en un sistema de Escritorio ).
En estas circunstancias, si queremos trabajar en los objetos
secundarios ( child objects ), tenemos que utilizar la descripcin de
los objetos, para hacer referencia a los objetos de una ventana /
pgina ( window/page ) en particular. Programacin descriptiva
ser tratada en detalle en el prximo captulo, pero la importancia
de este captulo es entender los objetos secundarios y su uso.
El Script siguiente se pone el nombre de los enlaces de la
pgina web "http://easycalculation.com/".
Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"

'Buscar todos los enlaces


Set obj = Browser("Math Calculator").Page("Math Calculator").ChildObjects(oDesc)

Dim i
' obj.Count value tiene el nmero de enlaces en la pgina
For i = 0 to obj.Count - 1
'obtener el nombre de todos los eslabones de la pgina
x = obj(i).GetROProperty("innerhtml")
print x
Next

El resultado se imprime en la ventana de salida, como se


muestra a continuacin:
QTP - Actions

Acciones:
Las Acciones ayuda a los Tester para dividir guiones en grupos
de declaraciones QTP llamadas acciones. Las acciones son
similares a las funciones en VBScript, sin embargo, hay algunas
diferencias. Por defecto QTP crea una prueba con Accin1.

Acciones Funciones

Las acciones son caracterstica inbuild de


Funciones VBScript se apoyan en VBScript y QTP.
QTP.

Acciones parmetros se pasan byvalue Parmetros de la funcin se pasan ya sea por


solamente. byvalue o byref.

Las acciones tienen .mts extensin Las funciones se guardan como .vbs o .qfl

Las acciones pueden ser reutilizables o no. Las funciones son siempre reutilizable.
Las propiedades de la accin se puede acceder haciendo click
derecho en la ventana del editor de secuencias de comandos y
"Propiedades" ( "Properties" )Seleccin.
Propiedades de accin contiene informacin siguiente
Nombre de la accin
Ubicacin
Bandera reutilizable
Parmetros de entrada
Parmetros de salida

Tipos de acciones:
Hay tres tipos de acciones:
Accin no reutilizable - Una accin que se puede llamar slo
en esa prueba especfica en la que se ha diseado y se puede
llamar una sola vez
Accin reutilizable - Una accin que se puede llamar varias
veces cualquier prueba en la que reside, y tambin puede ser
utilizado por cualquier otra prueba
Accin reutilizable externa - Es una accin reutilizable
almacenado en otra prueba. Acciones exteriores son de slo
lectura en la prueba de vocacin, pero se pueden utilizar a nivel
local con la copia editable de la informacin de tabla de datos
para la accin exterior

Trabajar con acciones:


Hay tres opciones para insertar una accin. Haga click en cada
uno de esos para saber ms sobre el tipo de accin seleccionado, en
la pagina original o siga adelante.

Tipo de accin Descripcin

Inserte Llame a Nueva Accin Inserta una nueva accin de la accin existente
La pieza de insercin Llame a copiar de
Inserta una copia de una accin existente
Accin
Inserta una llamada a re-utilizable accin
Inserte llamado a la accin existente
existente

QTP - Llamado a una Accin nueva ( Call to New


Action )

Insercin Tipo llamada a una Nueva accin:


Testers pueden insertar una nueva accin en cualquier punto de
la secuencia de comandos mediante la realizacin de los siguientes
pasos:
Paso: 1 - Haga clic derecho en el rea de scripts y seleccione
"Llamado a la Accin Nueva" ( "Call to New Action" )

Paso: 2 - En la Ventana "Insertar Un Llamado para Nueva Accin"


( "Insert Call to New Action" ), dar el nombre de la prueba, la
descripcin, y tambin especificar si se trata de una accin
reusuable o no. Ms importante seleccionar la ubicacin de la
accin que debe insertarse.
Paso: 3 - El usuario puede comprobar los cambios de forma grfica
en la prueba Nombre de pestaa correspondiente como se muestra a
continuacin:
Tambin podemos utilizar QTP para mandar llamar a la Action
en cualquier punto de la secuencia de comandos.
RunAction "Calculate", oneIteration 'Ejecuta Calcular Accin para una
'iteracin.
Los action puede ser llamado con parmetros como se muestra
a continuacin:
'Entrada a la accin
num1 = 5
num2 = 10
Dim value1

' Ejecutar la accin con parmetros


OutputValue = RunAction("Calculate", oneIteration, num1, num2, value1)

'Muestra la salida
print OutputValue
QTP Llamado a una copia de Accin ( Action )
( Call to Copy of Action )

Insercin Tipo Call ( Llamado ) a una copiar de Accin( Action ):


El Testers pueden insertar una copia de una accin existente en
cualquier punto de la secuencia de comandos mediante la
realizacin de los siguientes pasos:
Paso: 1 - Haga click derecho en el rea de scripts y seleccione
"Llamado a la copia de la accin" ( "Call to Copy of Action" )
Paso: 2 - En la opcin "Insertar Llamado de copiar de Accin"
( "Insert Call to Copy of Action" ), seleccione el "Nombre de la
prueba" ( "Test Name" ), "Nombre de la accin" ( "Action Name" ), y
tambin seleccione la ubicacin de la accin que debe insertarse.

Paso: 3 - Inmediatamente aparecer el script generado


automticamente para mostrar que se inserta la copia de un accin.

RunAction "Copy of Calculate", oneIteration


Paso: 4 - El usuario puede comprobar los cambios de forma grfica
en la pestaa de prueba con nombre GUItest2 en este caso, como se
muestra a continuacin:
QTP - Llamado a la accin existente ( Call to
Existing Action )

Insercin de Tipo llamada a la accin existente:


Testers pueden insertar una accin existente en cualquier
punto de la secuencia de comandos mediante la realizacin de los
siguientes pasos:
Paso: 1 - Haga clic derecho en el rea de scripts y seleccione
"Llamado a la accin existente" ( "Call to Existing Action" )
Paso: 2 - En la ventana "Seleccionar accin" ( "Select Action" ), dar
el nombre de la prueba, el nombre de accin, descripcin y tambin
especificar la ubicacin de la accin que se inserta.
Paso: 3 - Una vez insertado, el siguiente script se genera
exactamente en el lugar donde se insert la accin.

RunAction "Action1", oneIteration


Paso: 4 - El usuario puede comprobar los cambios de forma grfica
en la prueba Nombre de pestaa como se muestra a continuacin:
QTP Data table

Tablas de datos ( Data Table ( DT ) ):


Un DataTable, similar a Microsoft Excel ayuda a los Tester para
crear datos impulsando casos de prueba que se pueden utilizar para
ejecutar una accin varias veces. Hay dos tipos de tablas de datos.
Tabla de datos local - Cada accin genera en el DT su propia tabla
de datos privado tambin conocida como tabla de datos
( DataTable ) local que tambin se puede acceder a travs del
resto de Actions.
Global Tabla de datos - Cada prueba tiene una hoja de datos
global que sea accesible a travs de todos los Actions generados.
La hoja de datos se puede acceder desde la pestaa "Datos" de
QTP como se muestra a continuacin:

Para ejecutar un caso de prueba para un nmero determinado


de iteraciones, se puede establecer las iteraciones de tabla de datos
globales en el cuadro de dilogo Configuracin de la prueba, que se
puede acceder mediante Archivo -> Configuracin -> Ejecutar
(Pestaas) ( File -> Settings -> Run ) como se muestra a
continuacin:
Ejemplo:
Por ejemplo, si el usuario quiere parametrizar "inters
compuesto" de "http://easycalculation.com/" que se puede acceder
usando "http://easycalculation.com/compound-interest.php". Los
parmetros se pueden crear como se muestra a continuacin. La
mayora de las funcionalidades de Excel se puede utilizar en la tabla
de datos tambin.

Operaciones de tabla de datos:


Hay tres tipos de objetos para acceder a la tabla de datos.
Operaciones tabla de datos pueda ser bien comprendida por la
que atraviesa a travs del siguiente enlace:

Tipo de Objeto Descripcin


Mtodos de la tabla de datos Proporciona informacin detallada sobre los mtodos de tablas de
datos.

DTParameter mtodos de Proporciona informacin detallada sobre los mtodos


objeto DTParameter.

DTSheet mtodos de objeto Proporciona informacin detallada sobre los mtodos DTSheet.

QTP - Mtodos de objetos Data tabla( Data Table


Object Methods )

Mtodos de objeto de Tabla de datos:


Nombre del
Descripcin Sintaxis
mtodo

Agrega la hoja especificada a la DataTable.AddSheet(She


AddSheet tabla de datos en tiempo de
ejecucin etName)

Elimina la hoja especificada de la DataTable.DeleteSheet


DeleteSheet tabla de datos de tiempo de
ejecucin SheetID

Exporta el DataTable a un nuevo DataTable.Export(FileNa


Export archivo en la ubicacin
especificada me)

Exporta una hoja especfica de DataTable.ExportSheet(Fi


ExportSheet DataTable en tiempo de ejecucin leName,SheetName)
Devuelve la fila activa de la tabla
GetCurrentR DataTable.GetCurrentRo
de datos de tiempo de ejecucin de
ow la hoja mundial w
GetParamet Devuelve el nmero de columnas DataTable.GetParameter
de la tabla de datos de tiempo de
erCount ejecucin de la Hoja de Global Count

GetRowCou Devuelve el nmero de filas en la


tabla de datos de tiempo de DataTable.GetRowCount
nt ejecucin de la Hoja de Global

Devuelve la hoja especificada de la DataTable.GetSheet(Shee


GetSheet tabla de datos en tiempo de
ejecucin. tID)

GetSheetCo Devuelve el nmero total de hojas DataTable.GetSheetCoun


en la tabla de datos en tiempo de
unt ejecucin. t

Importa un archivo externo DataTable.Import(FileNa


Import especfico Excel a la tabla de datos
en tiempo de ejecucin. me)

Importa la hoja especificada del DataTable.ImportSheet(Fi


ImportSheet concreto archivo de Excel a la hoja leName, SheetSource,
de destino. SheetDest)

SetCurrentR Establece el foco de la fila actual DataTable.SetCurrentRo


ow en el nmero de fila especificado w(RowNumber)

Establece el foco de la siguiente


SetNextRow fila en la tabla de datos en tiempo DataTable.SetNextRow
de ejecucin

SetPrevious Establece el foco de la fila anterior


en la tabla de datos en tiempo de DataTable.SetPrevRow
Row ejecucin

Propiedades de objetos en Tabla de datos:


Nombre Descripcin Sintaxis

Global Devuelve la primera hoja de la tabla de datos


en tiempo de ejecucin. DataTable.GlobalSheet
Sheet

LocalS Devuelve la hoja de actividad Huso de la tabla


de datos en tiempo de ejecucin. DataTable.LocalSheet
heet

RawVal Recupera el valor bruto de la clula DataTable.RawValue


ue ParameterID, [SheetID]

Recupera el valor de la celda en el parmetro DataTable.Value(Para


Value especificado. meterID, [SheetID])

Ejemplo:
Tenga en cuenta la siguiente tabla de datos:

'Acceso Datatable llegar recuento de filas y nmero de columnas


rowcount = DataTable.GetSheet("Global").GetRowCount
msgbox rowcount ' Muestra 4

colcount = DataTable.GetSheet("Global").GetParameterCount
msgbox colcount 'Muestra 3

DataTable.SetCurrentRow(2)
val_rate = DataTable.Value("Rate","Global")
print val_rate ' Muestra 7 %

val_ppl = DataTable.Value("Principal","Global")
print val_ppl 'Muestra "2556

val_Time = DataTable.Value("Time","Global")
print val_Time ' Muestra 5

QTP - DTParameter Propiedades del objeto

DTParameter Propiedades del objeto:


Nombre del
Descripcin Sintaxis
mtodo

Devuelve el nombre del parmetro en la tabla


Name de datos en tiempo de ejecucin.
DTParameter.Name

Devuelve el valor bruto de la celda en la fila DTParameter.RawVa


RawValue actual de la tabla de datos en tiempo de
ejecucin. lue

Recupera o establece el valor de la celda de la


Value fila activa del parmetro en la tabla de datos en DTParameter.Value
tiempo de ejecucin.

ValueByR Recupera el valor de la celda en la fila DTParameter.Value


especificada del parmetro en la tabla de datos
ow en tiempo de ejecucin. ByRow(RowNum)

Ejemplo:
Tenga en cuenta la siguiente tabla de datos:
Val = DataTable.GetSheet("Global").GetParameter("Principal").ValueByRow(2)
print Val 'Val Muestra 2556

DataTable.SetCurrentRow(1)
Val1 = DataTable.GetSheet("Global").GetParameter("Principal").Value
print Val1 'Val1 muestra 232

QTP - Mtodos DTSheet (DTSheet Methods)

Mtodos DTSheet:
Nombre del
Descripcin Sintaxis
mtodo

Agrega la columna especificada a la DTSheet.AddParameter


AddParamet
hoja en la tabla de datos en tiempo de (ParameterName,
er ejecucin. Value)

DeleteParam Elimina el parmetro especificado de DTSheet.DeleteParame


la tabla de datos en tiempo de
eter ejecucin. ter(ParameterID)

Devuelve el nmero de fila de la fila


GetCurrentR DTSheet.GetCurrentRo
activa en la tabla de datos en tiempo
ow de ejecucin. w

Devuelve el parmetro especificado


GetParamet DTSheet.GetParameter(
de la tabla de datos en tiempo de
er ejecucin. ParameterID)

GetParamet Devuelve el nmero total de DTSheet.GetParameter


columnas en la tabla de datos en
erCount tiempo de ejecucin.
Count

GetRowCoun Devuelve el nmero total de filas de


la tabla de datos en tiempo de DTSheet.GetRowCount
t ejecucin.

SetCurrentR Establece el foco en la fila DTSheet.SetCurrentRo


ow especificada de la tabla de datos w(RowNumber)

Desplaza el foco a la siguiente fila de


SetNextRow la tabla de datos.
DTSheet.SetNextRow

Desplaza el foco a la fila anterior de


SetPrevRow la tabla de datos.
DTSheet.SetPrevRow

Ejemplo:
'Acceso Datatable llegar recuento de filas y nmero de columnas
rowcount = DataTable.GetSheet("Global").GetRowCount
msgbox rowcount ' Muestra 4

colcount = DataTable.GetSheet("Global").GetParameterCount
msgbox colcount 'Muestra 3

DataTable.SetCurrentRow(2)
val_rate = DataTable.Value("Rate","Global")
print val_rate ' Muestra 7 %

val_ppl = DataTable.Value("Principal","Global")
print val_ppl 'Muestra "2556

val_Time = DataTable.Value ("Tiempo", "Global")


imprimir val_Time ' Muestra 5
QTP - CheckPoints

Qu son los puntos de comprobacin ( CheckPoints )?


Los puestos de control, como el nombre lo dice todo, se refiere
a un punto de validacin que compara el valor actual de las
propiedades especificadas o estado actual de un objeto con el valor
esperado que se puede insertar en cualquier punto del tiempo en el
guin.

Tipos:
Tipo Descripcin

Estndar Verifica los valores de las propiedades de un objeto en la aplicacin bajo


Checkpoint(Stand prueba y el apoyo de todos los entornos de complemento.
ard
Checkpoint )

Bitmap
Checkpoint(Bitma Verifica un rea de su aplicacin como un mapa de bits
p Checkpoint)

Archivo de controles
de contenido(File Verifica el texto en un archivo de forma dinmica generada o accedida
Content como txt, pdf
Checkpoint )

Tabla
Checkpoint(Table Verifica la informacin dentro de una tabla. No se admiten todos los
ambientes.
Checkpoint)

Checkpoint Verifique si el texto que se muestra dentro de un rea definida en una


texto(Text aplicacin basada en Windows, de acuerdo con los criterios
Checkpoint) especificados.

Texto Area
Checkpoint(Text Verifica si la cadena de texto se muestra dentro de un rea definida en una
aplicacin basada en Windows, de acuerdo con los criterios
Area especificados.
Checkpoint)

Accesibilidad
Checkpoint(Acce Verifica la pgina e informa de las reas del sitio web que pueden no
ajustarse a la World Wide Web Consortium (W3C) Web Content
ssibility Accessibility Guidelines
Checkpoint)

Pgina
Checkpoint(Page Verifica las caractersticas de una pgina Web.Tambin puede comprobar
si hay enlaces rotos.
Checkpoint)

Checkpoint
Database(Databa Verifica el contenido de una base de datos accesible mediante la
se aplicacin bajo prueba.
Checkpoint)

XML
Checkpoint(XML Verifica el contenido de los documentos .xml o .xml documentos en
pginas Web y los marcos.
Checkpoint)
Insercin CheckPoint
Cuando el usuario quiere insertar un punto de control, hay que
asegurar que la mayor parte de los puntos de control son
compatibles, solamente durante las sesiones de grabacin. Una
vez que el usuario deja de grabar, los puntos de control NO estn
habilitados ( checkpoints are NOT enabled ).
A continuacin se muestra el men de puntos de control,
cuando el usuario no est en el modo de grabacin ( NOT in the
recording mode ).

A continuacin se muestra el men de puntos de control, cuando el


usuario est en el modo de grabacin ( recording mode ).

Ejemplo:
Los puestos de control se aaden para la aplicacin bajo
prueba - "http://easycalculation.com/"
' 1. insertado Estndar Checkpoint
Status = Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Check
CheckPoint("Numbers")

If Status Then
print "Checkpoint Passed"
Else
Print "Checkpoint Failed"
End if

' 2. Insertado BitMap Checkpoint


imgchkpoint = Browser("Math Calculator").Page("Math Calculator").Image("French").Check
CheckPoint("French")

If imgchkpoint Then
print "Checkpoint Passed"
Else
Print "Checkpoint Failed"
End if

Visualizacin de las propiedades de Checkpoint


Tras insertar, en caso que un probador quiere cambiar los
valores, podemos hacerlo mediante la realizacin de la derecha,
haga clic en la palabra clave 'punto de control' ( 'checkpoint' ) de la
secuencia de comandos y navegar a "Propiedades Checkpoint"
( "Checkpoint Properties" ) como se muestra a continuacin:
Puede localizar los mismos puntos de control en repositorio de
objetos, as como se muestra a continuacin. Muestra
exactamente qu tipo de punto de control y cules son los valores
esperados, tiempo fuera valores.

Qu es la sincronizacin ( Synchronization )?
Punto de sincronizacin es la interfaz de tiempo entre la
herramienta y la aplicacin bajo prueba. Punto de sincronizacin
es una funcin para especificar el tiempo de retardo entre un paso y
otro de la escritura de la prueba.
Por ejemplo, al hacer clic en un enlace puede cargar la pgina es de
1 segundo, a veces 5 segundos o incluso podra tardar 10 segundos
encargarse por completo. Depende de varios factores tales como
el servidor de aplicaciones el tiempo de respuesta, ancho de banda
de red, las capacidades del sistema de cliente, etc ( server response
time, network bandwidth , client system capabilities etc )
Si el tiempo est variando el script fallar a menos que el probador
se encargue de estas diferencias de tiempo de forma inteligente.

Formas de insertar punto de sincronizacin ( Sync Point ):

WaitProperty ( WaitProperty )
Existir ( Exist )
Espera ( Wait )
Sync (slo para aplicaciones basadas en web) ( Sync(only for web
based apps) )
Insercin de puntos QTP incorporada de sincronizacin ( Inserting
QTP Inbuilt Synchronization points ).

Digamos que necesitamos para insertar un punto de


sincronizacin entre click en el enlace "nmeros" ( "numbers" ) y
haciendo click en la calculadora de "inters simple" ( "simple
Interest" ) de en "http://easycalculation.com/". Ahora vamos a echar un
vistazo a las 5 maneras de insertar puntos de sincronismo para el
escenario anterior.

MTODO 1: WAITPROPERTY ( WAITPROPERTY )


WaitProperty es un mtodo que toma el nombre de la propiedad,
el valor y el tiempo de espera de valor indicado, como entrada para
realizar la sincronizacin, siempre que se cumpla la propiedad en
ese tiempo determinado, regresa verdadero. Es un WAIT
dinmico y por lo tanto, esta opcin es recomendada para su
utilizacion.
'Mtodo 1 - WaitProperty con 25 segundos
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

obj.Link("Simple Interest").WaitProperty "text", "Simple Interest",25000


obj.Link("Simple Interest").Click

MTODO 2: EXISTE ( EXIST )


El Exist, es un mtodo que toma el valor de tiempo de espera
como entrada para realizar la sincronizacin. De nuevo, es un
WAIT dinmico y, por lo tanto, esta opcin esta recomendada para
su ser utilizada.
'Mtodo 2: Exist Timeout - 30 segundos
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

If obj.Link("Simple Interest").Exist(30) Then


obj.Link("Simple Interest").Click
Else
Print "Link NOT Available"
End IF

MTODO 3: ESPERAR ( WAIT )


El Wait, es un punto de sincronizacin hardcoded que espera
independiente si el evento sucedi o no. Por lo tanto el uso de Wait
no es recomendable y se puede utilizar para tiempo de espera ms
corto como 1 o 2 segundos.
'Mtodo 3: Wait Timeout - 30 segundos
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click
wait(30)
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click

MTODO 4: MTODO DE SINCRONIZACIN ( SYNC METHOD )


El Mtodo de sincronizacin ( SYNC METHOD ) slo se puede
utilizar para aplicaciones web, donde siempre hay un desfase entre
la carga de la pgina.
'Mtodo 4:
Dim obj
Set obj = Browser("Math Calculator").Page("Math Calculator")
obj.Link("Numbers").Click

Browser("Math Calculator").Sync
Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").Click

MTODO 5: INSERCIN DE PUNTOS QTP INCORPORADA DE


SINCRONIZACIN ( INSERTING QTP INBUILT SYNCHRONIZATION
POINTS ):
Paso 1: Entra en el modo de grabacin. Esta opcin se desactiva
si el usuario no est en modo de grabacin ( NOT in Recording Mode
).

Paso 2: Ir a "Diseo" -> "punto de sincronizacin" ( "Design" ->


"Synchronization Point" ).

Paso 3: Necesitamos Seleccione el objeto que queremos poner el


punto de sincronizacin.Despus de seleccionar el objeto, y se abre
la ventana de objetos, como se muestra a continuacin:
Paso 4: Haga clic en Ok, el "Aadir Ventana de sincronizacin"
( "Add Synchronization Window" ) se abre. Seleccione la propiedad,
Valor y Tiempo de espera de valor ( Select the Property, Value and
Time out value ) y haga click en Aceptar ( OK ), como se muestra a
continuacin:
Paso 5: El Script se genera como se muestra a continuacin, que
es el mismo que el de la WaitProperty (Mtodo 1) que ya habamos
discutido:

Browser("Math Calculator").Page("Math Calculator").Link("Numbers").Click


Browser("Math Calculator").Page("Math Calculator").Link("Simple Interest").WaitProperty
"text", "Simple Interest", 10000

Defecto de sincronizacin ( Default Synchronization ):


Cuando el usuario no ha utilizado ninguno de los mtodos de
sincronizacin de arriba, todava QTP tiene objeto en construccin
de tiempo de espera de sincronizacin que puede ser ajustado por el
usuario.
Vaya a "Archivo" >> "Configuracin" >> Ejecutar >> Ficha Objeto
de sincronizacin de tiempo ( "File" >> "Settings" >> Run Tab >>
Object Synchronization Time out ) como se muestra a continuacin.
identificacin Inteligente ( Smart Identification ):
A veces, QTP es incapaz de encontrar cualquier objeto que
coincide con la descripcin de objeto reconocido o puede encontrar
ms de un objeto que se ajuste a la descripcin, a continuacin, QTP
ignora la indicacin reconocida y utiliza el mecanismo de
identificacin inteligente para reconocer el objeto.
Identificacin Inteligente de QTP utiliza dos tipos de
propiedades:
Propiedades de Filtro Base ( Base Filter Properties ) - Las
propiedades bsicas de una clase de objeto de prueba en
particular cuyos valores no se pueden cambiar sin cambiar la
esencia del objeto original.
Propiedades de los filtros opcionales ( Optional Filter Properties )
- Otras propiedades tambin ayudan a identificar los objetos de
una clase particular, cuyas propiedades son poco probable que
cambie a menudo, pero puede ser ignorada si ya no son
aplicables.
Habilitacin de identificacin inteligente para un objeto:
Paso 1: Vaya a "Herramientas" -> "Identificacin de objetos"
( "Tools" -> "Object Identification" ). Se abre Objeto de
identificacin de dilogo.

Paso 2: Elija el Medio Ambiente, de objetos de clase y active


"Enable Smart identificacin" ( Turn ON "Enable Smart
Identification" ) como se muestra a continuacin:

Paso 3: Haga clic en Configurar y elegir la base y Propiedades de


los filtros opcionales ( base and Optional Filter Properties ).
Paso 3: Aadir Propiedades en base aparte de la que viene por
defecto y tambin aadir / quitar ( add/remove ) propiedades de filtro
opcionales. Tenga en cuenta que Las mismas propiedades que no
pueden ser parte de ambas propiedades obligatorias y Auxiliares y
haga clic en "Aceptar" ( "OK " ).

Paso 4: Verificar si la identificacin inteligentes estn habilitada


despus de aadir objeto de ese tipo en el repositorio de objetos
( Object Repository ). Identificacin Inteligente se establece en
'true' ( Smart Identification is Set to TRUE ).Tambin podemos hacer
que sea 'falso' ( FALSE ) en caso de que no deseamos permitir la
identificacin inteligente.
Paso 5: Incluso podemos desactivar un nivel de prueba mediante la
aplicacin a nivel de script de prueba en "Ajustes" del men
"Archivo" ( "Settings" of "File" )como se muestra a continuacin:
Paso 6: Si la identificacin inteligente ( Smart Identification ) est
desactivada segn Paso # 5 entonces no le puedo aplicar
identificacin inteligente ( Smart Identification ) para cualquier
objeto durante la ejecucin del script.

Paso 7: En estos casos los objetos se aaden con identificacin


inteligente ( Smart Identificacin ) como Off ( Smart Identification
as Off ), QTP no utilizar identificacin inteligente ( Smart
Identificacin ), para reconocer los objetos en adelante ya que se
encuentra la opcin en Off.

Depuracin ( Debugging ):
La Depuracin ( Debugging ), en el contexto de pruebas de
automatizacin, es un proceso sistemtico de detectar y solucionar
los problemas de codificacin en los scripts de automatizacin para
que el guin ser ms robusto y puede detectar los defectos en la
aplicacin.
Existen varias formas de realizar la depuracin utilizando
puntos de quiebre en QTP. Puntos de Quiebre ( Break Points )
pueden insertar simplemente pulsando "F9" o utilizando la opcin de
men "Ejecutar" -> "Insercin / Extraccin de Break Point" ( "Run" ->
"Inserting/Removing Break Point" ).
Despus de insertar el punto de la "Red Coloured" ( "Red
Coloured" ) Dot y la lnea se resaltar en rojo como se muestra a
continuacin en el tiempo:
Mtodo ShortCut Descripcin

Step Se usa para ejecutar cada Paso. Pasos en la Funcin / Accin y ejecuta
F11
Into lnea por lnea. Se detiene en cada lnea despus de la ejecucin.

Step Se utiliza para pasar por encima de la funcin. Step Over slo se
F10
Over ejecuta el paso actual en el documento activo.

Despus Paso a paso por la funcin, puede utilizar el comando Step


Step Shift +
Out. Step Out contina la carrera hasta el final de la funcin y luego
Out F11 hace una pausa la sesin de ejecucin en la siguiente lnea.

Opciones de Break Point:


Varias opciones en Break Point puede acceder a Men
Navegacin 'Run'.

ShortCut Descripcin

F9 Insertar / Quitar BreakPoint

Ctrl + F9 Activar / Desactivar BreakPoint

Ctrl + Shift + F9 Borrar todo BreakPoint

Use Only Menu Activar / Desactivar todos los breakpoints

Panel de depuracin:
Los siguientes son los paneles en la ventana de depuracin:

Salida ( Output ) - Esta pestaa muestra toda la salida de las


sentencias print.
Ver ( Watch ) - Esta pestaa muestra la salida booleana de la
expresin dada.
Variables Local ( LocalVariables )- Esta pestaa muestra la
salida de las variables locales.

Ejemplo:
El reloj Pane ( Watch Pane ) muestra la expresin de salida
como se muestra a continuacin:

El Panel de Variables Locales muestra los valores en poder de


las variables locales, como se muestra a continuacin:

Qu es el tratamiento de errores ( Errors


Handling )?
Hay varias maneras en el manejo de errores en QTP. Hay tres
tipos posibles de errores se podra encontrarse al trabajar con QTP.
Errores de sintaxis ( Syntax Errors )
Errores lgicos ( Logical Errors )
Los errores de tiempo de ejecucin ( Run Time Errors )

Tipos de errores ( Errors Types ).

ERRORES DE SINTAXIS ( SYNTAX ERRORS ):


Los errores de sintaxis son los errores tipogrficos o una pieza
del cdigo que no esta conforme con la gramtica del lenguaje
VBScript. Los errores de sintaxis se producen en el momento de la
compilacin del cdigo y no se pueden ejecutar hasta que los
errores son fijos. Para verificar la sintaxis uno usa el atajo de
teclado como Ctrl + F7 y el resultado se muestra a continuacin.
Si la ventana no aparece uno puede navegar a "Ver" -> "Errores"
( "View" -> "Errors" ).
ERRORES LGICOS ( LOGICAL ERRORS ):
Si el cdigo es sintcticamente correcto, pero produce
resultados inesperados. Los errores lgicos generalmente no
interrumpe la ejecucin, pero producen resultados incorrectos. Los
errores lgicos pueden ocurrir debido a varias razones, a saber;
suposiciones errneas o mala interpretacin de la exigencia y la
lgica del programa a veces incorrectos (utilizando do-while en lugar
de do-Until) o bucles infinitos ( Infinite Loops ).
Una de las maneras de detectar un error lgico es llevar a cabo
revisiones por pares y tambin verificar el archivo de salida QTP /
resultado, para asegurar que en la herramienta se ha realizado lo
que se ha pretendido hacer.

LOS ERRORES DE EJECUCIN ( RUNTIME ERRORS ):


Como dice el nombre, este tipo de error ocurre en tiempo de
ejecucin. La razn de este tipo de errores es que el cdigo a
intentando realizar algo, pero no es capaz de hacerlo y el cdigo por
lo general se detiene, ya que es incapaz de continuar con la
ejecucin. Ejemplos clsicos de errores de tiempo de ejecucin
son,
1.Archivo no encontrado ( File NOT found ) pero el cdigo intenta
leer el archivo.
2.Objeto no encontrado ( Object NOT found ) pero los scripts estn
tratando de actuar sobre ese objeto en particular.
3.Al dividir un nmero por cero ( Dividing a number by Zero ).
4.ndice de la matriz esta fuera de lmite ( Array Index out of
bounds ) mientras se accede a elementos de la matriz.
Gestin de errores en tiempo de ejecucin ( Handling Run - Time
Errors ):

Hay varias formas de manejar los errores en el cdigo:

1. Utilizacin de los parmetros de prueba ( Using Test Settings )-


El manejo de errores se puede definir en la configuracin de la
prueba, vaya hasta la opcin "Archivo" >> "Configuracin" >>
"Ejecutar" ( "File" >> "Settings" >> "Run" ) como se muestra a
continuacin. Podemos seleccionar cualquiera de los parmetros
especificados y haga clic en "Aceptar" ("OK").
2. Usando Instruccin On Error ( Using On Error Statement )-
Instruccin On Error se utiliza para notificar al motor de
VBScript de las intenciones para manejar los errores de tiempo de
ejecucin por el probador, en lugar de permitir que el motor de
VBScript para mostrar mensajes de error que no son fciles de usar.
En caso de error Continuar con lo siguiente ( On Error Resume
Next ) - On Error Resume Next informa al motor de VBScript para
procees ejecutando la siguiente lnea de cdigo cuando se
encuentra un error.
En caso de error Goto 0 ( On error Goto 0 ) - Esto ayuda a los
Tester para apagar el control de errores.

3. Usar Objeto en caso de Error ( Using Err Object )-


Objeto Error es un objeto incorporado en VBScript que capta; el
tiempo de ejecucin, nmero de error y error de descripcin con la
que vamos a ser capaces de depurar en el cdigo fcilmente.

Err.Number - Los rendimientos de propiedad Nmero o establece


un valor numrico que especifica para un error. Si el valor es 0,
entonces Err.Number indica que ningn error haba ocurrido.
Err.Description - Los descripcin retornos de propiedad o
establece una breve descripcin sobre un error.
Err.Clear - El mtodo Clear restablece el objeto Err y borra todos
los valores previos asociados.

EJEMPLO:
'Llame a la funcin para sumar dos nmeros
Call Addition(num1,num2)

Function Addition(a,b)

On error resume next


If NOT IsNumeric(a) or IsNumeric(b) Then
Print "Error number is " & err.number & " and description is : " & err.description
Err.Clear
Exit Function
End If

Addition = a+b

' desactiva el manejo de errores


On Error Goto 0

End function

4. Usando Instruccin Exit ( Using Exit Statement )-


Declaraciones de salida, se puede utilizar junto con objeto Err
para salir de una prueba o accin o iteracin en funcin del valor
Err.Number. Veamos cada uno de esos estados de salida en
detalle.

ExitTest - Sale de toda la prueba QTP no importa lo que la


iteracin de configuracin en tiempo de ejecucin sea.
ExitAction - Sale de la accin actual.
ExitActionIteration - Sale de la iteracin actual de la accin.
ExitTestIteration - Sale de la iteracin actual de la prueba QTP y
procede a la siguiente iteracin.

5. Escenarios de recuperacin ( Recovery Scenarios )- Al


encontrar un error, los escenarios de recuperacin se activan en
base a ciertas condiciones y se tratan en detalle en un captulo
aparte.

6. Objeto Reportero ( Reporter Object )- Reportero de objetos nos


ayuda a informar de un evento para los resultados de la ejecucin.
Nos ayuda a identificar si la accin / actividad ( action/step ) en
cuestin es de aprobado/reprobado.

'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details, [ImageFilePath]

'Example
Reporter.ReportEvent micFail, "Login", "User is unable to Login."
Escenarios de recuperacin ( Recovery
Scenarios )
Durante la ejecucin de los scripts QTP, podramos obtener
algunos errores inesperados. A fin de recuperar la prueba y
continuar ejecutando el resto de la secuencia de comandos a partir
de estos errores inesperados, se utilizan Escenarios de
recuperacin. El Administrador de escenarios de recuperacin se
puede acceder navegando en "Recursos" -> Recuperacin Scenario
Manager ( "Resources" -> Recovery Scenario Manager ) como se
muestra a continuacin:
Pasos para crear Escenario Recuperacin:

Paso 1: Al hacer clic en el botn escenario de recuperacin


"Nuevo" ( "New" ), el Asistente de escenario de recuperacin se
abre como se muestra a continuacin:

Paso 2: El siguiente paso es elegir el evento de disparo.


Corresponde al evento que surge, puede ser cualquiera de los
siguientes cuatro eventos.

Pop-Up Window
Estado del objeto ( Object State )
Test Run Error
Aplicacin Crash

Paso 3: Abre la ventana Recuperacin de Operaciones ( Recovery


Operations Window Opens ). Operacin de la recuperacin,
puede tomar de los siguientes opcines, como se muestra a
continuacin:

Paso 4: Despus de especificar la operacin de recuperacin


apropiada ( Post Recovery Operation ), tenemos que especificar la
operacin de recuperacin del anuncio ( Post Recovery Operation ),
as como se muestra a continuacin:
Paso 5: Despus de especificar la Operacin de Recuperacin
( Post Recovery Operation ), el escenario de recuperacin debe ser
nombrado y se aade a la prueba de modo que se activar.

Paso 6: La creacin de escenarios de recuperacin es completa y


debe ser asignada a la prueba actual, marcando la opcin "Aadir
Escenario de la corriente de prueba" ( "Add Scenario to the current
Test" ) y haga clic en "Finalizar" ( "Finish" )
Paso 7: El Agregado de recuperacin Escenario ( Recovery
Scenario ) ser como se muestra a continuacin y haga clic en
"Cerrar" ( "Close" ) para continuar.

Paso 8: Al hacer click en Cerrar ( Close Button ), QTP sacara al


usuario y
guardar
la
Recuperacin del escenario creado ( Recovery Scenario ). Se
guardar con la extencin .qrs y el asistente se cerrar.

Verificacin:
El escenario de recuperacin Creado debera ser parte de la
prueba y ahora puede ser verificado mediante opcin de navegacin
a "Archivo" -> "Configuracin" -> "Recovery" ( "File" -> "Settings" ->
"Recovery" ).
Variables de entorno (Environment Variables)
Variables de entorno QTP son tipos especiales de variables que
se pueden acceder por todas las acciones, bibliotecas de funciones
y escenarios de recuperacin. Existen variables de entorno
incorporadas para Windows que estn disponibles para todas las
aplicaciones que se ejecutan en ese sistema en particular, como
variables de entorno QTP, slo estn disponibles para que el guin
de prueba durante el tiempo de ejecucin.

Tipos de variables de entorno ( Environment Variables )


Construido en Variables de entorno ( Built-in Environment Variables )
- Proporciona una gama de parmetros del entorno que pueden
proporcionar informacin tal como nombre de la prueba, nombre de
la accin, la ruta de acceso de la prueba, nombre de host local, el
nombre del sistema operativo, tipo y su versin. Los nombres de las
variables de entorno se puede acceder a la opcin navegando a
"Archivo" -> "Ajustes de prueba" -> "Medio Ambiente" ( "File" -> "Test
Settings" -> "Environment" ).
Definido por el usuario interno ( User defined Internal ) - Variables
definidas por el usuario se puede guardar mediante la opcin
"Definido por el usuario" ( "User Defined" ) en la opcin de la
ventana Medio Ambiente ( Environment ). El botn "+" que se hace
click para entrar al Nombre del parmetro y valor, como se muestra
a continuacin:
Definido por el usuario externo ( User Defined External ) - Variables
definidas por el usuario se pueden almacenar en un archivo externo
como un .xml y se pueden cargar en la prueba, como se muestra en
la figura siguiente o tambin se pueden cargar dinmicamente en
tiempo de ejecucin, como se explica a continuacin en uno de los
ejemplos.

Variables de entorno - Mtodos compatibles ( Environment


Variables - Supported Methods ):
1. Propiedad ExternalFileName - Devuelve el nombre del
archivo de variables de entorno externo cargado especificado en la
ficha Entorno del cuadro de dilogo Configuracin de prueba. Si no
se carga ningn archivo de variables de entorno externo, esta
propiedad devuelve una cadena vaca

x= Environment.ExternalFileName
print x

2. El Mtodo LoadFromFile ( LoadFromFile Method ) - Carga el


archivo de variables de entorno especificada (xml) dinmicamente
en tiempo de ejecucin. Cuando se utiliza este mtodo, no tiene que
ser aadido las variables de entorno de forma manual en la ficha
Entorno.

Environment.LoadFromFile "D:\config.xml"
b = Environment.Value("Browser")
print b
3. Valor de la propiedad - Recupera el valor de las variables de
entorno. Tambin podemos establecer el valor de las variables de
entorno interno definidos por el usuario que usan esta propiedad.

"Consiga el valor de las variables incorporadas Ambiente


a = Environment.Value("OS")
print a
b = Environment.Value("ActionName")
print b

'Loaded from External File


Environment.LoadFromFile "D:\config.xml"
c = Environment.Value("Browser")
print c
Archivos de la Biblioteca ( Library Files )
A fin de modularizar el guin, archivos de biblioteca se agregan
a la secuencia de comandos QTP. Contiene la declaracin de
variables, funciones, clases, etc. Ellos permiten la reutilizacin que
se puede compartir a travs de scripts de prueba. Ellos se
guardan con un extencin .vbs o .qfl
Un nuevo archivo de la biblioteca puede ser creada por la
opcin Navegando a "Archivo" >> "Funcin Biblioteca" ( "File" >>
"Function Library" )

La asociacin funciones de bibliotecas:


Mtodo # 1: Mediante el uso de "Archivo"> "Configuracin">
Recursos> opcin Asociado de Funcin de Biblioteca ( "File" >
"Settings" > Resources > Associate Function Library option ). Click
en "+" para aade los archivos las funciones de biblioteca y aadirla
utilizando la trayectoria real o la ruta relativa, como se muestra a
continuacin:
Mtodo # 2: Utilizando el mtodo ExecuteFile.
'Sintaxis: ExecuteFile (Filepath)
ExecuteFile "C:\lib1.vbs"
ExecuteFile "C:\lib2.vbs"

Mtodo # 3: Uso del mtodo LoadFunctionLibrary.


'Sintaxis: LoadFunctionLibrary (Filepath)
LoadFunctionLibrary "C:\lib1.vbs"
LoadFunctionLibrary "C:\lib2.vbs"

Mtodo # 4: Modelo de Object de Automatizacin (AOM) - Se trata


de un mecanismo mediante el cual podemos controlar diversas
operaciones QTP, QTP fuera ( outside QTP ). El uso de AOM, podemos
ejecutar en QTP, abre la prueba, bibliotecas de funciones Asociados
etc. El VBScript siguiente debe ser guardado con extensin .vbs y al
momento de celebrar el mismo, QTP se pondr en marcha y se
comenzara a ejecutar la prueba. AOM se discutir en detalle
en los captulos posteriores.

'Lanzamiento QTP
Set objQTP = CreateObject("QuickTest.Application")
objQTP.Launch
objQTP.Visible = True

' Abra la prueba


objQTP.Open "D:\GUITest2", False, False
Set objLib = objQTP.Test.Settings.Resources.Libraries

'Biblioteca de funciones de Asociado si no est ya asociada.


If objLib.Find("C:\lib1.vbs") = -1 Then
objLib.Add "C:\lib1.vbs", 1
End
QTP - Proceso de pruebas automatizadas
( Automated Testing Process )
Resultados de la prueba ( Test Results ):
La ventana Resultados de la prueba nos da informacin
suficiente para mostrar los pasos pasaron ( steps passed ), fallado
( failed ), etc. Una ventana de resultados se abre automticamente
despus de la ejecucin de la prueba (segn la configuracin por
defecto).
Pasos Passed ( Steps Passed )
Pasos Failed ( Steps Failed )
Parmetros de entorno ( Environment Parameters )
Estadsticas grficas ( Graphical Statistics )
Interrupciones de Operaciones en Resultados de
la prueba ( Operations perfomed in Test Results )

CONVERSIN DE RESULTADOS A HTML ( CONVERTING RESULTS


TO HTML ):
En la ventana del visor de resultados, vaya a "File" -> "Exportar
a un archivo" ( "File" -> "Export to File" ), El dilogo de Exportacin
de Resultados de ejecucin se abre como se muestra a
continuacin:

Podemos elegir qu tipo de informe que se exporta. Puede ser


resultados a corto, Resultados detallados o incluso podemos
seleccionar nodos. Al seleccionar el nombre de archivo y exportarlo,
el archivo se guarda como archivo .HTML
FILTRAR LOS RESULTADOS ( FILTERING THE RESULTS ):
Los resultados pueden ser filtrados de estado basado, Tipo de
nodo, iteraciones. Se puede acceder mediante el uso del botn
Filtro en la "Ventana de Resultados de la Prueba" ( "Test Results
Window" )
EL AUMENTO DE LOS DEFECTOS ( RAISING DEFECTS ):
Los defectos se pueden registrar en control de calidad directamente
desde el panel de la Ventana de Resultados de la Prueba al acceder
a "Herramientas" -> "Aadir Defecto" ( "Tools" -> "Add Defect" )
quedando abierta la conexin a ALM como se muestra a
continuacin:

Resultados de la prueba ( Test Results ):


La Ventana de resultados de prueba automtica se puede
configurar en "Herramientas" -> "Opciones" -> "Ejecutar Sesiones"
( "Tools" -> "Options" -> "Run Sessions" ). Podemos convertir
si fuera o si es necesario y tambin podemos cambiar ON (Activar el
check o poner la palomita) "automticamente Exportar resultados
cuando la sesin termina" ( "Automatically Export Results when
session Ends" )
Levantando Errores ( Upon Errors ), la pantalla o la pelcula se
pueden grabar segn la configuracin. Lo mismo se puede
configurar en "Herramientas" -> "Opciones" -> "Captura de pantalla"
( "Tools" -> "Options" -> "Screen Capture" ). Podemos guardar la
captura o pelculas en 3 formas.
Para los errores ( For Errors )
Siempre ( Always )
Por errores y advertencias ( For Errors and Warnings )

Trabajo con
objetos de
GUI
( Working
with GUI Objects ):
Hay varios objetos GUI con la que interacta QTP durante la
ejecucin del script. Por lo tanto es importante conocer los
mtodos bsicos para los objetos GUI, procesos que vamos a ser
capaces de trabajar en forma efectiva.

Trabajar con cuadros de texto ( Working with Text Box ):


A continuacin se presentan los mtodos que utilizan los que
accedemos cuadro de texto en tiempo de ejecucin.
Set - Ayuda al probador para establecer valores en el cuadro de
texto
Click - clic en el cuadro de texto ( Text Box )
SetSecure - Se utiliza para ajustar el texto en los cuadros de
contrasea segura.
WaitProperty - espera hasta que el valor de la propiedad se
convierte en verdad.
Exist - Los cheques de la existencia de la caja de texto
GetROProperty ("text") - Obtiene el valor del cuadro de texto
GetROProperty ("Visible") - Devuelve un valor booleano si es
visible.

EJEMPLO:
Browser("Math Calculator").Sync
Set Obj = Browser("Math Calculator").Page("SQR Calc").WebEdit("n")

'Los clics en el Cuadro de texto


Obj.Click

' Verificar si el objeto Exist - Devuelve Boolean valor


a= obj.Exist
print a

'Establecer el valor
obj.Set "10000" : wait(2)

' Obtener el Runtime Object Property Value de el - Text Box


val = obj.GetROProperty("value")
print val

'Obtener el tiempo de ejecucin del objeto del


'inmueble - VISIBILIDAD - Boolean Valor

x= Obj.GetROProperty("visible")
print x
Trabajar con casilla de verificacin ( Check Box ):
Los siguientes son algunos de los mtodos claves con los que
se puede trabajar con la casilla de verificacin.
Set - Ayuda al Tester para establecer el valor casilla "ON" (Activar
el check o poner la palomita) u "OFF" (Desactivar el check o quitar
la palomita)
Click - Clicks en la casilla de verificacin. Incluso los
controles ON u OFF pero el usuario no estar seguro sobre el
status.
WaitProperty - espera hasta que el valor de la propiedad se
convierte en verdad.
Exist - Busca el objeto predeterminado para saber si existe en un
lapso de tiempo.
GetROProperty ("name") - Obtiene el nombre de la casilla de
verificacin
GetROProperty ("Visible") - Devuelve un valor booleano si es
visible

EJEMPLO:
"Para comprobar que la casilla de verificacin
Set Obj = Browser("Calculator").Page("Gmail").WebCheckBox("PersistentCookie")
Obj.Set "ON"

' Para desmarcar el Check Caja


Obj.Set "OFF"

'Verifica la existencia de la caja Compruebe e devuelve Valor booleano


val = Obj.Exist
print val

' Obtiene el Nombre de la CheckBox


a= Obj.GetROProperty("name")
print a

'Verifica la propiedad visible y devuelve el valor booleano.


x = Obj.GetROProperty("visible")
print x
Trabajar con Radio Button ( Radio Button ):
Los siguientes son algunos de los mtodos claves con la que se
puede trabajar con el botn Radio.
Seleccione (RadioButtonName) - Ayuda al probador configurar el
cuadro de Radio "ON" (Activar el Radio Button o poner el punto)
Click - clic en el botn de radio. Incluso Radio Botn ON o en
OFF pero probador no puede obtener el estado.
WaitProperty - espera hasta que el valor de la propiedad se
convierte en verdad.
Exist - Los cheques de la existencia de la Radio Button
GetROProperty ("name") - Obtiene el nombre del botn de radio
GetROProperty ("Visible") - Devuelve un valor booleano si es
visible

EJEMPLO:
'Seleccione el Radio Button por su nombre "YES"
Set Obj = Browser("Calculator").Page("Forms").WebRadioGroup("group1")
Obj.Select("Yes")

' Verifica la Existencia del Radio Button y devuelve Boolean Valor


val = Obj.Exist
print val

'Devuelve el outerHTML del Radio Button


txt = Obj.GetROProperty("outerhtml")
print text

' Devuelve el valor booleano valor si Radio botn es visible .


vis = Obj.GetROProperty("visible")
print vis
Trabajar con cuadros combinados ( Combo Box ):
Los siguientes son algunos de los mtodos claves con la que se
puede trabajar con el cuadro combinado ( Combo Box ).
Select(Value) - Ayuda al probador para seleccionar el valor del
ComboBox
Click - clic en el objeto.
WaitProperty - espera hasta que el valor de la propiedad se
convierte en verdad.
Exist - Los cheques de la existencia del cuadro combinado
GetROProperty ("Texto") - Obtiene el valor seleccionado del
cuadro combinado
GetROProperty ("all items") - Devuelve todos los elementos en el
cuadro combinado
GetROProperty ("items count") - Devuelve el nmero de
elementos en el cuadro combinado

EJEMPLO:
'Obtener la Lista de todos los elementos de la ComboBox
Set ObjList = Browser("Math Calculator").Page("Statistics").WebList("class")
x = ObjList.GetROProperty("all items")
print x

' Obtener el nmero de artculos de Combo Box


y = ObjList.GetROProperty("items count")
print y

'Obtener el valor de texto del elemento seleccionado


z = ObjList.GetROProperty("text")
print z

Trabajar con Botones ( Buttons ):


Los siguientes son algunos de los mtodos claves con la que se
puede trabajar con botones.
Click - clic en el botn.
WaitProperty - espera hasta que el valor de la propiedad se
convierte en verdad.
Exist - Los cheques de la existencia del botn
GetROProperty ("Name") - Obtiene el nombre del botn
GetROProperty ("Disabled") - Devuelve un valor booleano si est
activado / desactivado

EJEMPLO:
"Para realizar un clic en el botn
Set obj_Button = Browser("Math Calculator").Page("SQR").WebButton("Calc")
obj_Button.Click

' Para Realizar un Medio Haga clic en el botn


obj_Button.MiddleClick

"Para comprobar si est activado el botn o disabled.Returns Boolean Valor


x = obj_Button.GetROProperty("disabled")
print x
" Para buscar el nombre del botn
y = obj_Button.GetROProperty("name")
print y

Trabajar con Tablas Web ( webTables ):


En las aplicaciones actuales basadas en web, es cada ves mas
comn el uso de las Tablas Web y existen cada ves mas Tester que
entienden el funcionamiento de las mismas, as como llevar acabo el
trabajo con cuadros web. Por lo tanto este tema le ayudar a
trabajar con las tablas web con mas eficacia. Esto se aplica para
Web como para aplicaciones en Windows.
Identificacin del HTML ( html id ) - Si la tabla tiene una etiqueta
de identificacin, entonces lo mejor es hacer uso de esta
propiedad.
innerText - ttulo de la tabla.
sourceIndex - Obtiene el ndice Fuente de la Tabla
ChildItemCount - Obtiene el nmero de ChildItems ( Propiedades
del Hijo ) presentes en determinado Fila
RowCount - Obtiene el nmero de filas de la tabla
Nmero de Columnas ( ColumnCount ) - Obtiene el nmero de
columnas en la tabla
GetcellData - Obtiene el valor de la celda sobre la base de la
columna y la fila ndice

EJEMPLO:
Browser("Tutorials Point").Sync

'WebTable

Obj = Browser("Tutorials Point").Page("VBScript Decisions").WebTable("Statement")

'Obtiene el nmero de filas de la tabla

x = Obj.RowCount
print x

'Obtiene el nmero de Columnas de la tabla

y = Obj.ColumnCount(1)
print y

'Imprimir los celulares de datos de la tabla


For i = 1 To x Step 1
For j = 1 To y Step 1
z = Obj.GetCellData(i,j)
print "Row ID : " & i & " Column ID : " & j & " Value : " & z
Next
Next

'Recuperar el recuento Propiedades del hijo de Tipo Enlace en una Cell


'particular

z = Obj.ChildItemCount(2,1,"Link")
print z

Cules son los objetos virtuales ( Virtual


Objects )?
A veces, la aplicacin bajo prueba puede contener objeto de
Windows estndar, pero no son reconocidos por QTP. Bajo estas
circunstancias los objetos pueden ser definidos como objeto virtual
(VO) ( virtual object(VO) ) de tipo botn, etc enlace de modo que las
acciones del usuario pueden ser simulados en los objetos virtuales
durante la ejecucin.

Ejemplo:
Digamos que estamos automatizando un escenario en Microsoft
Word. Activ aplicacin MS Word y hago clic en cualquier icono
en la cinta. Por ejemplo, En la cinta de opciones Insertar, El
usuario hace clic en el botn "Imagen" ( "Picture" ). Un botn es
reconocido como WinObject de ah la importancia de los objetos
viturales.

Window("Microsoft Word").WinObject("Ribbon").Click 145,45


Window("Microsoft Word").WinObject("Ribbon").WinObject("Picture...").Click 170,104

Creacin de un objeto virtual ( Creating a Virtual Object ):


Paso 1: En este tipo de escenarios, los objetos virtuales se crean
mediante el Administrador de objeto virtuales o Nuevo objeto virtual
Entrando a el de la siguiente forma "Herramientas" >> "Objeto
virtual" >> "Nuevo objeto virtual" ( "Tools" >>
"Virtual Object" >> "New Virtual Object" ) y haga clic en botn
"Siguiente" ( "Next" )
Paso 2: Selecciona una Classe de tipo control en el Mapa del
objeto y haga click en "Siguiente" ( "Next" ).

Paso 3: Haga click en el Button "Marcar Objeto" ( "Mark Object" ),


cursor de cruz aparecera y marcar el objeto que desea asignar y
haga clic en "Siguiente" ( "Next" ).
Paso 4: Seleccin del padre del objeto virtual y haga clic en
"Siguiente" ( "Next" ).
Paso 5: Nombre de la coleccin en la que desea almacenar el
objeto virtual y haga clic en "Finalizar" ( "Finish" ).
Administrador de Objetos Virtuales:
El Administrador de Objetos Virtuales ( Virtual object Manager )
administra las colecciones de objetos virtuales. El Testers puede
agregar o eliminar los objetos virtuales desde el administrador de
objetos Virtual.
Seleccionando un Objeto Virtual de la siguiente forma:
"Herramientas" >> "virtual del Administrador de objetos" ( "Tools" >>
"Virtual Object Manager" ) como se muestra a continuacin:

Uso de objetos virtuales:


Despus de crear los objetos virtuales del objeto creado se
puede utilizar como se muestra a continuacin:
Window("Microsoft Word").WinObject("Ribbon").VirtualButton("button").Click
Limitaciones objeto virtual ( Virtual Object Limitations ):
QTP no admite objetos virtuales para grabacin analgica o de
bajo nivel.
Los puestos de control no se pueden aadir en virtuales objetos.
Objeto Virtual no son controlados por repositorio de objetos.
A pesar de que asignar un objeto a una clase en particular (o
botn de Lista), todos los mtodos de los objetos nativos no son
compatibles con los objetos virtuales.
Objeto espa no pueden utilizar en el objeto virtual.
La ejecucin de la prueba fallar si la resolucin de la pantalla
cambia a medida que el cambio de coordenadas.
Ventana de aplicacin ( Application Window ) debe ser de igual
tamao de la pantalla para que los objetos virtuales son
capturados correctamente.
Acceso a bases de datos ( Accessing Databases ):
Como tal QTP no proporciona ningn apoyo incorporado para
conectarse a la base de datos, sin embargo el uso de Tester de
VBScript ser capaz de conectarse e interactuar con bases de datos
utilizando objetos ADODB.
ADODB tiene 4 propiedades o mtodos con los que vamos a ser
capaces de trabajar con las bases de datos.
ADODB.Connection - Se utiliza para establecer una conexin con
la base de datos
ADODB.Command - Se utiliza para ejecutar un comando SQL
(consultas o procedimientos almacenados)
ADODB.Fields - Se utiliza para buscar a una columna en
particular de un conjunto de registros despus de ejecutar una
consulta / procedimiento almacenado
ADODB.Recordset - Se utiliza para obtener los datos de una
base de datos
Cmo conectar con base de datos ( connect to Database )?
Las bases de datos se pueden conectar utilizando cadenas de
conexin.Cada base de datos se diferencia la forma en que nos
conectamos a la de ellos, sin embargo, las cadenas de conexin se
puede construir con la ayuda de http://www.connectionstrings.com/
Ahora vamos a ver cmo conectarse a la base de datos con los
siguientes parmetros.
Tipo de base de datos ( Database Type ) -SERVIDOR MSSQL
Nombre de servidor ( Server Name ) - SQLEXPRESS
Nombre de base de datos ( Database Name ) - Trial
Id de usuario ( User Id ) - sa
Contrasea ( password ) - password123
El resultado de la consulta se muestra en el SQL Server
Management Studio de la siguiente manera:

Dim objConnection
'Set Adodb objeto de conexin
Set objConnection = CreateObject("ADODB.Connection")
Dim objRecordSet

' Crear RecordSet Objeto


Set objRecordSet = CreateObject("ADODB.Recordset")

Dim DBQuery 'Query to be Executed


DBQuery = "Select NAME from dbo.EMPLOYEE where AGE = 29"

' Conectar usando SQL OLEDB Conductor


objConnection.Open "Provider=sqloledb.1;Server=.\SQLEXPRESS;User
Id=sa;Password=Password123;Database=Trial"

'Ejecutar la consulta
objRecordSet.Open DBQuery,objConnection

'Volver al resultado Establezca


Value = objRecordSet.fields.item(0)
msgbox Value

'Livera a los Recursos


objRecordSet.Close
objConnection.Close

Set objConnection = Nothing


Set objRecordSet = Nothing
RESULTADO ( RESULT ):
Al ejecutar la secuencia de comandos por encima de la salida
se muestra en el cuadro de mensaje como se muestra a
continuacin:
QTP - Trabajar con XML ( Working with XML )

Qu es un XML?
El XML es un lenguaje diseado para almacenar datos que sean
legibles por el hombre y por la mquina. El uso del XML, hace que
se pueda intercambiar fcilmente informacion entre los sistemas
informticos y bases de datos.
Un ejemplo de XML y sus elementos claves se representan a
continuacin:

XML Acceso
Const XMLDataFile = "C:\TestData.xml"
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = False
xmlDoc.Load(XMLDataFile)

'Obtener el nmero de nodos (libros)


Set nodes = xmlDoc.SelectNodes("/bookstore/book")
Print "Total books: " & nodes.Length ' Displays 2

'Conseguir todos los ttulos


Set nodes = xmlDoc.SelectNodes("/Booklib/book/value/text()")

' obtener sus valores


For i = 0 To (nodes.Length - 1)
Title = nodes(i).NodeValue
Print "Title is" & (i + 1) & ": " & Title
Next
XML Comparando ( Comparing XML ):
Podemos comparar dos dados de xml.
Dim xmlDoc1
Dim xmlDoc2

'Cargar el XML Archivos


Set xmlDoc1 = XMLUtil.CreateXMLFromFile ("C:\File1.xml")
Set xmlDoc2 = XMLUtil.CreateXMLFromFile ("C:\File2.xml")

'Utilice el mtodo de comparacin del XML para comprobar si son 'equivalentes


Comp = xmlDoc1.Compare (xmlDoc1, xmlDoc2)

'Devuelve 1 si los dos archivos son los mismos


If Comp = 1 Then
Msgbox "XML Files are the Same"
Else
Msgbox "XML Files are Different"
End if
Programacin descriptiva ( Descriptive
Programming ):
Creacin de una prueba sin utilizar el repositorio de objetos se
conoce como programacin descriptiva ya que usted describe los
objetos como parte de la secuencia de comandos.
Los comandos o Guiones de programacin QTP pueden ejecutar
slo si los objetos estn presentes en el repositorio de objetos. Si las
descripciones de los objetos se crean mediante programacin
descriptivo cuando los tester quieren realizar una operacin en un
objeto que no est presente en el repositorio de objetos.
Cuando los objetos de la aplicacin son muy dinmicos en la
naturaleza.
Cuando el repositorio de objetos crece grande que se traducir
en un rendimiento como el tamao de los objetos del repositorio
aumenta.
Cuando el marco est construido de tal manera que se ha
decidido no utilizar Object Repository en absoluto.
Cuando Tester quieren realizar una accin en la aplicacin en
tiempo de ejecucin sin tener el conocimiento de las propiedades
nicas de los objetos.

Sintaxis:
Hay dos formas de escritura utilizando la tcnica de
programacin expositiva. Ellos son
1. Descripcin Objetos ( Description Objects )
2. Descripcin Cuerdas ( Description Strings )

Descripcin Objetos ( Description Objects ):


Script se desarroll utilizando objetos de descripcin que
depende de las propiedades usadas y sus valores correspondientes.
Entonces estas descripciones se utilizan para construir el
guin.

'Crear un objeto de descripcin


Set btncalc = Description.Create()

' Aadir descripciones y propiedades


btncalc("type").value = "Button"
btncalc("name").value = "calculate"
btncalc("html tag").value = "INPUT"

'Utilice el mismo a la escritura que


Browser("Math Calc").Page("Num Calculator").WebButton(btncalc).Click

Descripcin tipo Cadena ( Description Strings ):


La descripcin de los objetos se ha desarrollado utilizando las
propiedades y los valores como cadenas, como se muestra a
continuacin.
Browser("Math Calc").Page("Num Calculator").WebButton("html
tag:=INPUT","type:=Button","name:=calculate").Click

Objetos secundarios ( Child Objects )


QTP proporciona el mtodo ChildObjects que nos permite crear
una coleccin de objetos. El padre se pone precedido de
ChildObjects.

Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"

'Buscar todos los enlaces


Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc)

Dim i

' obj . Cuente valor tiene el nmero de enlaces en la pgina


For i = 0 to obj.Count - 1
'obtener el nombre de todos los eslabones de la pgina
x = obj(i).GetROProperty("innerhtml")
print x
Next

Identificadores ordinales ( Ordinal Identifiers )


Descripcin de programacin se utiliza para escritura basada
en identificadores ordinales que permitan QTP para actuar en esos
objetos cuando dos o ms objetos tienen las mismas propiedades.
'Usando Ubicacin
Dim Obj
Set Obj = Browser("title:=.*google.*").Page("micclass:=Page")
Obj.WebEdit("name:=Test","location:=0").Set "ABC"
Obj.WebEdit("name:=Test","location:=1").Set "123"

'ndice
Obj.WebEdit("name:=Test","index:=0").Set "1123"
Obj.WebEdit("name:=Test","index:=1").Set "2222"

'Momento de la creacin
Browser("creationtime:=0").Sync
Browser("creationtime:=1").Sync
Browser("creationtime:=2").Sync

Modelos de Automatizacion de Objetos

( Automation Object Model )

S QTP puede automatizarse mediante la interfaz COM que es


proporcionada por Hp-QTP. Modelo de objetos de automatizacin
es un conjunto de objetos, mtodos y propiedades que ayuda a los
Tester para controlar los ajustes de configuracin y ejecutan las
secuencias de comandos mediante la interfaz QTP. Las
Configuraciones dominantes / acciones que se pueden controlar son
los siguientes, pero sin limitarse a
1.Cargas todos los complementos necesarios para una prueba
2.Hace ejecucin mientras este visible QTP
3.Abre la prueba usando la ubicacin especificada
4.Funciones de Biblioteca Asociadas ( Associates Function
Libraries )
5.Especifica el objeto comn de sincronizacin tiempo fuera
6.Inicio y Fin iteracin ( Start and End Iteration )
7.Activar / Desactivar la Identificacin inteligente ( Enable/Disable
Smart Identification )
8.En Ajustes de Error ( On Error Settings )
9.Tabla de datos de Ruta ( Data Table Path )
10.Un nuevo escenario de recuperacin ( Recovery Scenario Settings
)
11.Entrar Configuracin Seguimiento ( Log Tracking Settings )

QTP 11,5x proporciona una documentacin exclusiva sobre


modelo de Automatizacin de objetos que se puede denominar
navegando a "Inicio" >> "Todos los programas" >> "Software de HP"
>> "HP Unified Functional Testing" >> "Documentacin" >> "Unified
Functional Testing Automation Referencia " ( "Start" >> "All
Programs" >> "HP Software" >> "HP Unified Functional Testing" >>
"Documentation" >> "Unified Functional Testing Automation
Reference" ).

Generar Cdigo de AOM ( Generate AOM Script ):


Tester puede generar cdigo de AOM de s mismo QTP usando
"Generar guin" ( "Generate Script" ) Opcin. Vaya a "Run" >>
"Configuracin" >> "Propiedades" >> "Generar guin" ( "Run" >>
"Settings" >> "Properties" Tab >> "Generate Script" ) como se
muestra a continuacin:
Ejemplo:

'Un script de ejemplo para demostramos AOM


Dim App 'As Application
Set App = CreateObject("QuickTest.Application")
App.Launch
App.Visible = True

App.Test.Settings.Launchers("Web").Active = False
App.Test.Settings.Launchers("Web").Browser = "IE"
App.Test.Settings.Launchers("Web").Address = "http://easycalculation.com/"
App.Test.Settings.Launchers("Web").CloseOnExit = True

App.Test.Settings.Launchers("Windows Applications").Active = False


App.Test.Settings.Launchers("Windows Applications").Applications.RemoveAll
App.Test.Settings.Launchers("Windows Applications").RecordOnQTDescendants = True
App.Test.Settings.Launchers("Windows Applications").RecordOnExplorerDescendants = False
App.Test.Settings.Launchers("Windows Applications").RecordOnSpecifiedApplications = True

App.Test.Settings.Run.IterationMode = "rngAll"
App.Test.Settings.Run.StartIteration = 1
App.Test.Settings.Run.EndIteration = 1
App.Test.Settings.Run.ObjectSyncTimeOut = 20000
App.Test.Settings.Run.DisableSmartIdentification = False
App.Test.Settings.Run.OnError = "Dialog"
App.Test.Settings.Resources.DataTablePath = ""
App.Test.Settings.Resources.Libraries.RemoveAll

App.Test.Settings.Web.BrowserNavigationTimeout = 60000
App.Test.Settings.Web.ActiveScreenAccess.UserName = ""
App.Test.Settings.Web.ActiveScreenAccess.Password = ""

App.Test.Settings.Recovery.Enabled = True
App.Test.Settings.Recovery.SetActivationMode "OnError"
App.Test.Settings.Recovery.Add "D:\GUITest2\recover_app_crash.qrs",
"Recover_Application_Crash", 1
App.Test.Settings.Recovery.Item(1).Enabled = True

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'configuracin de la supervisin del sistema local
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
App.Test.Settings.LocalSystemMonitor.Enable = false

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Log Tracking settings
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With App.Test.Settings.LogTracking
.IncludeInResults = False
.Port = 18081
.IP = "127.0.0.1"
.MinTriggerLevel = "ERROR"
.EnableAutoConfig = False
.RecoverConfigAfterRun = False
.ConfigFile = ""
.MinConfigLevel = "WARN"
End With

Qu es un marco de software ( Software


Framework )?
Un Framework define como un conjunto de directrices / mejores
prcticas que impone una serie de normas, que hace que sea fcil
de usar para los usuarios finales que trabajan con QTP. Hay
diferentes tipos de Framework de automatizacin y los ms comunes
son los siguientes:
Framework Keyword-Driven ( Keyword-Driven Framework )
Framework de Data-Driven ( Data-Driven Framework )
Framework hbrido ( Hybrid Framework )

Framework Keyword-Driven ( Keyword-Driven Framework )


Prueba dirigidas a palabras claves, es un tipo de Framework de
pruebas de automatizacin funcional que tambin se conoce como
prueba de la mesa dirigidas por la accin o la pruebas basadas en
palabras.
En las pruebas de palabra clave impulsada utilizamos un
formato de tabla, por lo general una hoja de clculo, para definir
palabras claves o palabras de accin para cada funcin que
queremos ejecutar.

VENTAJAS ( ADVANTAGES ):
Es el ms adecuado para el principiante o un probador no
tcnico.
Permite pruebas de escritura de una manera ms abstracta que
utiliza este enfoque.
Prueba impulsada palabras claves permite la automatizacin para
iniciarse a principios de la SDLC incluso antes de una versin
estable se entrega para la prueba.
Hay un alto grado de reutilizacin.

DESVENTAJAS ( DISADVANTAGES ):
La inversin inicial en el desarrollo de las palabras claves y sus
funcionalidades relacionadas podra tomar ms tiempo.
Puede actuar como una restriccin a los Tester con capacidades
tcnicamente.

Datos Framework Driven ( Data Driven Framework ):


Prueba basada en datos es la creacin de scripts de prueba
donde los datos de las pruebas y / o valores de salida se leen de los
archivos de datos en lugar de utilizar los mismos valores no
modificables cada vez que se ejecuta la prueba. De esta manera los
tester pueden probar cmo la aplicacin maneja varias entradas con
eficacia. Puede ser cualquiera de los archivos de datos de abajo.
Datapools
Archivos de Excel ( Excel files )
Objetos ADO ( ADO objects )
Archivos CSV ( CSV files )
Fuentes ODBC ( ODBC sources )

DIAGRAMA DE FLUJO ( FLOW DIAGRAM ):


Datos de Pruebas conducido pueden entenderse mejor en el
siguiente diagrama:
VENTAJAS ( ADVANTAGES ):
Datos impulsados resultados marco en menos cantidad de
cdigo.
Ofrece una mayor flexibilidad para el mantenimiento y la
reparacin de los problemas de secuencias de comandos.
Los datos de prueba se pueden desarrollar

DESVENTAJAS ( DISADVANTAGES ):
Cada guin tiene que ser diferente de entender los diferentes
conjuntos de datos.

Framework hbrido ( Hybrid Framework ):


Marco hbrido es una combinacin de marco bsqueda ha
impulsado y controladas por datos que puede ser mejor descrito

mediante el siguiente diagrama de flujo.

Factores que Afectan ( Affecting Factors ):


Los siguientes son los parmetros que uno debe tener en
cuenta al desarrollar el marco. Los efectos factores se enumeran
a continuacin
Archivos Marco debe respaldar de versiones Control Software
como SVN, CVS, Control MS Fuente
Marco debe apoyar la ejecucin de los scripts en diferentes
entornos viz- QA, SAT, DEV
Al objeto cambia, Scripts deben ejecutar con cambios mnimos.
Marco debe configurarse a s mismo y cuidar de requisitos
previos como la creacin de carpetas / bases de datos
( folders/databases ).
Marco debe tener Estructura de informes potente para que los
temas en el script / aplicacin ( script/application ) se pueden
observar fcilmente
Marco debera haber una mayor flexibilidad por lo que debe ser
fcil de usar
Marco debe seguir las normas de codificacin de modo que los
archivos, las funciones y la historia de los cambios se mantienen
correctamente.

El diseo de un Framework:
Permtanos disear un marco sencillo, a una aplicacin de
ejemplo. Vamos a automatizar algunos escenarios de la aplicacin
bajo prueba y escribir funciones reutilizables.
Por favor, haga clic en el enlace de abajo para obtener ms
informacin sobre el diseo de marcos.(Framework)

QTP - Proyectos de Framework


El diseo de un Framework ( Designing a Framework ):
La aplicacin muestra bajo prueba es "Calculadora"
( "Calculator" ), una aplicacin por defecto que est disponible como
parte de Windows. Vamos ahora a crear diferentes componentes de
un Framework.Aqu, vamos a desarrollar un Framework hbrido y
utilizar repositorio de objetos ya que es bastante una aplicacin
sencilla. Sin embargo, este marco se puede escalar para soportar
una aplicacin compleja tambin.
La estructura de carpetas del Framework es la siguiente. La
Explicacin de la estructura de carpetas se explica a continuacin:
1.Conductor Guin Master ( Master Driver Script ) El Script que
impulsa toda la ejecucin. Se realiza prerrequisito y ajustes
iniciales que se requieren para la ejecucin.
2.Archivos Biblioteca ( Library Files ) - Las funciones asociadas que
forman la funciones de Biblioteca.
3.Tabla de datos ( Data Table ) - los datos de prueba que se requiere
para la ejecucin.
4.Repositorio de Objetos ( Object Repository ) - Los objetos y sus
propiedades que permiten QTP para reconocer los objetos sin
problemas.
5.Registros de ejecucin ( Execution Logs ) - La carpeta contiene el
archivo de registro de ejecucin con las funciones del usuario y de
la historia de ejecucin de funciones.

GUIN MAESTRO CONDUCTOR ( MASTER DRIVER SCRIPT ):

'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' MAESTRO SCRIPT CONDUCTOR NOMBRE : Calculadora
'DESCRIPCIN: Drivers script se ejecute Pruebas Automatizadas para la Calculadora
' AUTOR : Tutoriales Point
'Fecha de creacin: 30-dic-2013
' Object Repository ASOCIADO : Calc . tsr
'BIBLIOTECA Archivos asociados: calculator.qfl, Common.qfl
' MODIFICACIN LOG
'---------------------------------------------- ------
' Primera Versin Tutoriales punto
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Option Explicit

Public ExecDrive

' Obtener la Raz de carpeta de la prueba para que podamos hacer uso de relativa paths .
Dim x : x=Instr(Environment.Value("TestDir"),"Driver")-2
ExecDrive = mid(Environment.Value("TestDir"),1,x)

'Obtener la ruta de acceso de bibliotecas utilizando en relacin con la unidad actual


Dim LibPath : LibPath = ExecDrive+"\Libraries\"
' Dynamically Load the Function Libraries
LoadFunctionLibrary LibPath + "Calculator.qfl", LibPath + "common_utils.qfl"

"La captura de la hora de inicio


' clscommon es la clase de objeto creado en comn . QFL archivo de biblioteca
clscommon.StartTime = Time()

'Inicio de la aplicacin
SystemUtil.Run "C:\Windows\System32\Calc.exe" : wait (2)

' Initialize the Data Table Path


Dim FileName : FileName = ExecDrive+"\TestData\Calculator.xls"
Dim SheetSource : SheetSource = "Calc_test"
Dim SheetDest : SheetDest = "Global"

'Importe el DataTable en la secuencia de comandos QTP


DataTable.ImportSheet FileName , SheetSource , SheetDest

' Object Repository Path


Dim RepPath : RepPath = ExecDrive+"\Object_Repository\Calc.tsr"
RepositoriesCollection.RemoveAll()
RepositoriesCollection.Add(RepPath)

'Para mantener una cuenta de iteracin


Dim InttestIteration
Dim InttestRows : InttestRows = datatable.GetRowCount

' Fetching Fecha - TimeStamp que ser unique for Naming the Execution Log File
clscommon.StrDateFormatted = day(date()) & "_" & MonthName(Month(date()),true) & "_" & YEAR(date())& "_"&hour(now)&"_"&minute(now)

'Nombre del archivo de registro


clscommon.StrLogFile = ExecDrive & "\Execution Logs\" & clscommon.StrDateFormatted & ".txt"

' Crear la ejecucin Archivo_registro que captura el resultado


clscommon.Fn_FileCreate(clscommon.StrLogFile)

'Iniitialize los parmetros y todos los Detalles de Prueba


Call Fn_InitializeLogFile()

' Kill todo el proceso de la calculadora anterior


Call fn_Kill_Process("calc.exe")

For InttestIteration=1 to InttestRows


datatable.SetCurrentRow InttestIteration
Dim StrExecute : StrExecute = Ucase(Trim(datatable.Value("Run","Global")))
If StrExecute = "Y" Then
clscommon.Number1 = Trim(datatable.Value("Number_1","Global"))
clscommon.Number2 = Trim(datatable.Value("Number_2","Global"))
clscommon.Number3 = Trim(datatable.Value("Number_3","Global"))

clscommon.Number4 = Trim(datatable.Value("Number_4","Global"))
clscommon.Number5 = Trim(datatable.Value("Number_5","Global"))
clscommon.Number6 = Trim(datatable.Value("Number_6","Global"))

clscommon.Test_Case_ID = Trim(datatable.Value("Test_Case_ID","Global"))'
: clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath
clscommon.tcScenario = Trim(datatable.Value("Scenario","Global"))'
: clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath
Dim Expected_Val : Expected_Val = Trim(datatable.Value("Expected_Val","Global"))'
: clscommon.LogWrite "The Test Case Data is Located at :: " & tcDataPath

Select case clscommon.tcScenario


Case "Add"
clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ==="
Call fnCalculate("+",Expected_Val)

Case "Subtract"
clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ==="
Call fnCalculate("-",Expected_Val)

Case "Multiply"
clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ==="
Call fnCalculate("*",Expected_Val)

Case "Divide"
clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ==="
Call fnCalculate("/",Expected_Val)

Case "Sqrt"
clscommon.LogWrite "=== Inside the Test Set :: " & clscommon.tcScenario & " ==="
Call fnCalculate("sqt",Expected_Val)

End Select
End If
Next

' Llamar a la Final Prueba para Agregar el resultado de pie de pgina en exec archivo de registro .
Call fn_End_test()

'===================== Fin de Guin Maestro Conductor =====================

ARCHIVOS DE LA BIBLIOTECA ( LIBRARY FILES ):


Las funciones de la calculadora se escriben en un archivo de
funcin separada guardado con la extensin o .qfl .vbs. Estas
funciones son reusuable travs de acciones.
'Calculadora. Qfl File :: Associated Biblioteca de funciones de calculadora Maestro Conductor

' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Nombre de funcin: Fn_InitializeLogFile
' DESCRIPCIN : Funcin para Escribir las iniciales Valores en el Log File
'PARMETROS DE ENTRADA: varExecDrive, strDB, StrUId, Strpwd, StrNewDB
' PARMETROS DE SALIDA : NIL
'Valor de retorno: aprobado o suspenso mensaje
' Fecha de creacin : 30 - diciembre - 2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Public Function Fn_InitializeLogFile()
clscommon.LogWrite "********************************************"
clscommon.LogWrite "Calc Automation Started"
End Function

' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Nombre de funcin: fnCalculate
' DESCRIPCIN : Funcin para realizar aritmticas Clculos
'parmetros de entrada: operador, Expected_Val
' PARMETROS DE SALIDA : NIL
'Valor de retorno: aprobado o suspenso mensaje
' Fecha de creacin : 30 - diciembre - 2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Function fnCalculate(operator,Expected_Val)
clscommon.LogWrite "Executing the Function 'fnCalculate' "

Window("Calculator").Activate

If Trim(clscommon.Number1) <> "" Then Window("Calculator").WinButton(clscommon.Number1).Click


If Trim(clscommon.Number2) <> "" Then Window("Calculator").WinButton(clscommon.Number2).Click
If Trim(clscommon.Number3) <> "" Then Window("Calculator").WinButton(clscommon.Number3).Click

Window("Calculator").WinButton(operator).Click

If Trim(clscommon.Number4) <> "" Then Window("Calculator").WinButton(clscommon.Number4).Click


If Trim(clscommon.Number5) <> "" Then Window("Calculator").WinButton(clscommon.Number5).Click
If Trim(clscommon.Number6) <> "" Then Window("Calculator").WinButton(clscommon.Number6).Click

Window("Calculator").WinButton("=").Click
Dim ActualVal : ActualVal = Window("Calculator").WinEdit("Edit").GetROProperty("text")
clscommon.LogWrite "The Actual Value after the Math Operation is "& ActualVal

If Trim(ActualVal) = Trim(Expected_Val) Then


clscommon.WriteResult "Pass", clscommon.Test_Case_ID , clscommon.tcScenario , " Expected Value matches with Actual Value :: " & ActualVal
Else
clscommon.WriteResult "Fail", clscommon.Test_Case_ID , clscommon.tcScenario , " Expected Value - " & Expected_Val & " Does NOT matches with Actual Value :: "
& ActualVal
End If

Window("Calculator").WinButton("C").Click

If Err.Number <> 0 Then


clscommon.LogWrite "Execution Error : The Error Number is :: " & Err.Number & " The Error Description is " & Err.Description
Err.Clear
End If

clscommon.LogWrite "Exiting the Function 'fnCalculate' "


End Function

' = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Nombre de funcin: fn_Kill_Process
' DESCRIPCIN : Funcin de Kill el proceso por el nombre de
'Parmetros de entrada: Nombre de la aplicacin que se mat
' PARMETROS DE SALIDA : NIL
'Valor de retorno: NIL
' Fecha de creacin : 30 - diciembre - 2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = =
Function fn_Kill_Process(process)

Dim strComputer , strProcessToKill , objWMIService , colProcess


strComputer = "."
strProcessToKill = process

Set objWMIService = GetObject("winmgmts:" _


& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcess = objWMIService.ExecQuery _


("Select * from Win32_Process Where Name = '" & strProcessToKill & "'")

count = 0
For Each objProcess in colProcess
objProcess.Terminate()
count = count + 1
Next

End Function
' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Nombre de funcin: fn_End_test
' DESCRIPCIN : Funcin para terminar la prueba de ejecucin de procesos
'parmetros de entrada: Nombre de la aplicacin que se mat
' PARMETROS DE SALIDA : NIL
'Valor de retorno: NIL
' Fecha de creacin : 20 / diciembre / 2013
'= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Function fn_End_test()
clscommon.LogWrite "Status Message - Executing the Function 'fn_End_test' "
Window("Calculator").Close
On Error Resume Next
clscommon.StopTime = Time()
clscommon.ElapsedTime = DateDiff("n",clscommon.StartTime,clscommon.StopTime)
Dim Totaltests
Totaltests = clscommon.gintPassCount+ clscommon.gintFailCount
clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
clscommon.LogWrite "## The Execution Start Time :: " & clscommon.StartTime
clscommon.LogWrite "## The Execution End Time :: " & clscommon.StopTime
clscommon.LogWrite "## The Time Elapsed :: " & clscommon.ElapsedTime & " Minutes "
clscommon.LogWrite "## The OS :: " & Environment.Value("OS")
clscommon.LogWrite "## The Total No of Test Cases Executed :: " & Totaltests
clscommon.LogWrite "## The No. of Test Case Passed :: " & clscommon.gintPassCount
clscommon.LogWrite "## The No. of Test Case Failed :: " & clscommon.gintFailCount
clscommon.LogWrite "## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
SystemUtil.CloseDescendentProcesses
End Function

' =============== Fin de la calculadora . Qfl ============================= '

El otro archivo de biblioteca que es 'common_utils.qfl' que


contiene las funciones que nos permite escribir el resultado en un
archivo de texto.

Set clscommon=New OS_clsUtils

'Creacin de un archivo de clase para manejar variables globales.


Class OS_clsUtils
Dim StrLogFile
Dim StrDateFormatted
Dim Result

Dim Number1, Number2 , Number3


Dim Number4, Number5 , Number6
Dim Test_Case_ID , tcScenario
Dim StartTime, StopTime, ElapsedTime

Dim gintPassCount , gintFailCount , gintWarningCount , gintdoneCount, gintinfoCount

Function Fn_FileCreate(strFileName)
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Dim objTextFile : Set objTextFile = objFSO.CreateTextFile(strFileName)
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
End Function

Function LogWrite(sMsg)
Const ForAppending = 8
Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject")
Dim objTextFile : Set objTextFile = objFSO.OpenTextFile (clscommon.StrLogFile, ForAppending, True)
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & sMsg
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
End Function

Function WriteResult(strStatus,functionName,functionDescription,Result)
Const ForAppending = 8
Dim objFSO : Set objFSO = CreateObject("scripting.FileSystemObject")
Dim objTextFile : Set objTextFile = objFSO.OpenTextFile (clscommon.StrLogFile, ForAppending, True)
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " * * * * * * Test Case Exec Details * * *
* * "
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Test staus :: " & strStatus
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Tese ID :: " & functionName
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Test Description :: " &
functionDescription
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " Test Result Details :: " & Result
objTextFile.WriteLine day(date()) & "/" & MonthName(Month(date()),true) & "/" & YEAR(date()) & " " & time & ": " & " * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * "
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing

Select Case Lcase(strStatus)


Case "pass"
gintPassCount = gintPassCount + 1
Case "fail"
gintFailCount = gintFailCount+1
End Select
End Function
End Class
' ===================== Fin de common_Utils . QFL =====================

REPOSITORIO DE OBJETOS ( OBJECT REPOSITORY ):


En el Repositorio de Objetos se encuntran los objetos que el
sistema ha conseguido cargar en base a la grabacion y a otros
factores, con esto objetos se pretende tener la forma de localizarlos
para la ejecucin de los mismos en la programacin de la
automatizacion. La imagen de abajo muestra la lista de todos los
objetos aadi al repositorio con el nombre calc.tsr

TABLA DE DATOS ( DATA TABLE ):


Tabla de datos contiene las palabras claves que impulsan las
pruebas y los datos de prueba con los que QTP actuar sobre los
objetos.
EL REGISTRO DE EJECUCIN ( THE EXECUTION LOG ):
El archivo del archivo de registro de ejecucin o de salida
contiene las acciones del usuario y los registros de funciones que
permitirn a los Tester para depurar a fallos de guin.

8 /
Jan / 2014 5 :
09 : 16 PM : *************************************************
8 /
Jan / 2014 5 :
09 : 16 PM : Calc Automation Started
8 /
Jan / 2014 5 :
09 : 16 PM : === Inside the Test Set :: Add ===
8 /
Jan / 2014 5 :
09 : 16 PM : Executing the Function 'fnCalculate'
8 /
Jan / 2014 5 :
09 : 17 PM : The Actual Value after the Math Operation is 949.
8 /
Jan / 2014 5 :
09 : 17 PM : * * * * * * Test Case Exec Details * * * * *
8 /
Jan / 2014 5 :
09 : 17 PM : Test staus :: Pass
8 /
Jan / 2014 5 :
09 : 17 PM : Tese ID :: TC_001
8 / Jan / 2014 5 : 09 : 17 PM : Test Description :: Add
8 / Jan / 2014 5 : 09 : 17 PM : Test Result Details :: Expected Value matches with Actual Value :: 949.
8 / Jan / 2014 5 : 09 : 17 PM : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
8 / Jan / 2014 5 : 09 : 17 PM : Exiting the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 17 PM : === Inside the Test Set :: Subtract ===
8 / Jan / 2014 5 : 09 : 17 PM : Executing the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 17 PM : The Actual Value after the Math Operation is 415.
8 / Jan / 2014 5 : 09 : 17 PM : * * * * * * Test Case Exec Details * * * * *
8 / Jan / 2014 5 : 09 : 17 PM : Test staus :: Pass
8 / Jan / 2014 5 : 09 : 17 PM : Tese ID :: TC_002
8 / Jan / 2014 5 : 09 : 17 PM : Test Description :: Subtract
8 / Jan / 2014 5 : 09 : 17 PM : Test Result Details :: Expected Value matches with Actual Value :: 415.
8 / Jan / 2014 5 : 09 : 17 PM : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
8 / Jan / 2014 5 : 09 : 17 PM : Exiting the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 17 PM : === Inside the Test Set :: Multiply ===
8 / Jan / 2014 5 : 09 : 17 PM : Executing the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 18 PM : The Actual Value after the Math Operation is 278883.
8 / Jan / 2014 5 : 09 : 18 PM : * * * * * * Test Case Exec Details * * * * *
8 / Jan / 2014 5 : 09 : 18 PM : Test staus :: Pass
8 / Jan / 2014 5 : 09 : 18 PM : Tese ID :: TC_003
8 / Jan / 2014 5 : 09 : 18 PM : Test Description :: Multiply
8 / Jan / 2014 5 : 09 : 18 PM : Test Result Details :: Expected Value matches with Actual Value :: 278883.
8 / Jan / 2014 5 : 09 : 18 PM : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
8 / Jan / 2014 5 : 09 : 18 PM : Exiting the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 18 PM : === Inside the Test Set :: Divide ===
8 / Jan / 2014 5 : 09 : 18 PM : Executing the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 19 PM : The Actual Value after the Math Operation is 3.
8 / Jan / 2014 5 : 09 : 19 PM : * * * * * * Test Case Exec Details * * * * *
8 / Jan / 2014 5 : 09 : 19 PM : Test staus :: Pass
8 / Jan / 2014 5 : 09 : 19 PM : Tese ID :: TC_004
8 / Jan / 2014 5 : 09 : 19 PM : Test Description :: Divide
8 / Jan / 2014 5 : 09 : 19 PM : Test Result Details :: Expected Value matches with Actual Value :: 3.
8 / Jan / 2014 5 : 09 : 19 PM : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
8 / Jan / 2014 5 : 09 : 19 PM : Exiting the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 19 PM : === Inside the Test Set :: Sqrt ===
8 / Jan / 2014 5 : 09 : 19 PM : Executing the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 20 PM : The Actual Value after the Math Operation is 10.
8 / Jan / 2014 5 : 09 : 20 PM : * * * * * * Test Case Exec Details * * * * *
8 / Jan / 2014 5 : 09 : 20 PM : Test staus :: Pass
8 / Jan / 2014 5 : 09 : 20 PM : Tese ID :: TC_005
8 / Jan / 2014 5 : 09 : 20 PM : Test Description :: Sqrt
8 / Jan / 2014 5 : 09 : 20 PM : Test Result Details :: Expected Value matches with Actual Value :: 10.
8 / Jan / 2014 5 : 09 : 20 PM : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
8 / Jan / 2014 5 : 09 : 20 PM : Exiting the Function 'fnCalculate'
8 / Jan / 2014 5 : 09 : 20 PM : Status Message - Executing the Function 'fn_Finish_test'
8 / Jan / 2014 5 : 09 : 20 PM : ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
8 / ene / 2014 5 : 09 : 20 PM : ## La ejecucin Hora de inicio: : 5:09:14 PM
8 / ene / 2014 5 : 09 : 20 PM : ## El Tiempo de ejecucin Fin :: 5:09:20 PM
8 / ene / 2014 5 : 09 : 20 PM : ## El Tiempo Transcurrido :: 0 Minutos
8 / ene / 2014 5 : 09 : 20 PM : ## El sistema operativo Microsoft Windows Vista :: Servidor
8 / ene / 2014 5 : 09 : 20 PM : ## El n total de casos de prueba Ejecutado :: 25
8 / ene / 2014 5 : 09 : 20 PM : ## El nmero de caso de prueba Passed :: 25
8 / ene / 2014 5 : 09 : 20 PM : ## El nmero de caso de prueba Error ::
8 / ene / 2014 5 : 09 : 20 PM : ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Todo lo que necesitas saber acerca de las expresiones
regulares en QTP
Una expresin regular es una cadena que describe o coincide
con un conjunto de cadenas. A menudo se llama un patrn, ya que
describe un conjunto de cadenas. En este artculo vamos a discutir
sobre el uso de expresiones regulares en VB Script / QTP.
Para aquellos que son principiantes en la programacin, debe
tener en cuenta que las expresiones regulares no se limitan a VB
Script solo. Estas se utilizan ampliamente en toda programacin y
lenguajes script y son conocidos por ser muy poderosa para ahorrar
cdigo de programacin y generacion de datos de la misma forma
utilizando una coincidencia de patrones. El conocimiento de las
expresiones regulares puede ser til no slo para los proyectos QTP
sino tambin en la vida en lnea del da a da.
Vamos a diseccionar nuestra definicin anterior y responder a
esta pregunta con la ayuda de un ejemplo sencillo.
Cuando se trabaja en una aplicacin particular, digamos que
uno de los valores de las propiedades denominadas Identificacin es
dinmico, es decir, en cada carrera se observa que el valor
deIdentificacin propiedad est siendo cambiado. As que
cuando grab la secuencia de comandos, el valor de Identificacin
propiedad era REUFT101. Cuando se reprodujo el mismo guin, el
valor deIdentificacin cambiado a REUFT120, en la prxima iteracin
cambi a REUFT105. Usted puede identificar fcilmente un
patrn aqu lo que los dos ltimos dgitos de Identificacin del valor
estn siendo cambiados.
Podemos escribir una sola cadena que puede coincidir con
todos estos valores dinmicos? S, y la respuesta se encuentra en
las expresiones regulares. Puedes escribir REUFT1 \ d \ d. Los
cinco primeros caracteres se fijaron de manera que no necesitamos
regularizarlos, sin embargo los dos ltimos personajes eran cifras
dinmicas. Tenemos que asegurarnos de que nuestra expresin
regular debe ser capaz de adaptarse a cualquier dgito entre 0 y 9 y
en este caso se usa la expresin regular \ d para que tome los digitos
que se necesitan. Puesto que necesitamos para que coincida con
dos dgitos que hemos utilizado dos veces \ d \ d.
Este fue un ejemplo sencillo de lo que puede hacerse con las
expresiones regulares. En QTP / VB Script, podemos usar
expresiones regulares para hacer frente a los valores de
propiedades dinmicas de repositorio de objetos o en la
programacin descriptiva o mientras la creacin de puestos de
control con valores diferentes.

Tratamiento de valores dinmicos de propiedad en Object


Repository

Digamos que grabe un objeto y encontrar que una de las


propiedades de ese objeto (como un crculo ms abajo) es dinmico
por lo que el ltimo dgito puede cambiar a cualquier dgito o letra en
ejecuciones posteriores.
QTP proporciona una manera fcil de cambiar el ltimo dgito
para una expresin regular. Vamos a utilizar la expresin regular . *
para que coincida con cualquier carcter cero o ms veces.
Revise la siguientes secuencias de ilustracines:
1.- Seleccionar el campo a modificar.
2.- Marcarlo y seleccionar el icono de la misma.

3.- Despues arrojara la ventana de edicion.


4.- Marcar el flag de Exprecion regular

5.- Seleccionar el campo a Regularizar.

6.- Poner la exprecion regular.

7.- Marcar el Boton de Aceptar


para que se actualice la
informacion de la exprecion
Regular.
8.- Aparecer la exprecion Regular generada.

Tratamiento de valores dinmicos de propiedad en Programacin


descriptivo:
Cuando se utiliza la tcnica de programacin en lnea
descriptiva, el mismo ejemplo anterior se puede escribir como:

Browser("Welcome: Mercury Tours").Page("Welcome: Mercury


Tours").WebEdit("type:=text","name:=userName.*","html tag:=INPUT").Set
"mercury"
Tratamiento de valores de propiedades dinmicas en puestos de
control:
En la sentencia del ejemplo se muestra en la ilustracin
siguiente, una vez que se ha insertado un puesto de control, haga
clic derecho sobre Checkpoint ("nombre de usuario") e ir a
propiedades de Checkpoint. Resalta el valor de la propiedad que
usted desea hacer una expresin regular.

Dada debajo es una de la barra invertida ms utilizado y nunca


confundido. Las expresiones restantes se serializan debajo.

Uso de la barra hacia atrs Carcter:


Una barra diagonal inversa (\) instruye QTP para tratar el
siguiente carcter como un carcter literal, si es de otra manera un
carcter especial. La barra invertida (\) tambin puede instruir QTP
reconocer ciertos caracteres comunes como caracteres especiales.
Como se ve en el ejemplo de arriba, punto (.) Se utiliza como un
carcter especial. Puede haber casos en los que es posible que
desee utilizar un punto como carcter literal de lo contrario puede
ser confundido como una indicacin para la expresin regular.
(Ejemplo: www.hp.com ) En tal caso, puede usar hacia atrs slash
para escapar del significado especial de este perodo.(Ejemplo: www
\ .hp \ .com)
Nota: Si un carcter de barra hacia atrs se utiliza antes de un
personaje que no tiene ningn significado especial, la barra invertida
se ignora.

Expresiones y Explicacin
Coincidir con cualquier carcter (.)

Ejemplo: "lear.*" Coincidir con "learn", "lear1" o "lear%"


Coincide con el carcter anterior cero o ms veces (*)

Ejemplo: "zo.*" coincide con cualquiera "z" o "zoo".


Coincidir cualquiera cadena que comienza con el texto especificado justo
antes del patrn (. *)

Esta es una de las expresiones regulares el patrn de uso ms


frecuente. Trate de entenderlo correctamente.

Ejemplo: "aprender.*" coincidir con cualquier cadena que comience


con "aprender". Digamos que te encuentras con una cadena
"Estamos en aprenderqtp" pero vemos que los personajes despus
de la cadena "aprender" va cambiando. En tal caso, se puede hacer
una sencilla expresin regular como "Estamos en aprender.*"

Coincide con el comienzo de una lnea (^)


Ejemplo: "^ aprenderqtp" coincidir con cualquier lnea que
comienza con "aprenderqtp" por lo que coincidir con aprenderqtp,
aprenderqtp.com pero no www.aprenderqtp.com

Coincide con el final de una lnea ($)

Ejemplo: "aprenderqtp $" coincidir con cualquier lnea que termina


con "aprenderqtp" por lo que coincidir con aprenderqtp,
www.aprenderqtp pero no www.aprenderqtp.com

Coincide con el carcter anterior una o ms veces (+)

Ejemplo: "zo+" partidos "zoo" pero no "z".


Coincide con el carcter cero o una vez anterior (?)

Ejemplo: "?? Una cinco" coincide con "ca" en "nunca".

Hemos tocado los que se utilizan con ms frecuencia. Para


obtener una lista completa y exhaustiva comprobar de Microsoft
MSDN
Con el lanzamiento de UFT 11.5, HP ha integrado un evaluador
de expresiones regulares justo dentro de IDE de la UFT. Es
accesible a travs de Herramientas> Evaluador de expresiones
regulares.

Ejemplo 1: Expresin regular para que coincida con todas las direcciones de
correo electrnico vlidas
^ [A-z0-9 ._% + -]. + @ [A-z0-9 .-] + \ [az] {2,4} $
Hemos asumido anteriormente que el TLD (com, org, net, .in) es
entre 2 a 4 caracteres. Adems, slo hemos tenido el caso de los
caracteres en minscula para la validacin.
Ejemplo 2: Expresin regular para que coincida con una fecha MM / DD / AAAA
^ ([1-9] | 1 [0-2]) / ([1-9] | [1-2] [0-9] | 3 [0-1]) / [0-9] [0- 9] [0-9] [0-9] $
Ejemplo 3: Expresin regular para que coincida con las instancias de
produccin, prueba o demostracin
Digamos que usted ejecuta un sitio, example.com, que est
configurado para prod.example.com, test.example.com y
demo.example.com. Es necesario hacer la primera parte variable
como una expresin regular. As es como la expresin regular se
vera as (dado que la cadena de example.com no cambia)
. (Prod | Ensayo | demo) \ ejemplo \ .com
Sintaxis de expresiones regulares (Scripting):
Una expresin regular describe una o ms cadenas para que
coincidan con con lo que se busca en un cuerpo de texto. La
expresin sirve como plantilla para hacer coincidir un patrn de
carcter a la cadena que se est buscando.
Una expresin regular consiste en caracteres ordinarios (por
ejemplo, las letras A a la Z) y caracteres especiales, conocidos como
metacaracteres.

Caracteres especiales:
La siguiente tabla contiene una lista de los metacaracteres de
un solo carcter y su comportamiento en las expresiones regulares.

Nota: Para que coincida con uno de estos caracteres


especiales, primero debe escapar el carcter, es decir, precedido
de una barra invertida (\). Por ejemplo, para buscar el "+"
carcter literal, puede utilizar la expresin "\ +".

Metacarcter Comportamiento Ejemplo


Coincide con el carcter anterior
* o subexpresin cero o ms veces. zo* coincide con "z" y "zoo".
Equivalente a{0,}.
Coincide con el carcter anterior
zo+ coincide con "zo" y "zoo", pero
+ o subexpresin una o ms veces.
no "z".
Equivalente a {1,}.
? Coincide con el carcter anterior zo? partidos "z" y "zo", pero no
o subexpresin cero o una vez. "zoo".
Equivalente a {0,1}. O+? coincide con un sencillo "oooo",
Cundo? inmediatamente y "O" en o+Todos los partidos de "O"
siguiente cualquier otro s.
cuantificador (*, +,?, { n }, {n,}
o { n , m }), la coincidencia de
patrones es no expansivo. Un
patrn no expansivo coincide
con el menor de la cadena
buscada como sea posible. El
patrn codicioso predeterminado
coincide con la mayor cantidad
de cadena buscada como sea
posible.
Coincida con la posicin en el
inicio de la cadena buscada. Si el
Multilnea propiedad est
^\D{3} coincide con 3 dgitos
establecida, ^ tambin coincide
numricos en el inicio de la cadena
con la posicin que sigue a \n
^ buscada.
o \r.
[^abc] coincide con cualquier
Cuando se utiliza como el primer
carcter excepto a, b, y c.
carcter de una expresin entre
corchetes, ^ niega el conjunto de
caracteres.
Coincide con la posicin al final
de la cadena buscada. Si el \D{3}$ coincide con 3 dgitos
$ Multilneapropiedad est numricos en el extremo de la cadena
establecida, $ tambin coincide buscada.
con la posicin antes de \n o \r.
Coincide con cualquier carcter
excepto el carcter de nueva
lnea carcter \ n.Para hacer
. ac coincide con "abc", "A1C", y "ac".
coincidir cualquier carcter
incluyendo la \ n, utilizar un
patrn como[\s \S].
[1-4] coincide con "1", "2", "3" o
Marca el comienzo y el final de
[] "4". [^aAeEiIoOuU] coincide con
una expresin entre corchetes.
cualquier carcter que no sea vocal.
Marca el comienzo y el final de
{} a{2,3} coincide con "aa" y "aaa".
una expresin de cuantificador.
Marca el comienzo y el final de
A(\d) coincide con "A0" hasta "A9".
una subexpresin. Las
() El dgito se guarda para su uso
subexpresiones se pueden
posterior.
guardar para su uso posterior.
z|alimentos. partidos "z" o
Indica una eleccin entre dos o
| "alimentos" (z|f) ood coincide
ms elementos.
"zood" o "alimentos".
/ Indica el inicio o el final de un /Abc /gi es un literal de expresin
modelo de expresin regular regular de JScript que coincida con
literal en JScript.Despus de la "abc". El g (global) especifica que se
segunda "/", las banderas de un debe encontrar todas las ocurrencias
solo carcter se pueden aadir del patrn, y el i (ignorar
para especificar el maysculas) de la bandera hace que el
comportamiento de bsqueda. caso-insensible bsqueda.
Marca el siguiente carcter como
un carcter especial, un literal, \N Coincide con un carcter de nueva
\
una referencia hacia atrs, o un lnea. \ (partidos "(". \\ partidos "\".
escape octal.

La mayora de los caracteres especiales pierden su significado


y representan caracteres ordinarios cuando se producen dentro de
una expresin de corchetes. Para obtener ms informacin, consulte
"Caracteres en Bracket Expresiones" en las listas de caracteres de
emparejar (secuencias de comandos).

Metacaracteres:
La siguiente tabla contiene una lista de los metacaracteres de varios
caracteres, y su comportamiento en las expresiones regulares.

Metacarcte
Comportamiento Ejemplo
r
Coincide con un lmite de palabra, es er \ b coincide con el "er" en
\B decir, la posicin entre una palabra y un "nunca" pero no el "er" en
espacio. "verbo".
er \ B coincide con el "er" en
\B Coincide con una palabra no-lmite. "verbo" pero no el "er" en
"nunca".
En la cadena buscada "12 345",
Coincide con un carcter de dgito. \ d {2}coincide con "12" y
\D
Equivale a [0-9]. "34". \ d coincide con "1", 2
"," 3 "," 4 "y" 5 ".
Coincide con un carcter no sea de
\ D + coincide con "ABC" y
\D dgito.
"def" en "abc123 def".
Equivale a[^ 0-9].
Coincide con cualquiera de los En la cadena buscada "El zorro
siguientes caracteres: AZ, az, 0-9 y marrn rpido ...", \ w +
\W
subrayado. coincide con "El", "rpido",
Equivale a [A-Za-z0-9_]. "blanco", y "zorro".
\W Coincide con cualquier carcter excepto En la cadena buscada "El zorro
AZ, az, 0-9 y subrayado. marrn rpido ...", \ W +
Equivale a[^ A-Za-z0-9_]. partidos "..." y todos los
espacios.
Establecer un carcter. Coincide con
[Abc] coincide con la "a" de
[ xyz ] cualquiera de los caracteres
"plano".
especificados.
Establecer un carcter negativo.
[^ Abc] coincide con la "p"
[ ^ xyz ] Coincide con cualquier carcter que no
de "plano".
est especificado.
Una gama de personajes. Coincide con [Az] coincide con cualquier
[ az ] cualquier carcter en el rango carcter alfabtico en minscula
especificado. en el rango de "a" a la "z".
Un rango negativo de caracteres. [^ Az] coincide con cualquier
[ ^ az ] Coincide con cualquier carcter no en el carcter no en el rango de "a" a
rango especificado. la "z".
O {2} no coincide con la "o"
Coincide exactamente n veces. n es un
{n} de "Bob", pero lo hace coincidir
entero no negativo.
con las dos "O" s en "comida".
Coincide al menos n veces. n es un
O {2,} no coincide con la "o"
entero no negativo.
{ n ,} de "Bob", pero Coincide todas
* es equivalente a {0,}.
las "O" s en "foooood".
+ es equivalente a {1,}.
Partidos, al menos, n y en la mayora de
m veces. n y m son nmeros enteros no En la cadena buscada
negativos, donde n <= m. No puede "1234567", \ d {1,3}
{ n, m }
haber un espacio entre la coma y los coincide con "123", "456", y
nmeros. "7".
? es equivalente a {0,1}.
Coincide con patrn y guarda el partido.
Puede recuperar el partido salvado de la
coleccin subcoincidencias en Scripting (Captulo | Seccin)
Edition de Visual Basic (VBScript) o de [1-9] coincide con "Captulo
( patrn )
elementos de la matriz devuelta por el 5", y el "Captulo" se guarda
mtodo exec en JScript. Para hacer para su uso posterior.
coincidir los caracteres de parntesis (),
utilice "\ (" o "\)".
Partidos patrn pero no salva el partido,
es decir, el partido no se almacena para industr (?: y | s) es
(:? patrn ) su posible uso posterior. Esto es til para equivalente a la industria
combinar partes de un patrn con el "o" |industrias.
carcter (|).
(? = patrn ) Bsqueda positiva hacia delante. Una ^ (? =. * \ D). {4,8} $
vez que se encuentra una coincidencia, la se aplica una restriccin de que
una contrasea debe tener entre
4 y 8 caracteres y debe contener
al menos un dgito.
Dentro del patrn, . * \ d
encuentra cualquier nmero de
caracteres seguidos de un dgito.
Para la cadena "abc3qr"
buscado, esto coincide con
"abc3".
bsqueda para el prximo partido
Comenzando antes en vez de
comienza antes de que el texto
despus de aquel partido, .
coincidente. El partido no se guarda para
{4,8} coincide con una cadena
su uso posterior.
de 4-8 caracteres. Esto coincide
con "abc3qr".
El ^ y $ especificar las
posiciones en la salida y al final
de la cadena buscada. Esto es
para evitar una coincidencia si
la cadena buscada contiene
caracteres fuera de los
caracteres coincidentes.
\ B (?! ) \ w + \ b
coincide con palabras que no
comienzan con "th".
Bsqueda negativa hacia delante.
Dentro del modelo, b \
Coincide con una cadena de bsqueda
coincide con un lmite de
que no coincide con el patrn. Una vez
palabra. Para la cadena buscada
que se encuentra una coincidencia, la
(?! patrn ) "rpida", esto coincide con el
bsqueda para el prximo partido
primer espacio. (?! )
comienza antes de que el texto
coincide con una cadena que no
coincidente. El partido no se guarda para
es "th". Esto coincide con "qu".
su uso posterior.
A partir antes de ese partido, \
w +coincide con una palabra.
Esto coincide con "rpida".
Coincide con el carcter de control
indicado por x . El valor de x debe estar \Cm coincide con un carcter
\Cx
en la gama de AZ o az. Si no lo es, c se CTRL + M o retorno de carro.
supone que es un carcter "c" literal.
\Xn Partidos n , donde n es un valor de \ X41 partidos "A". \ x041
escape hexadecimal. Los valores de es equivalente a "\ x04" seguido
escape hexadecimales deben tener dos de "1", (porque n debe ser
dgitos. Permite que los cdigos ASCII exactamente 2 dgitos).
que se utilizan en expresiones regulares.
Partidos num, donde num es un entero (.) \ 1 coincide con dos
\num positivo. Esta es una referencia a caracteres idnticos
partidos guardados. consecutivos.
Identifica bien un valor de escape octal o
una referencia hacia atrs. Si \n es
precedida por al menos n subexpresiones (\ D) \ 1 partidos dos
\n
capturadas, n es un retro-referencia. De dgitos idnticos consecutivos.
lo contrario, n es un valor de escape
octal si n es un dgito octal (0-7).
Identifica bien un valor de escape octal o
una referencia hacia atrs. Si \nm va
precedido de al menos nm
subexpresiones capturadas, nm es una
referencia inversa. Si \nm es precedida
\ 11 coincide con un carcter
\nm por al menos n subexpresiones
de tabulacin.
capturadas, n es un retrorreferencia
seguido por literal m. Si ninguna de estas
condiciones existen, \nm partidos escape
octal valor n m cuando n y m son dgitos
octales (0-7).
Partidos valor de escape
\ 011 coincide con un carcter
\NML octalNMLcuando n es un dgito octal (0-
de tabulacin.
3) y m y l son dgitos octales (0-7).
Partidos n, donde n es un carcter
\ U00A9 coincide con el
\ Un Unicode expresan como cuatro dgitos
smbolo de copyright ().
hexadecimales.
Caracteres no Imprimibles:
La siguiente tabla contiene las secuencias de escape que
representan caracteres no imprimibles.
Personaj
Partidos Equivalente a
es
\F Carcter de avance. \ X0cy\ cL
\N Carcter de nueva lnea. \ X0ay\ cJ
\R Carcter de retorno de carro. \ X0dy\ cm
Cualquier carcter de espacio en blanco. Esto
[\ F \ n \ r \
\s incluye espacio, tabulador, y la forma de
t \ v]
alimentacin.
[^ \ F \ n \ r \
\S Cualquier carcter de espacio no blanca.
t \ v]
\T Carcter Tab. \ X09y\ ci
\V Carcter de tabulacin vertical. \ X0By\ cK

Orden de Precedencia:
Una expresin regular es evaluada muy similar a una expresin
aritmtica; es decir, se evala de izquierda a derecha y sigue un
orden de precedencia.
La siguiente tabla contiene el orden de precedencia de los
operadores de expresiones regulares, de mayor a menor.
Operador o los operadores Descripcin
\ Escapar
Los parntesis y
(), (? :), (? =), []
corchetes
*, +,?, {n}, {n,}, {n,m} Cuantificadores
^, $, \anymetacharacter Anclas y secuencias
| Alternancia
Los personajes tienen mayor precedencia que el operador de la
alternancia, que, por ejemplo, permite "m | alimentos" para que
coincida con "m" o "alimentos".
NOTA: El orden de precedecia no se indica para (?!)

Una gua completa de programacin descriptiva en


QTP (UFT)
Programacin descriptiva es uno de los conceptos mas simples
y ms tiles, pero a menudo es confusa su utilizacion en QTP. Este
artculo servir como una gua completa sobre la programacin
expositiva.

Qu es la Programacin descriptiva?

La Programacin representativa, proporciona una forma para


llevar a cabo operaciones en los objetos que no estn presentes en
el depsito de objetos.
Es la creacin de una prueba sin utilizar el repositorio de
objetos se conoce como programacin descriptiva ya que usted
describe los objetos como parte de la secuencia de comandos.
Cundo y dnde se utiliza? Cmo est escrito? Vamos a ver los
detalles completos de abajo.

Cundo y Dnde utilizar Programacin descriptiva?


A continuacin se mencionan algunas de las situaciones en
Programacin descriptiva que se puede considerar como tiles:
Manejo Dinmico de propiedades de Objetos
Uno de los lugares muy tiles donde se puede utilizar de
programacin descriptiva es cuando las propiedades del objeto Bajo
Prueba de aplicaciones (AUT) son dinmicas por naturaleza y
necesitan un manejo especial para identificar el objeto. El mejor
ejemplo sera el Click en un vnculo que cambia de acuerdo con la
aplicacin del usuario.
Como puede verse en el ejemplo anterior, la propiedad 'text' en
la parte del usuario cambia el usuario por lo tanto es ms fcil
manejar este tipo de propiedades con la programacin descriptiva.

El uso de la biblioteca de funciones externas


Otro lugar en el DP puede ser de gran importancia es la hora de
crear funciones en un archivo externo. Usted puede utilizar estas
funciones en diversas acciones directamente, eliminando la
necesidad de aadir objeto (s) en el repositorio de objetos para cada
accin. [Si utiliza repositorio objeto local]
Repositorio de Objetos enormes
Cuando repositorio de objetos es cada vez mas enorme debido a
la cantidad de objetos que se agregan. Los Repositorio de objetos
voluminosos puede disminuir el rendimiento de QTP si bien reconoce
un objeto. [Para QTP 8,2 y por debajo, Mercury - sola recomendar
objeto repositorio tamao inferior a 1,5 MB]

Cuando la aplicacin an no est lista


Supongamos que tenemos una aplicacin web que no se ha sido
desarrollada an. Ahora, para grabar el Cdigo para QTP y aadir
los objetos al repositorio, se necesita que la aplicacin exista, eso
significara que se necesita esperar a que la aplicacin que se
despliegue antes de que podamos empezar a hacer Cdigo en QTP.
Pero si conocemos las descripciones de los objetos que se van
a crear, podemos empezar con los scripts usando programacin
Descriptiva.

Varios objetos idnticos que necesitan mismas operaciones


En la misma pgina: Supongamos que tenemos 15 cajas de
texto en una pgina web y los nombres estn en la forma txt_1, txt_2,
txt_3 y as sucesivamente. Ahora aadir los 15 objetos en el
repositorio de objetos no sera un enfoque de una buena
programacin ( ya que la descripcin del objeto sera el mismo,
excepto el identificador ordinal ndice ). Podemos utilizar
sencillamente programacin Descriptiva para diferenciar los
diferentes objetos.

En diferentes pginas: Supongamos que una aplicacin web con


varias pginas tiene 3 botones de navegacin en cada pgina. Deje
que los botones sean "Cancelar", "Atrs" y "Siguiente". Ahora el
Action se graban con estos botones se anexaran 3 objetos de
botones por pgina en el repositorio. Para un flujo de 10 pginas,
que significara 30 objetos de botones que podran haber sido
representados con tan slo usar 3 objetos. As que en lugar de
aadir estos 30 objetos al repositorio, podemos escribir 3
descripciones del objeto y utilizar esas descripciones en cualquier
pgina.

Cmo escribir Programacin descriptiva?


Cabe sealar que la programacin descriptiva se puede utilizar
a travs de tecnologas y complementarias en QTP. No se limita a
una tecnologa en particular. En los ejemplos que siguen, vamos a
utilizar los objetos basados en la web.
TestObject(PropertyName1:=PropertyValue1)

es aceptable, pero esto no lo es

TestObject(PropertyName1 := PropertyValue1)

Ejemplo:
Vamos a escribir una declaracin de programacin descriptiva
en lnea para nombre de usuario cuadro de solicitud de reserva de
vuelos de demostracin.
Una declaracin de lo normal registrado en nombre de usuario
podra ser:
Browser(Welcome: Mercury Tours).Page(Welcome: Mercury
Tours)._
WebEdit(userName).Set mercury
Vamos a crear una declaracin de DP( Programacin
Descriptiva) en lugar de la declaracin grabada anteriormente. Aqu
est el proceso genrico que uno debe seguir.
1.Registre el objeto para el que desea escribir una declaracin de
DP.
2.Abra el repositorio correspondiente al objeto (s).
3.Tenga en cuenta los pares propiedad-valor utilizado por QTP
para identificar el objeto.
4.Escribe usando la sintaxis se discuti anteriormente.
QTP no registra ninguna propiedad para un navegador o un
objeto de pgina.
Para un objeto de navegador, no hay otra propiedad requerida en
caso de que se trata de un solo navegador. Examinador de objetos
se muestra arriba se puede escribir como
Browser(micclass:=Browser)
El objeto Page se muestra arriba se puede escribir como
Page(micclass:=Page)
el objeto WebEdit mostrado arriba puede ser escrito como

WebEdit(type:=text,name:=userName,html tag:=INPUT)

Si usted nota que no hemos escrito, Miclass par propiedad-valor


para este tipo de objeto. En realidad micclass es una propiedad
implcita que se toma automticamente desde QTP asume que con
base en el tipo de objeto de prueba se hace referencia. En caso de
explorador o pgina objeto, puede proporcionar cualquier propiedad
implcita.
Micclass, html tag, son algunos ejemplos de las propiedades
implcitas.
Poniendo todo junto, la afirmacin anterior se vera as cuando
est escrito en Programacin descriptiva:

Browser(micclass:=Browser).Page(micclass:=Page).WebEdit(type:=text,_

name:=userName,html tag:=INPUT).Set mercury


Identificacin de Propiedades Copiar al portapapeles
En UFT 11.5 y superiores, tambin puede utilizar las
propiedades de opcin identificacin Copiar al portapapeles en el
cuadro de dilogo Spy objeto para copiar todos los pares propiedad-
valor de identificacin de un objeto seleccionado en el portapapeles.
Los valores copiados se formatean en la sintaxis estndar DP
con saltos de lnea entre cada par de valores de propiedades.
Puede pegar los datos copiados a cualquier documento y, a
continuacin, copie las lneas seleccionadas - despus de quitar la
lnea se rompe, en una declaracin de DP. Por favor, tenga en
cuenta que no va a utilizar todas las propiedades para identificar el
objeto. Como regla general, usted debe utilizar un conjunto mnimo
de propiedades para identificar un objeto.

Mediante la creacin de propiedades de objeto de coleccin para la


descripcin. (Tambin conocido como programacin representativa dinmica)

Coleccin Properties hace lo mismo como argumentos de


cadena. La nica diferencia es que "recoge" todas las propiedades
de un objeto determinado en una instancia de ese objeto. Ahora ese
objeto puede hacer referencia fcilmente mediante el uso de la
instancia, en lugar de escribir "los argumentos de cadena" una y otra
vez. Es mi observacin de que la gente a encontrar primero el
mtodo ms fcil de trabajar.
El proceso de escribir las declaraciones DP sigue siendo casi el
mismo como en lnea DP. Sin embargo, en este caso los
pares de valor de la propiedad se escriben como parte de un objeto
de descripcin.

Ejemplo

Para este ejemplo, vamos a crear un objeto de descripcin para


WebEdit.

Dim oDesc 'Declara una variable de objeto

Set oDesc = Description.Create 'Crear una descripcin vaca


Ahora tenemos una descripcin en blanco en "oDesc".

oDesc(type).value= text
oDesc(name).value= userName
oDesc(html tag).value= INPUT

La declaracin anterior se vera as cuando se escriben


utilizando este enfoque.

Browser(Browser).Page(Page).WebEdit(oDesc).Set mercury

Nota para usuarios avanzados: Cada descripcin de la


propiedad objeto admite un valor, as como un asignacin
RegularExpression. Si el nombre de valor por encima era
username786 y que quera que los tres ltimos dgitos como una
expresin regular, se puede escribir la misma declaracin como

oDesc(name).value= userName\d\d\d

Si desea apagar propiedad de expresin regular para una


propiedad particular que puede utilizar

oDesc(name).RegularExpression= False

Usar expresiones regulares en Programacin descriptiva


Tanto las formas descritas anteriormente el uso de soporte de
expresiones regulares de forma predeterminada. Consulte nuestra
gua de expresiones regulares si usted desea aprender acerca de
ellos en detalle.
La primera imagen que se muestra en la parte superior tiene un
nombre de usuario dinmico. Si desea identificar que como una
expresin regular utilizando la programacin en lnea descriptiva, se
puede escribir como

Browser(QTP Training).Page(QTP Training).Link(text:=Go To Next Page user\d\d\d, html

tag:=A).Click

Uso dinmico DP, se escribira

Dim oDesc 'Declara una variable de objeto


Set oDesc = Description.Create 'Crear una descripcin vaca
oDesc(text).value= Go To Next Page user\d\d\d
oDesc(html tag).value= A
Browser(QTP Training).Page(QTP Training).Link(oDesc).Click
Utilizacin de variables en la Programacin descriptivo

En el ejemplo mencionado anteriormente, si desea sustituir una


variable en lugar de utilizar una expresin regular, puede ser escrito
como

Dim uName

uName = user786

Browser(QTP Training).Page(QTP Training).Link(text:=Go To Next Page &uName,_

html tag:=A).Click

El uso de identificadores de ordinales en Programacin descriptivo


Tambin puede utilizar cualquiera de los tres identificadores
ordinales (ndice, la ubicacin, en la programacin descriptiva Si
usted tiene 2 cajas de nombre de usuario, uno debajo del otro en la
aplicacin de demostracin de mercurio, se pueden escribir como. -
Browser(micclass:=Browser).Page(micclass:=Page).WebEdit(type:=text,_

name:=userName,html tag:=INPUT,index:=0).Set mercury

Browser(micclass:=Browser).Page(micclass:=Page).WebEdit(type:=text,_

name:=userName,html tag:=INPUT,index:=1).Set mercury

Algunos puntos importantes a tener en cuenta con la programacin


expositiva.

1.Al usar programacin descriptivo desde un punto especfico dentro


de una jerarqua de objetos de prueba, debe continuar utilizando
Programacin descriptiva a partir de ese punto hacia adelante
dentro de la misma declaracin. Si especifica un objeto de prueba
por su nombre de repositorio de objetos despus de que otros
objetos de la jerarqua se han descrito utilizando Programacin
descriptivo, QTP no ser capaz de identificar el objeto.
Por ejemplo, puede utilizar Browser(Desc1).Page(Desc1).Link(desc3), ya que
utiliza Programacin descriptivo a travs de toda la jerarqua de
objetos de prueba.
Puede tambin utilizar Browser(Index).Page(Desc1).Link(desc3) , ya que
utiliza Programacin descriptivo a partir de un cierto punto en la
descripcin (a partir
de la pgina de descripcin del objeto).
Sin embargo, no se puede utilizar
Browser(Desc1).Page(Desc1).Link(Example1) , ya que utiliza Programacin
descriptivo para el Browser y objetos Page, pero
a continuacin, intenta utilizar un repositorio de objetos nombre
para el objeto de la prueba Enlace (QTP intenta localizar el objeto de
vnculo basado en su nombre, pero no puede localizarlo en el
repositorio ya que el padre se especifican mediante programacin
descriptivo).
2.QTP evala todos los valores de propiedad en Programacin
descriptivo como expresiones regulares. Por lo tanto, si desea
introducir un valor que contiene un carcter de expresin regular
especial (como *,?, O +), use el \ (barra invertida) carcter para
instruir QTP para tratar los caracteres especiales como caracteres
literales.
En el ejemplo anterior , si tuviramos parntesis alrededor de
nombre de usuario, que habra sido escrito

Browser(micclass:=Browser).Page(micclass:=Page).WebEdit(type:=text,_

name:=\(userName\),html tag:=INPUT).Set mercury

desde parntesis es un carcter especial expresin regular y en este


caso usted querra tratarlo como un literal.

3.Micclass se muestra como nombre de clase de objeto de espionaje.


Si utiliza Nombre de claseen DP, QTP generar un error.

4.De alguna manera hay un mito en la comunidad QTP que DP se


puede utilizar cuando QTP es incapaz de identificar un objeto
utilizando los medios normales. Programacin descriptiva
proporciona una manera de evitar repositorio de objetos y le da un
poco de flexibilidad para identificar el objeto. Sin embargo, si an
despus de la adicin de complementos adecuados no es capaz de
identificar un objeto utilizando los medios normales, no asuma que
DP puede venir a su rescate.

EJEMPLOS EXTRAS

Programacin Esttica vs Programacin descriptiva dinmico:


Enfoque descriptivo esttica.-

window("Title:=Login").WinEdit("AttachedText:=Agent Name:","height:=20","width:=119" ).Set


"abcd"

Programacin descriptivo esttica: Esta es rpido y corto


pero puede causar el problema cuando las secuencias de comandos
estn madurando a un nivel que usted pueda necesitar mismo objeto
en pantalla diferentes de la misma escritura de la prueba . Esta
sintaxis tiene el beneficio de recibir un disparo y rpido, pero puede
causar problemas si vamos a utilizar el objeto de nuevo en otro lugar.
En este caso vamos a tener que reescribir las todas las cadenas
de descripcin, lo que hace el cdigo menos legible y ms difcil de
mantener (es decir, si una de las propiedades iban a cambiar, nos
veremos obligados a hacer varias reparaciones en diferentes lugares
a lo largo el cdigo). Dinmica Programacin descriptiva: La razn
principal por la que supongo que esto se utiliza es por algn tiempo
un objeto aparecer en un padre diferente cada vez (por ejemplo - un
pop-up que aparece bajo la sub-ventana de iniciar). En algunas
aplicaciones, la nica manera de trabajar con tales objetos es con
DP.
Aparte de que hay algunos objetos dinmicos, como cuadro de
lista para que el contenido se va modificando por lo que en ese
momento esta descriptivo dinmica ser ms eficiente y flexible
suficiente. una ventaja ms es de acuerdo con esto, en lugar de
trabajar con un solo objeto a la vez , podemos reunir todos los
objetos en una matriz que responden a nuestras propiedades de
identificacin, y trabajar con ellos como un conjunto, y cambiar el
tamao de la matriz siempre que lo necesitemos.
Proporcionamos estado de valores y propertie sthat describe el
objeto directamente.
En el cdigo anterior para colocar abcd en todo el cuadro
WinEdit necesita ms cantidad de declaraciones.
Qu pasa si en el futuro usted obtiene ms que el nmero
especificado de caja WinEdit, uno tiene que escribir varias
instrucciones para acomodar l. mientras que en la programacin
descriptiva dinmica que va a tener toda la coleccin de la caja
WinEdit en una matriz y se puede utilizar en una especie de bucle, el
mejor ejemplo podra ser un WinList o cuadro desplegable objeto. En
la programacin descriptiva Dinmica: Proporcionamos coleccin de
propiedades y valores a desscription del objeto y luego
proporcionamos otras declaraciones en apoyo de la coleccin de
objetos por ejemplo.
Childobjects Adems un objeto y su propiedad contiene el
nombre del objeto y el valor de la propiedad del objeto. a cambio,
ofrece una coleccin de objetos que tienen mismas propiedades. Una
vez que se crea la propiedad del objeto que podemos tener agregar,
quitar valores desde y hasta la propiedad del objeto puede ser
introducido durante el tiempo de ejecucin.

Code:
Static .-

Browser("micclass:=Browser").Page("micclass:=Page").WebButton("micclass:=Button",_
"name:=Submit", "index:=1").Click

Browser("micclass:=Browser").Page("micclass:=Page").WebButton("micclass:=Button",_
"name:=Submit", "index:=2").Click

Dynamic.-

Set oButton = Description.Create


oButton("micclass").value = "Button"
oButton("name").value = "Submit"
set oButtons=browser("micclass:=Browser").page("micclass:=Page").ChildObjects(oButton)
For cnt=0 to oButtons.count-1
oButtons(cnt).Click

Enfoque descriptivo dinmico.-

Set myvar= description.Create()


myvar("AttachedText").value="Agent Name:"
myvar("height").value=20
myvar("width").value=119
window("Title:=Login").WinEdit(myvar ).Set "abcd"

Debo decir aqu que no hay ninguna regla que tenemos que usar
esttica o dinmica.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'PROGRAMACIN DESCRIPTIVA DINAMICA
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ObjDes.CrearObjDes (Dialog("text:=Login"),"WinEdit","attached text",
Datatable.Value("ObjetoUsuario",1)).Click
ObjDes.CrearObjDes (Dialog("text:=Login"),"WinEdit","attached text",
Datatable.Value("ObjetoUsuario",1)).Type daun(Iterator)
ObjDes.CrearObjDes (Dialog("text:=Login"),"WinEdit","attached text",
Datatable.Value("ObjetoPass",1)).Click
ObjDes.CrearObjDes (Dialog("text:=Login"),"WinEdit","attached text",
Datatable.Value("ObjetoPass",1)).Type datatable.Value("pass",1)

'ObjDes.CrearObjDes (Window("text:=Flight Reservation"),"MaskEdBox","attached text",


Datatable.Value("ObjetoPass",1)).Click
ObjDes.CrearObjDes (Dialog("text:=Flight Reservation"),"ActiveX","acx_name","MaskEdBox").Type
Datatable.Value("Fecha",1)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'PROGRAMACIN ESTATICA CON VARIABLE DESCRIPTIVA
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set obj=Description.Create()
obj("micClass").value="Window"
obj("text").value="Flight Reservation"

Set obj1=Description.Create()
obj1("micClass").value="WinComboBox"
obj1("attached text").value="Fly To:"
Window(obj).WinComboBox(obj1).Select "Frankfurt"

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'PROGRAMACIN ESTATICA
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Activate "12585 LON 08:00
AM FRA 11:30 AM AF $172.47"
Window("Flight Reservation").WinEdit("Name:").Set "Bernardo alonso Mejia"
Window("Flight Reservation").WinRadioButton("First").Set
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").Activate
QTP DOTNetFactory formulario personalizado
En este artculo se muestra cmo crear un formulario

personalizado (que se muestra ms abajo) usando

DotNetFactory.Para crear el formulario, us Visual Studio, luego se

convierte el cdigo en DOTNetFactory para el uso con QTP.Yo


recomiendo que hagas lo mismo, como crear el formulario con todos

los controles pertinentes sin un diseador puede ser una tarea

tediosa.

Sintaxis DotNetFactory

La siguiente sintaxis es como una instancia de un tipo de NET.

Puede ser creado con DOTNetFactory.

Set var_CreateInstance = DOTNetFactory.CreateInstance (TypeName [,Assembly] [,args])

Explicacin de cada argumento de CreateInstance es la

siguiente.
TypeName: El nombre completo del tipo de objeto, por ejemplo,

System.Windows.Forms.Form.
Montaje: Opcional. Si el ensamblado se carga previamente en el

registro, que no es necesario para entrar en l. De lo

contrario, deber introducir el nombre de ruta completa, por

ejemplo, System.Windows.Forms. Si desea crear una instancia


de un tipo en el GAC (cach de ensamblados global), puede

introducir el nombre corto, por ejemplo, las formas.


args: Opcional. Los argumentos necesarios, en su caso, para el

Nombre de tipo y / o Asamblea especificada

El Cdigo

El cdigo siguiente hace que sea posible. Tenga en cuenta

que todos los campos aaden a esta forma tan slo para fines de

demostracin y puede que no sea posible hacer cada uno el trabajo

como lo haran en un entorno .NET.

namespace = "System.Windows.Forms"

Set oPoint = DotNetFactory.CreateInstance("System.Drawing.Point", "System.Drawing", x, y)

Set ToolStrip = DOTNetFactory.CreateInstance("System.Windows.Forms.ToolStrip")

Set ToolStripDropDownButton = DOTNetFactory.CreateInstance(_


"System.Windows.Forms.ToolStripDropDownButton")

ToolStrip.Items.Add ToolStripDropDownButton

oPoint.x = 0 : oPoint.y = 0

Set ToolStrip.Location = oPoint

Set ToolStripMenuItem =

DOTNetFactory.CreateInstance("System.Windows.Forms.ToolStripMenuItem")

Set ToolStripItem = DOTNetFactory.CreateInstance(_


"System.Windows.Forms.ToolStripItem", namespace, ToolStripMenuItem)

ToolStripMenuItem.Width = 98 : ToolStripMenuItem.Height = 22

ToolStripMenuItem.Text = "New"

Set ToolStripItemDisplayStyle = DOTNetFactory.CreateInstance(_


"System.Windows.Forms.ToolStripItemDisplayStyle")

ToolStripDropDownButton.DisplayStyle = ToolStripItemDisplayStyle.Text

ToolStripDropDownButton.DropDownItems.Add ToolStripMenuItem

ToolStripDropDownButton.Text = "File"

Set CheckBox1 = DOTNetFactory.CreateInstance("System.Windows.Forms.CheckBox")

oPoint.x = 6 : oPoint.y = 31

Set CheckBox1.Location = oPoint

CheckBox1.Width = 80 : CheckBox1.Height = 17
CheckBox1.Text = "CheckBox1"

Set CheckBox2 = DOTNetFactory.CreateInstance("System.Windows.Forms.CheckBox")

oPoint.x = 6 : oPoint.y = 55

Set CheckBox2.Location = oPoint

CheckBox2.Width = 80 : CheckBox2.Height = 17

CheckBox2.Text = "CheckBox2"

Set RadioButton1 = DOTNetFactory.CreateInstance("System.Windows.Forms.RadioButton")

oPoint.x = 117 : oPoint.y = 55

Set RadioButton1.Location = oPoint

RadioButton1.Height = 17 : RadioButton1.Width = 85

RadioButton1.Text = "RadioButton1"

Set RadioButton2 = DOTNetFactory.CreateInstance("System.Windows.Forms.RadioButton")

oPoint.x = 117 : oPoint.y = 31

Set RadioButton2.Location = oPoint

RadioButton2.Width = 85 : RadioButton2.Height = 17

RadioButton2.Text = "RadioButton2"

Set Button = DotNetFactory.CreateInstance("System.Windows.Forms.Button")

oPoint.x = 342 : oPoint.y = 171

Set Button.Location = oPoint

Button.Width = 104 : Button.Height = 38

Button.Text = "Close Form"

Set ProgressBar = DOTNetFactory.CreateInstance("System.Windows.Forms.ProgressBar")

oPoint.x = 18 : oPoint.y = 175

Set ProgressBar.Location = oPoint

ProgressBar.Width = 299 : ProgressBar.Height = 33

Set TextBox = DOTNetFactory.CreateInstance("System.Windows.Forms.TextBox")

oPoint.x = 73 : oPoint.y = 57

Set TextBox.Location = oPoint

TextBox.Width = 121 : TextBox.Height = 20

Set ComboBox = DOTNetFactory.CreateInstance("System.Windows.Forms.ComboBox")

oPoint.x = 73 : oPoint.y = 29

Set ComboBox.Location = oPoint

ComboBox.Name = "ComboBox"

ComboBox.Width = 121 : ComboBox.Height = 21

ComboBox.Items.Add "Black"

ComboBox.Items.Add "White"
ComboBox.Items.Add "Red"

ComboBox.Items.Add "Green"

Set Label1 = DOTNetFactory.CreateInstance("System.Windows.Forms.Label")

oPoint.x = 6 : oPoint.y = 37

Set Label1.Location = oPoint

Label1.Width = 66 : Label1.Height = 13

Label1.Text = "ComboBox:"

Set Label2 = DOTNetFactory.CreateInstance("System.Windows.Forms.Label")

oPoint.x = 11 : oPoint.y = 63

Set Label2.Location = oPoint

Label2.Width = 61 : Label2.Height = 13

Label2.Text = "TextBox:"

Set GroupBox1 = DOTNetFactory.CreateInstance("System.Windows.Forms.GroupBox")

GroupBox1.Controls.Add RadioButton1

GroupBox1.Controls.Add RadioButton2

GroupBox1.Controls.Add CheckBox1

GroupBox1.Controls.Add CheckBox2

oPoint.x = 12 : oPoint.y = 45

Set GroupBox1.Location = oPoint

GroupBox1.Width = 227 : GroupBox1.Height = 96

GroupBox1.Text = "GroupBox1"

Set GroupBox2 = DOTNetFactory.CreateInstance("System.Windows.Forms.GroupBox")

GroupBox2.Controls.Add Label2

GroupBox2.Controls.Add TextBox

GroupBox2.Controls.Add Label1

GroupBox2.Controls.Add ComboBox

oPoint.x = 256 : oPoint.y = 45

Set GroupBox2.Location = oPoint

GroupBox2.Width = 210 : GroupBox2.Height = 94

GroupBox2.Text = "GroupBox2"

Set Form = DotNetFactory.CreateInstance("System.Windows.Forms.Form")

Form.CancelButton = Button

Form.Controls.Add ToolStrip

Form.Controls.Add Button

Form.Controls.Add ProgressBar

Form.Controls.Add GroupBox1
Form.Controls.Add GroupBox2

Form.Width = 490 : Form.Height = 265

Form.Text = "RelevantCodes DOTNetFactory Example"

Form.Show() : Wait(2)

TextBox.Text = "Starting..."

ComboBox.Text = "White"

ProgressBar.Maximum = 5

ProgressBar.Minimum = 0

ProgressBar.Step = 1

For i = 0 to 5
ProgressBar.PerformStep()

Wait 0, 500

Next

Form.Hide()

Form.ShowDialog()

Form.Dispose()

EJEMPLOS

He creado un formulario y aadir un cuadro de texto y un botn ("ok")


.. se hace .. pero quiero mostrar el mensaje por ejemplo: "hecho" es
alguien hace clic en el botn .. as que cul es la sintaxis para
buton click ..

With oForm

.Height =500

.Controls.Add oButton

End with

With oButton

If oButton is clicked then im searching for this code..plz help as

oButton.Click is not working

display message

End if
End with

Por favor, intente lo siguiente:

Set oForm = DotNetFactory.CreateInstance("System.Windows.Forms.Form", "System.Windows.Forms")

Set oButtonOK = DotNetFactory.CreateInstance("System.Windows.Forms.Button",

"System.Windows.Forms")

Set oButtonCancel = DotNetFactory.CreateInstance("System.Windows.Forms.Button",

"System.Windows.Forms")

Set DiagReturn = DotNetFactory.CreateInstance("System.Windows.Forms.DialogResult",

"System.Windows.Forms")

Set oPoint = DotNetFactory.CreateInstance("System.Drawing.Point","System.Drawing", x, y)

With oPoint

.x = 5

.y = 5

End With

With oButtonOK

.Text = "OK"

.Location = oPoint

.DialogResult = DiagReturn.Ok

End With

With oPoint

.x = 5

.y = 35

End With

With oButtonCancel

.Text = "Cancel"

.Location = oPoint

.DialogResult = DiagReturn.Cancel
End With

With oForm

.Height = 500

.Controls.Add oButtonOK

.Controls.Add oButtonCancel

.ShowDialog

End With

If oForm.DialogResult = DiagReturn.Ok Then

'Code to open another form

MsgBox "Opening another form.."

End If

If oForm.DialogResult = DiagReturn.Cancel Then

'Code to do something else

MsgBox "Doing something else.."

End If

Set oForm = Nothing

Set oButton = Nothing

Set DiagReturn = Nothing

Set oPoint = Nothing


Est seguro que desea utilizar QTP?
Muy a menudo, he visto personas que quieren automatizar las
pruebas slo porque quieren usar este apasionante palabra de moda.
Se realiza sin que exista alguna justificacin de lo que se necesite
automatizar. Yo sugerira que antes de pensar siquiera en la
automatizacin, se debe de hacer un estudio exhaustivo de la aplicacin
que se pretende Automatizar.
Se deben de analizar las siguientes cuestiones antes de decidir si
automatiza o no:
Las pruebas se necesitan aplicar para varias versiones o nada mas es
para una.
La cantidad de Data que se usa para las pruebas es muy variada o son
algunos valores mnimos.
Las pruebas se necesitan probar en varios ambientes diferentes
( Exploradores ).
Los siguientes tipos no son considerados como los buenos candidatos
para la automatizacin:
Casos de prueba que slo se ejecutar una vez.
Casos de prueba que se seleccionan con frecuencia para su ejecucin.
Casos de prueba que requieren intervencin manual, es decir, una
tarea que no es posible automatizar.
El ms imp. uno-basado en la intuicin y el conocimiento de la
aplicacin.
Ej. si usted encuentra que usted no puede escapar de la intervencin
manual.

Por encima de todo el esfuerzo necesario para desarrollar y mantener


los scripts automatizados debe ser comparado contra los recursos (no de
horas, presupuesto) que la tarea tomara mientras que la ejecucin
manual. La cantidad de cambios que la aplicacin sufre tambin debe
tenerse en cuenta para la eleccin de la automatizacin de pruebas.
Si una aplicacin se somete a cambios drsticos que significa que
ms tiempo se agotar en el mantenimiento de los scripts. Estas
aplicaciones son, por consiguiente mala eleccin para la automatizacin.
Teniendo en cuenta los puntos anteriores el retorno de la inversin
(RI) debe ser calculado y ste debe ser el criterio ms importante para
decidir automatizar las pruebas.
ANEXO
Caractersticas principales que tienen que cumplir un sistema para considerarlo
como Automatizable.
Puntos Principales para automatizar un sistema.

Si se tienen que correr un juego de pruebas repetidamente.

Cdigo que cambia frecuentemente necesitando reduccin del tiempo


consumido en las pruebas de regresin.
Necesita pruebas combinando diferentes lenguajes, con diferentes
formatos entre Windows y Web.

Necesita realizar pruebas en paralelo en una o varias maquinas.

Esta dentro de la balanza el costo por hacer Automatizada contra las


manuales( COSTO BENEFICIO ).

Si el caso de prueba slo se ejecuta en variadas veces ante un cambio


en la codificacin.

Que las combinaciones posibles de las pruebas sean acordes a las


logradas con la automatizacin.

En caso de sistemas demasiado grandes, que con las pruebas


manuales se extienden los tiempos de pruebas manuales y de regresin.

Que se requieran una gran cantidad de datos reales tomados de


servidores, especializados.
Que los sistemas tengan constante cambios que se ocupen ejecutar las
pruebas en un lapso de tiempo muy corto.
Que el sistema necesite reducir riesgos mientras aumentamos la
velocidad de ejecucin.

El sistema en caso de comenzar de Cero la automatizacin debe de


contar con tiempo suficiente asignado para poder automatizarlo por
completo.
El equipo esta consiente de las diferencias que existe entre la pruebas
Manuales y las Automatizadas, sobre todo el Lder de proyecto.

Que el sistema no sea para ejecutarse en una sola ocasin.

El sistema operativo sea compatible con la Herramienta de


Automatizacin.

En caso de Web, el Navegador sea compatible con la Herramienta.

Sern necesarias Pruebas de Regresin.

Das könnte Ihnen auch gefallen