Documentos de Académico
Documentos de Profesional
Documentos de Cultura
la instruccin Call. Cada funcin puede tener varios nodos de salida, DownCall slicing
puede agregar ms de un nuevo criterio Fig. 3 es una variacin del programa de pruebas en
la Fig. 2, donde la lnea 7 se sustituye con una llamada a la funcin y el valor de (n) se pasa
como un parmetro de call_test. El lado derecho de la Fig. 3 muestra su extensin cfg,
donde las llamadas a funciones son representadas por bordes de guiones. En este caso, un
criterio CDown(7) 15,{k,d, c} se agrega despus RC informtica (n) = R2 C (n), donde 7 es
el nodo en el que se llama a la funcin Calcular_prod, 15 es el nodo de salida de la funcin
{k,d} es el conjunto de variables que son en RC (7) = {prod,i,n} dentro del mbito de la
funcin Calcular_prod, y {c} es la variable que devuelve al nodo 15. Una vez que un nuevo
criterio, se aade, para el clculo de las variables relevantes, la rama, y el corte se repiti
usando el nuevo conjunto de criterios.
4.3. Tratar con variables globales y punteros desde el software integrado como sistemas
operativos hacen un uso intensivo de las variables globales, nuestro inter-slicing procesal
debe tomar en cuenta las variables globales. El uso de punteros tambin requiere atencin
extra desde la dependencia de datos podran no ser identificadas a partir de la dependencia
de control en ambos casos. Para manejar este problema, nuestra tcnica de slicing define un
nuevo criterio , denominado Global slicing, para los casos en los que el conjunto de
variables relevantes RC (n) contiene variables globales.
Aumentando un criterio global de slicing requiere identificar funciones que definen las
variables globales. Esto puede hacerse mediante funciones de pre procesamiento antes de
iniciar el corte en rodajas. Por ejemplo, si la variable n en el nodo 5 en la Fig. 3 es una
variable global, en lugar de ser un parmetro, podemos identificar una lista de funciones
que definen la variable n. Si f es una funcin, entonces Cg (N, f ) = m{n} es un criterio
global de rebanadoras, donde m es el ltimo nodo f que define n.
Las variables de puntero pueden ser tratadas de la misma manera que las variables globales
despus de puntero anlisis w.r.t. la relacin PV Un RV, donde PV es el conjunto de
variables de puntero, es el conjunto de variables de direcciones y RV es el conjunto de
variables referenciadas finalmente. Por ejemplo, si un programa contiene
1: int * x; ... m: x = &y; ... n : z = *x; ... entonces una tupla(&X, Y, y) se almacenan y se
utilizan para determinar el final de la variable que est referenciado por la variable de
puntero. En el proceso, R0 C (m) incluye &y mientras R0 C (n) incluye y. Adicin de un
criterio global de slicing est prximo si y es una variable global.
Aqu, partimos del supuesto de que el uso de punteros sigue el estndar de codificacin
para sistemas crticos, como MISRA-C [29]. Por lo tanto, suponemos que las variables de
puntero se refieren a ubicaciones de memoria fija y no consideran que la dinmica de la
anulacin de las referencias devariables de puntero.
Basada en la propiedad slicing establece los criterios para dividir la inicial como { ni, Vi }
para un determinado conjunto de propiedades Ai , donde vi es el conjunto de variables
referenciadas por Ai y ni es el nmero de nodo donde Ai es especificado. El conjunto inicial
de las funciones de destino} {Pi incluye todas las funciones que cada ni pertenece. A partir
de estos criterios y dividiendo los cortes iniciales dirigidos a funciones, basadas en la
propiedad iterativamente dividida, se realiza de la siguiente manera:
1. Un extendido CFG est construido para las funciones en el conjunto inicial de las
funciones objetivas.
2. Dividir, incluyendo DownCall slicing, se realiza en el Extended CFG w.r.t. la divisin de
criterios iniciales. Agregar nuevos criterios para dividir sus correspondientes funciones
objetivas slice (construyendo sus CFGs) si los conjuntos de variables relevantes incluyen
variables globales.
Agregar nuevos criterios para dividir sus correspondientes funciones objetivas slice si los
conjuntos de variables relevantes incluyen variables globales.
El proceso repite la unidad DownCall slicing, Global slicing, UpCall slicing, and Global
slicing,, en este orden hasta que ningn otro conjunto de cortes se aaden elementos y
ningn otro sector se identifican las funciones de destino. Observamos que el proceso
finalmente termina y llega a un punto fijo, ya que no puede ser slo un nmero finito de
instrucciones y un nmero finito de funciones. Es un enfoque slido desde el sector
resultante incluye todo el conjunto de instrucciones que definen las variables relevantes del
segmento inicial
Cuando eslicing, llega a un punto fijo, combinamos el segmento final establecida con el
objetivo de laminar de funciones, que constituye las funciones a nivel de mdulo para un
determinado conjunto de propiedades. Este conjunto de funciones a nivel de mdulo, MAi ,
es el conjunto de funciones divididas.
Definicin de nivel de mdulo (10 funciones). Dada una propiedad p, funciones de nivel de
mdulo mp se refieren al conjunto de funciones divididas obtenidas de la iterativa slicing
basada en la propiedad con el uso inicial de trocear el criterio C = np, V p .
Una vez este Mp es calculad, podemos identificar las funciones a nivel de sistema que
finalmente llame a una funcin de nivel de mdulo mediante anlisis de disponibilidad
hacia atrs en una llamada de funcin grfica, bajo la hiptesis de que (1) funciones de
nivel de sistema no son llamados por las funciones a nivel de sistema, y (2) la llamada a la
funcin grfica no es cclico.
Definicin 12. Un sistema abstracto a nivel de kernel para una propiedad P, F A(p) es una
coleccin de funciones que compilables en F p o estn directamente o indirectamente por
una funcin llamada en F p .
Un modelo de entorno de nivel de mdulo est construido utilizando slo estas firmas de
funcin a nivel de mdulo, con su correspondiente kernel abstracto que abarca todas las
funciones a nivel de mdulo identificado w.r.t. la propiedad dada. Luego identificamos las
funciones a nivel de sistema para cada una de las funciones de nivel de mdulo. Un modelo
de entorno de nivel de sistema se compone de las llamadas a las funciones de nivel de
sistema. Su ncleo correspondiente en resumen abarca todo el sistema identificado
funciones de nivel intermedio, funciones y su cdigo dependiente en el grfico de llamadas.
5. Modelo de entorno de prueba y generacin de secuencia de
Una forma muy sencilla para incluir todas las tareas posibles interacciones con el sistema
operativo es el modelo de una tarea como una arbitraria secuencia de llamadas a funciones
del sistema. Sin embargo, esto incluye demasiadas falsedades y/o imposible
comportamientos, aumentando as el costo de la verificacin, as como el costo de
contraejemplo anlisis; si n llamadas de sistema son proporcionados por el sistema
operativo, puede haber (m-permutaciones de n) H = n * (n - 1) * ... * (n - m 1) formas de
llamar m sistema de llamadas de n cuando la duplicacin no est permitido. nm es el
nmero de posibles secuencias de llamadas si la misma llamada puede utilizarse varias
veces.
T1. Una llamada del sistema f1 ser seguido por F2 (aunque no necesariamente de forma
directa).
T3. Una llamada de sistema f no ser llamado en entre dos llamadas al sistema f1 y F2.
S yS | S | ,y { / c,a,b}
S como b | abS | S ab
Como se ilustra en la Fig. 5(b), este autmata puede utilizarse para clasificar secuencias de
llamadas dependiendo de si la secuencia termina en un estado de aceptar o no. Por ejemplo,
una secuencia de llamada ayabb es una secuencia de llamada mientras ayyabc legal es una
secuencia de llamadas ilegales.
Este modelo se utiliza como un medio de verificacin para comprobacin del modelo
OSEK/VDX sistemas operativos basados en as como un motor de generacin de la
secuencia de prueba para pruebas de nivel de sistema de guiado. Desde el uso del modelo
de entorno para fines de pruebas requiere un paso ms para la generacin de la secuencia de
pruebas automatizadas, en las secciones siguientes se proporcionan ms detalles sobre las
tcnicas.
1. Una secuencia de prueba t = T0t1 ...tm sobre es una secuencia finita de el alfabeto de
entrada.
2. Una ruta de prueba inducida por una secuencia de prueba t, (t) = p0 ... pl es una
secuencia de vectores de estado, donde k {0 ...l}, pk S0 S1 ... Sn.
3. Dos caminos finitos p = p0 p1 ... pn y p = p0q1 ... qm son equivalentes tartamudeo w.r.t.
un autmata Ai si y slo si p | Ai = q | Ai.
Segn la definicin de 16, una prueba de ruta puede ser proyectada en una restriccin
especfica de autmatas, resultando en una secuencia de estados del autmata especficos
que pueden contener las repeticiones, como = a0a0a1a2a2 ...una. El simple seguimiento
de la proyeccin se obtiene mediante la eliminacin de esas repeticiones, reduciendo para
A0a1a2 ...una. Tartamudeo equivalencia de dos caminos w.r.t. un autmata Ai significa que
muestran las mismas secuencias de estados si estn proyectados en el autmata Ai y se
eliminan las duplicaciones despus. Para mayor comodidad, el tartamudeo equivalencia
anotacin es denotado como p q.
(a) (cobertura de rutas legales) para cada ruta = p0 p1 ... pl de un autmata Ai, donde p0 =
IE 0 y PL = IS F , hay una secuencia de prueba t = T0t1 ...tm T y su correspondiente
recorrido p(t) tal que p(t) | Ai .
(b) (cobertura de rutas ilegales) Para cada ruta = p0 p1 ... pl de un autmata Ai, donde p0
= IE 0 y PL = IS F , hay una secuencia de prueba t = T0t1 ...tm T y su correspondiente
recorrido p(t) tal que p(t) | Ai .
2. Cobertura del alfabeto: cada smbolo del alfabeto aparece al menos una vez en T , es
decir, una t T{ti | t = T0t1 ...tk, 0 i k}.
Ruta de cobertura legal (ilegal) de caminos significa garantizar que cada ruta finita que
termina con el estado final (un estado distinto del estado final) va a ser probado al menos
una vez, sin considerar la repeticin. Cobertura del alfabeto garantiza que cada llamada de
API es para ser probado al menos una vez en la generan secuencias de pruebas. Un
conjunto de secuencias de test satisfagan estas condiciones es un subconjunto de las
secuencias de prueba arbitraria de llamadas de sistema, donde ambas secuencias de
llamadas legales e ilegales de secuencias de llamada estn ampliamente representados por
secuencias de prueba seleccionada.
5.3. A nivel del sistema de asignacin de secuencias de test de nivel de mdulo a mdulo de
secuencias de prueba requiere secuencias de llamadas de nivel de mdulo como su entorno
de prueba en lugar de secuencias de llamadas del sistema. Podemos identificar las
restricciones ambientales a nivel de sistema de OSEK/VDX estndar, pero en el nivel de
mdulo limitaciones ambientales no son explcitas y son desplazados incrustados en la
relacin entre las funciones a nivel de sistema y funciones de nivel de mdulo. Sin
embargo, funciones de nivel de mdulo no puede ser ejecutado a menos que estn directa o
indirectamente por una funcin denominada systemlevel, y las limitaciones impuestas a las
funciones de nivel de sistema debe ser obedecida implcitamente por el mdulo de nivel de
funciones.
Observamos que las limitaciones implcitas pueden ser identificadas a partir de la llamada
relacin entre funciones de nivel de sistema y funciones a nivel de mdulo, que ya hemos
identificado durante el cmputo de las funciones relevantes: Dada una funcin a nivel de
sistema, un conjunto de funciones de nivel de mdulo que se llama directa o indirectamente
por la funcin se calcula durante el anlisis de disponibilidad de avance. La tabla 3 muestra
una lista de dichas correlaciones entre algunas de nivel de sistema y funciones de nivel de
mdulo. Por ejemplo, la restriccin externa "WaitEvent puede llamarse despus SetEvent es
llamado" puede ser re-interpretada como "tpl_get_proc puede ser llamado despus de
tpl_put_new_proc y tpl_schedule_de_Running son llamados", de acuerdo con la tabla de
asignacin.
A continuacin, una secuencia de prueba de nivel de mdulo tm est definido para cada
nivel del sistema secuencia de prueba t = T0t1 ...tn T , como tm =M(t0)M(t1)... M(TN).
Por consiguiente, el conjunto de secuencias de nivel de mdulo Tm est definido como {tm
| t T }, donde T es el conjunto de secuencias de prueba de nivel de sistema.
6. Aplicacin del enfoque propuesto fue implementado en un prototipo de una herramienta
formada por tres sub-mdulos: (1) un mdulo de cdigo propertybased slicing como se
describe en la seccin 4, (2) un mdulo para el entorno basado en restriccin de generacin
como se describe en la seccin 5, y (3) un mdulo de controlador de prueba generacin que
genera secuencias de prueba la conexin de controladores y el abstracto kernel.
El CFG construccin es implementado con la ayuda del C analizador de Eclipse CDT [31].
A nivel de mdulo de extraccin de funcin extrae una lista de funciones en el nivel de
mdulo a partir del resultado de cortar en rodajas. Estos se usan para generar secuencias de
prueba de nivel de mdulo de nivel de mdulo y kernels abstracta. A nivel del sistema de
extraccin de funcin extrae una lista de funciones a nivel de sistema a travs de la funcin
de anlisis backwardreachability grficos de llamadas desde la lista de funciones en el nivel
de mdulo. Estos se usan para generar secuencias de prueba de nivel de sistema y a nivel de
sistema kernels abstracto, tal como se definen en la definicin 12. Los ncleos son
abstractos compilables programas residual, que se encuentran en cdigo ANSI-C.