Está en la página 1de 11

nodo de Q, ya que el valor devuelto puede determinar el valor de una variable relevante de

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.

Definicin 8 (llamada ascendente slicing criterio). Supongamos que un programa P que se


reban utilizando un criterio C, es llamado por otro programa Q , y RC (n f ) = , donde n
f es el primer nodo en el CFG de P, entonces un nuevo criterio define como CUp = i, RC (n
f )[A/F ] SCOPEQ , donde i es el nmero de nodo QUE LLAMA P en Q y [A/F ]
significa la sustitucin de parmetros formales con parmetros reales.

En la Fig. 3, prueba primero en rodajas junto con la computacin_prod. Desde RC (2) =


{n} = en este caso (lo que significa que el valor de n no est definido dentro de la
funcin), nos encontramos con funciones que llaman prueba y agregar un nuevo criterio de
slicing CUp = 02,{M} . Contina con los criterios extendidos.

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.

Definicin 9 (Global slicing criterio). Supongamos RC (n) = G, donde G es el conjunto


de variables globales. El criterio para cortar en rodajas global se define como CG (v, f v ) =
m{v} para cada variable v RC (n) G V, donde f es una funcin que define v y m es el
ltimo nodo que define v en f v .

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.

4.4. Proceso general de slicing basada en la propiedad

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.

3. Si el RC (0) de Pi no est vaco, realizar llamada ascendente slicing de Pi . Aqu, slo el


conjunto de variables relevantes en la primera instruccin de Pi en el mbito de la funcin
llamadora es de inters. Vamos a llamar a este V R.

4. Continuar dividendo la funcin llamadora usando C = NR , V R , donde n es el nodo para


llamar a Pi en la funcin llamadora.

Agregar nuevos criterios para dividir sus correspondientes funciones objetivas slice si los
conjuntos de variables relevantes incluyen variables globales.

5. Repita el procedimiento desde el paso 1 con extended slicing criterios y el conjunto


extendido de las funciones de destino hasta que ningn otro elemento del conjunto de cortes
es aadido y ningn otro segmento nuevo ni el criterio objetivo es aadido.

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

4.5. Funcin slicing

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.

w.r.t. el conjunto de propiedades {Ai}. Esto constituye el destino localizado de la prueba.


Tambin se utiliza para generar automticamente el entorno de verificacin de nivel de
mdulo mediante el modelo de verificacin y comprobacin de las pruebas.

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 11 (funciones de nivel de sistema). Dado un mdulo local de Mp y una llamada


a la funcin grfica de un programa, F p es un conjunto de funciones de nivel de sistema
que finalmente llaman a una funcin de nivel de mdulo y no son llamados por cualquier
otra funcin.

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 .

Fig. 4 se muestra el diagrama conceptual para el clculo de las funciones de nivel de


mdulo, en el nivel de mdulo de kernel systemlevel abstracta, funciones y sistema
abstracto a nivel de kernel.

La finalidad de la informtica a nivel de mdulo y funciones a nivel de sistema es doble:


estas funciones se utilizan para (1) construir un programa residual compilable como
resultado de dividir y, lo que es ms importante, (2) para construir los modelos del entorno
para el nivel de mdulo kernel abstractas y el sistema de nivel kernel abstracta,
respectivamente.

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.

Considerando que la longitud de la secuencia de llamadas del sistema m no es pre-


definidos, es prctico realizar la verificacin exhaustiva con respecto a toda la funcin
llamada espacio. De hecho, nuestros experimentos anteriores [1] muestran que la
comprobacin del modelo del trampolin kernel usando CBMC bajo toda la funcin llamada
espacio era demasiado costosa para obtener un significativo resultado de verificacin.

En cambio, nuestro enfoque decparticiones la llamada en un espacio y un llamamiento


jurdico espacial llamada ilegal mediante constraint autmatas, y selecciona de manera
sistemtica secuencias de llamadas representativas que cubren todas las transiciones en los
autmatas de restriccin [30].

Definicin 13. Deje sea un subconjunto de funciones de sistema en un sistema operativo


determinado. A continuacin, la funcin llamada espacio con respecto

a , F () = { si | Si }, es un conjunto de secuencias de llamadas arbitrarias en .


puede ser todo el conjunto de funciones del sistema, el conjunto de funciones de nivel de
sistema o el conjunto de funciones de nivel de mdulo para una propiedad determinada.

5.1. Construccin de entorno mediante constraint

Los autmatas OSEK/VDX explcitamente estndar/implcitamente especificas


restricciones entre posibles llamadas de sistema a partir de un conjunto de tareas de la
aplicacin. Por ejemplo, la Tabla 2 es una lista de algunos de los obstculos identificados
desde el OSEK/VDX estndar. Observamos que estas limitaciones pueden clasificarse en
cuatro tipos, que pueden ser especificadas oficialmente libres de contexto en la gramtica.

T1. Una llamada del sistema f1 ser seguido por F2 (aunque no necesariamente de forma
directa).

T2. El nmero de llamadas a f est limitada por n.

T3. Una llamada de sistema f no ser llamado en entre dos llamadas al sistema f1 y F2.

T4. Ningn sistema llamado ser realizado despus de una llamada a f .

Por ejemplo, la restriccin C2 puede considerarse un tipo de T3, como TerminateTask,


ChainTask WaitEvent, programar y no pueden ser llamados entre GetResource y
ReleaseResource. La restriccin C5 es un tipo de T1, puesto que dice que GetResource ser
seguido por ReleaseResource para la terminacin normal. La gramtica libre de contexto
correspondiente para un idioma que satisface tanto la T1 y T3 es como se indica:

S como b | abS | CCC | xS | S | ,x { / a, b}

S yS | S | ,y { / c,a,b}

S como b | abS | S ab

Para el caso de C2 y C5, podemos considerar a = b = ReleaseResource GetResource, y c


{TerminateTask, ChainTask, programacin,WaitEvent}. De acuerdo a la gramtica, debe
llamarse ReleaseResource si se llama GetResource (C5) y sin llamadas a, ChainTask
TerminateTask, programar y WaitEvent son permitidos entre las llamadas y
ReleaseResource GetResource (C2).

Llamamos a este conjunto de sistemas prohbe un conjunto exclusivo.

Los autmatas pushdown correspondientes para esta gramtica se muestra en la Fig. La


letra a) del apartado 5 donde s0 es el estado inicial y el estado final. Ignora otras entradas
de a o b, se mueve al estado S1 pulsando 0 para la pila si una es la entrada, y pasa al estado
de error S3 Si b es la entrada. En s1, insumos distintos de a, b, c son ignorados, pero se
mueve empujando a s2 1 a la pila si una es la entrada y la parte superior de la pila es 0, se
mueve hacia atrs hacia el s0 Extraccin de la pila si la entrada es superior b y parte
superior de la pila es 0, y se traslada a s3 si c es la entrada. En s2, empuja a la pila 1 si la
entrada es una, se quita la parte superior de la pila si la entrada es b y parte superior de la
pila es 1, vuelve a s0 si la entrada es b y parte superior de la pila es 0, y se traslada a s3 si la
entrada es c. Tomamos nota de que esas c puede ser ampliado a un conjunto C, un conjunto
exclusivo, lo que significa que cualquier entrada que pertenece a C produce transiciones de
s1, S2 a S3.

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.

Definicin 14 (modelo de entorno de nivel de sistema). Vamos a = {Ai} ser autmatas de


restriccin sobre y {Li} el conjunto de idiomasaceptados por cada Ai A. Un modelo de
entorno de nivel de sistema a travs de , Es () = i li , es un idioma aceptado por i {Ai}.

Fig. 6 se muestra un ejemplo de un modelo de entorno de nivel de sistema que consta de


tres autmatas restriccin en paralelo, donde cada autmata es en la categora de T1 T3 y
x, y y c en la gramtica se diferencian mediante los prefijos T , R y E. El autmata para
tarea tiene un aspecto ligeramente diferente debido a su exclusiva est vaca.

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.

5.2. Generacin de la secuencia de prueba para pruebas de nivel de sistema de guiado


aunque un nmero infinito de secuencias de test puede ser generado a partir del modelo del
entorno, nuestro enfoque limita el nmero mediante la definicin de una poltica de prueba;
la prueba actual poltica pretende (1) generar al menos una secuencia de prueba para cada
ruta desde el estado inicial al estado final (comportamiento legal), (2) generar al menos una
secuencia de prueba para cada ruta desde el estado inicial al estado de error, sin considerar
los bucles (comportamiento ilegal), y (3) con cada llamada del sistema como una entrada de
prueba al menos una vez generado en el conjunto de secuencias de test.

Definicin 15 (secuencia de prueba y prueba de ruta). Supongamos que hay n autmatas


restriccin Ai = (si ,, , Is 0, IS F ), para i=1..n en el modelo del entorno, donde la IS es el
conjunto de miembros de Ai , si 0 es la inicial, y si F es el estado final del autmata Ai

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.

16 Definicin de tartamudez y proyeccin (equivalencia).

1. Una proyeccin de una ruta de prueba p = p0 ... pl a una restriccin autmata Ai , p | Ai =


(P0 | ai )(p1 | ai )...(pl | ai ) es una secuencia de estados en Ai , donde pk | ai es una
proyeccin del vector de estado pk en los miembros de Ai.

2. Dejar p | Ai = a0a1 ...al, una secuencia finita de estados de Ai de longitud l. Definimos la


simple huella de p | Ai , denota p | Ai = b0b1 ... bm, como una secuencia de estados de Ai
de longitud m l que cumpla las siguientes condiciones:

(a) i {0,...,m - 1}, Bi Bi = 1.


(b) existe una secuencia ascendente de los ndices k0, K1,...,km tal que a0a1 ...al =
AK0 ,...,AK1 ,...,AK2 ,...,akm , donde ak0 = b0, akm = bm y j {ki ki,1 - 1}, una j = bi .

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.

Definimos estrategias de generacin de la secuencia de prueba utilizando estas


definiciones:

Definicin 17 (estrategia de generacin de secuencia de la prueba). Un conjunto de


secuencias de test T generados a partir de un modelo de entorno debe

Cumplir las siguientes condiciones:

1. Cobertura de la ruta (sin repeticin) para cada autmata:

(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.

Definicin 18. Dado un conjunto de funciones de nivel de sistema y un conjunto de


funciones de nivel de mdulo , digamos que M : SUBSEQ () es una funcin que
asigna cada nombre de funcin a nivel del sistema a una secuencia finita de nombres de
funciones en el nivel de mdulo.

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 conjunto de herramientas est implementado en Java, C , y parcialmente en C para el


entorno de generacin para CBMC. Fig. 7 y la Fig. 8

Mostrar descripciones de los procesos y relaciones entre los mdulos.

6.1. Un mdulo de cdigos basados en propiedad dividida

La parte izquierda de la Fig. 7 se muestra la estructura del mdulo de cdigo basada en la


propiedad de cortar. Entre el cdigo procesal slicing incluye submdulos de CFG
construccin, puntero, unidad de anlisis rebanado, DownCall rebanado, llamada
ascendente trocear, cortar en rodajas y global.

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.

También podría gustarte