GENERACIÓN AUTOMÁTICA DE CASOS DE PRUEBA
MEDIANTE MODELOS DE LENGUAJE (LLM)
AUTOMATIC TEST CASE GENERATION USING LARGE
LANGUAGE MODELS (LLM)
TRABAJO FIN DE GRADO
CURSO 2023-2024
AUTORES
ISMAEL BARAHONA CÁNOVAS
GONZALO CONTRERAS GORDO
DIRECTOR
JOSÉ IGNACIO REQUENO JARABO
MARÍA ELENA GÓMEZ MARTÍNEZ
GRADO EN INGENIERÍA INFORMÁTICA
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
GENERACIÓN AUTOMÁTICA DE CASOS DE PRUEBA
MEDIANTE MODELOS DE LENGUAJE (LLM)
AUTOMATIC TEST CASE GENERATION USING LARGE
LANGUAGE MODELS (LLM)
TRABAJO DE FIN DE GRADO EN INGENIERÍA INFORMÁTICA
AUTORES
ISMAEL BARAHONA CÁNOVAS
GONZALO CONTRERAS GORDO
DIRECTOR
JOSÉ IGNACIO REQUENO JARABO
MARÍA ELENA GÓMEZ MARTÍNEZ
CONVOCATORIA: JUNIO 2024
GRADO EN INGENIERÍA INFORMÁTICA
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
27 DE MAYO DE 2024
Dedica o ia
Ismael Ba ahona Cáno as
A mis pad es, José Ma ía y Ma ilde po da me odo lo necesa io como pe sona y como
hijo pa a log a odas mis me as y obje i os, así como a mi he mano Daniel sin el cual
nada se ía igual.
A mis amigos y se es que idos que es u ie on a mi lado, b indándome ánimo y
comp ensión en odo momen o. Su apoyo ue undamen al pa a supe a obs áculos y
man ene me en ocado. Además de ayuda a e adi algunos de los nume osos
obs áculos que iene la ida uni e si a ia.
Des acando a las amis ades que he conseguido en la acul ad como Gonzalo
Con e as, Pablo Lozano y Pablo Pezo que son los pila es que me han sopo ado odos
los días desde p ime año.
No se me ol ida des aca la ase que me han epe ido en mi amilia: la ca e a
uni e si a ia es como su nomb e indica una ca e a, lo impo an e es acaba la.
Gonzalo Con e as Go do
Dedico es e abajo a mis pad es Leand o y Ana Rosa, y a mi he mana I ene, que me
han apoyado, aconsejado y mo i ado oda mi ida pa a pe segui mis obje i os y no
endi me po consegui los, así como po el ca iño cons an e que me demues an día a
día.
A mis amigos de siemp e, Lau a, Juan y Da id que me acompañan en odo momen o,
sea bueno o malo, y que siemp e me animan a da lo mejo de mí.
Y a odos mis compañe os y amigos que he hecho a lo la go de mi es ancia en la
acul ad, que han sido unos he manos de a mas excelen es pa a en en a se al e o
que supone la uni e sidad. Des acando a Ismael, Pablo L., Pablo P. y Ma ía que aho a
o man una pa e impo an e de mi ida, algo po lo que es oy muy ag adecido.
Ag adecimien os
Ag adece a Ma ía Elena Gómez Ma ínez y José Ignacio Requeno Ja abo pues han sido
los mejo es u o es que hemos podido ene , p opo cionándonos ayuda en odo
momen o, así como ag adece la ayuda y mejo a p opo cionada po Lukas Sebas ian
Ho mann en el desa ollo de es e p oyec o.
Resumen
GENERACIÓN AUTOMÁTICA DE CASOS DE PRUEBA MEDIANTE MODELOS DE LENGUAJE (LLM)
Es e abajo de in de g ado iene po obje i o la gene ación de casos de p ueba de
o ma au omá ica, empleando modelos de lenguaje. Los casos de p ueba deben
espe a el c i e io de cobe u a mé ica MC/DC (Condición Modi icada/Cobe u a de
Decisión), una subclase de cobe u a de código pa a bloques condicionales i - hen-
else.
Es a es uc u a ex iende la cobe u a de decisión y condición, exigiendo que cada
condición debe a ec a independien emen e en la decisión, es deci que enseña cómo
odas las en adas dadas a ec an de o ma independien e a la salida de una exp esión
lógica.
Es e TFG ex iende abajos an e io es. Conc e amen e, se ha ac ualizado y
empaque ado un mo o heu ís ico p eexis en e pa a la gene ación de casos de p ueba
con o me al c i e io MC/DC en una biblio eca de Py hon. Pos e io men e se ha añadido
a esa biblio eca un segundo gene ado de casos de p ueba pa a el c i e io MC/DC
basado en un modelo de lenguaje. Po úl imo, se ha in eg ado la biblio eca de
gene ación de casos de p ueba en un plugin pa a el en o no de desa ollo Visual S udio
Code pa a acili a su uso po pa e de los p og amado es. La he amien a pe mi e
gene a casos de p ueba pa a maximiza la cobe u a MC/DC de un código en Py hon.
G acias a su modula idad, es a he amien a se pod á ex ende en el u u o pa a sopo a
o os lenguajes de p og amación y c i e ios de cobe u a.
Palab as cla e
MC/DC, casos de p ueba, au oma ización, LLM, exp esión booleana, cobe u a de
decisión, cobe u a de condición, Visual S udio Code, ex ensión, in eligencia a i icial
ÍNDICE DE TABLAS
Tabla 1: Tabla de e dad ...........................................................................................14
Tabla 2: Ejemplo MC/DC ............................................................................................14
Tabla 3: Compa ación de pla a o mas ....................................................................21
Tabla 4: Compa ación de salidas de los gene ado es ...........................................45
1
1
Capí ulo 1 - In oducción
1.1 Mo i ación
Ac ualmen e, en el mundo del desa ollo de so wa e, exis e una g an di e sidad
de p og amas cada ez más complejos con un impac o c í ico en la sociedad en caso
de allo (p.ej., piense en el sec o banca io, las comunicaciones o el anspo e). Po
an o, es os sis emas equie en de unos mínimos de calidad y iabilidad pa a ga an iza
su co ec o uncionamien o. La necesidad de desa olla so wa e que cumpla es os
es ánda es ha p o ocado que el es ing de so wa e [1] [2] adquie a una impo ancia
i al en el p oceso de desa ollo de odo p og ama de so wa e.
El obje i o del es ing es encon a y co egi e o es, ga an izando una mayo
calidad del so wa e desa ollado, así como la educción del cos e del man enimien o
de es e asegu ando así la sa is acción de los usua ios. Pa a consegui es e obje i o, la
p incipal he amien a del p obado de so wa e son los es s, que se componen de una
upla de alo es de en ada, así como el alo espe ado de salida.
Es a upla de ( alo es de en ada, salida espe ada) es denominada caso de
p ueba, y es la pa e más impo an e de oda p ueba, pues ienen la unción de pone
a p ueba el código del p og ama en escena ios especí icos pa a pode e alua su
compo amien o en oda clase de si uaciones, desde las más comunes has a las más
complejas. La e ec i idad de es os casos de p ueba eside en su capacidad pa a
encon a allos y así asegu a el co ec o uncionamien o del p og ama en cualquie
si uación.
Es os casos de p ueba se diseñan siguiendo cie os c i e ios de cobe u a, es deci
una se ie de mé icas y en oques pa a medi las pa es que han sido ejecu adas du an e
las p uebas. Es po ello po lo que es os c i e ios deben se e ec i os pa a pode
ga an iza una cobe u a adecuada de odas las pa es del so wa e y así pode
iden i ica de o ma e ec i a allos en el código.
2
El es ue zo y di icul ad en la c eación manual de casos de p ueba han
inc emen ado jun o a la complejidad ac ual de los p og amas, po lo que se ha
con e ido en una a ea a dua que es más p opensa a e o es. Es o p o oca que ealiza
un es ing exhaus i o enga un cos e económico y empo al ele ado po lo que, siendo
conscien es de es e p oblema, se plan ea una solución, la gene ación au omá ica de
casos de p ueba, que p e ende op imiza la impo an e a ea que es el es ing de
so wa e, agilizando el p oceso de la c eación de los casos de p ueba, así como
aumen a su calidad.
En es e TFG explo amos la gene ación au omá ica de los casos de p ueba
median e el uso de Modelos de Lenguaje (LLM, La ge Language Models) [3] bajo el
c i e io de cobe u a MC/DC [4], un ipo especial de cobe u a de sal o (b anch
co e age en inglés).
Es e c i e io de cobe u a es u ilizado en es ánda es indus iales (sec o
ae oespacial, es ánda DO-178C [5], y au omo ilís ico, es ánda ISO 26262 [6]) pa a
ga an iza la iabilidad y segu idad de los p oduc os so wa e implemen ados en el
sec o ae oespacial y au omo ilís ico espec i amen e. Es os es ánda es abo dan desde
los p ocesos de desa ollo de so wa e has a la ges ión de la calidad y la segu idad de
es e. Los allos se clasi ican según su se e idad pe mi iendo así una p io ización de es os
en los es s pa a alcanza la mayo iabilidad y segu idad posible.
A la ho a de ejecu a los es s, el uso del c i e io de cobe u a MC/DC ga an iza
una mayo sensibilidad a la cobe u a de amas. Además de ello, los conjun os de es s
que sa is acen el c i e io MC/DC son mucho más educidos que aquellos que cumplen
con el c i e io de cobe u a de amas. Es po ello po lo que el iempo que lle a ejecu a
las p uebas se educe d ás icamen e a la pa que aumen a su e ec i idad. Sin emba go,
consegui un conjun o mínimo (óp imo) de es s que sa is aga el c i e io MC/DC es
cos oso y di ícil, po lo que no malmen e se log an ap oximaciones.
Pa a sol en a es a limi ación, se ha p opues o una heu ís ica que ap oxime la
gene ación de es s con el c i e io MC/DC median e la ayuda de pla a o mas LLM.
3
Con es o se o ece una o ma sencilla de gene ación de casos de p ueba
e ec i os con el obje i o de op imiza el p oceso de es ing de so wa e, aumen a la
calidad del so wa e y hace del es eo de es e una a ea menos cos osa en é minos
empo ales y económicos.
1.2 Obje i os
El p incipal obje i o de es e T abajo de Fin de G ado, es la gene ación
au omá ica de casos de p ueba median e modelos de lenguaje. Pa a log a el co ec o
desenlace de es e obje i o se debe cumpli con una se ie de obje i os especí icos:
● Adquisición de conocimien os y di e en es ecu sos de in o mación sob e el
c i e io de cobe u a MC/DC, pa a pode en ende has a qué pun o nues o
desa ollo au omá ico ha sido posi i o o nega i o.
● Ac ualización y mejo a de una he amien a heu ís ica p eexis en e pa a la
gene ación de casos de p ueba que sa is agan los c i e ios MC/DC.
● Implemen ación de una ex ensión/módulo en VS Code pa a la gene ación
au omá ica de casos de p ueba a a és de la conexión con un LLM.
● Implemen ación de un plugin pa a un en o no de desa ollo (IDE) que acili e el
uso de la he amien a de gene ación de casos de p ueba po usua ios no
expe os y encapsule los dos mo o es de gene ación de casos de p ueba
p e iamen e mencionados (gene ado es median e de casos de p ueba
median e un LLM y gene ado de casos de p ueba median e la he amien a
heu ís ica p eexis en e). En pa icula , se ha escogido el edi o de código VS Code
como IDE donde hospeda el plugin.
● Compa ación de salidas de ambos gene ado es de casos de p ueba con
elación al c i e io MC/DC pa a e la calidad de nues a gene ación au omá ica
median e LLM.
Con es e conjun o de obje i os lle ados a cabo de o ma co ec a se pod á
llega a asegu a que el obje i o p incipal ha sido cumplido.
4
1.3 Plan de abajo
Pa a el desa ollo del abajo se emplea á una me odología híb ida denominada
Sc umban, la cual combina elemen os de la me odología Sc um en ocándonos en la
en ega de a ances en ciclos co os po eso usa emos la página Ji a So wa e [7]
(Ilus ación 1), en la cual se c ea á una es uc u a di idida en sp in s y la me odología
Kanban dado que en dicha página podemos obse a un able o con el es ado de las
a eas y el p opio lujo del desa ollo.
Desa ollando el apa ado de la es uc u a de abajo es a á di idida en dis in os
sp in s, los cuales desde el inicio se es ablece án en una du ación básica de una
semana, siendo es e pe iodo adap able po la can idad de a eas/ abajo a ealiza .
T as es e iempo se ealiza án euniones con los u o es en es as euniones se mos a á el
a ance ealizado y se da án po inalizados los sp in s y se inicia á el siguien e.
La can idad de abajo en cada sp in se ep esen a á a a és de a eas
ag upadas po clases (Ilus ación 2 y 3), es as pod án se c eadas po los u o es o po los
es udian es. Es as a eas se pod án i mo iendo en e cinco es ados:
● Po hace
● En p og eso
● En e isión
● En pausa
● Hecho
Es os pe mi en indica si se pueden da po ce adas al e mina el sp in o deben segui
abie as pa a el siguien e.
1.3.1 Fases del p oyec o
Pa a el desa ollo de es e abajo, se ha seguido una se ie de ases que han
pe mi ido p ocede de mane a o denada, asegu ando que no se sal a an concep os o
acciones cla e.
1.3.1.1 P ime a ase: In es igación y oma de conocimien os
5
Se comienza el p oyec o buscando dis in as uen es de in o mación pa a ene
cla os los concep os básicos y ob ene in o mación sob e el é mino no edoso pa a
noso os que apa ece en es e abajo, como es el c i e io de cobe u a MC/DC.
También se ha enido que hace un epaso del lenguaje empleado en el código
de la he amien a heu ís ica p eexis en e, Py hon [8]. Es e lenguaje se u iliza pa a la
gene ación de casos de p ueba a a és del plugin heu ís ico, po lo que se debe
desa olla conocimien o pa a así pode in e ac ua con el código p opo cionado.
A su ez, el plugin en Visual S udio ecibi á código uen e (condicionales i - hen-
else de Py hon) y gene a á casos de p ueba que sa is agan el c i e io MC/DC. Po úl imo,
se es udian o os lenguajes de p og amación y ecnologías necesa ios pa a el desa ollo
del plugin en VS y las opciones de conexión con los modelos de lenguaje. Un ejemplo
de es os lenguajes de p og amación es Typesc ip [9] [10] con el cual ealizamos la
ex ensión que end á la posibilidad de emplea los dos mé odos de gene ación.
Con es o las p ime as semanas se án ocupadas po es as p ime as pa es de
búsqueda de in o mación.
1.3.1.2 Segunda ase: P epa ación del en o no de abajo de la he amien a
p eexis en e
Pa a la ase de ins alación y adap ación al en o no de p og amación, se comienza
ins alando e in en ando ejecu a un ejemplo básico del gene ado con la heu ís ica
p eexis en e. Pa a es o se emplea WSL [11], siendo es a una he amien a o ca ac e ís ica
de Windows que pe mi e a los usua ios ejecu a un en o no de Linux den o de Windows
y así pode ejecu a de o ma más cómoda el código.
1.3.1.3 Te ce a ase: Empaque ado y ac ualización de la biblio eca p e ia pa a la
gene ación de casos de p ueba
Una ez con odo disponible se pone en ma cha el empaque ado y ac ualización del
código de una he amien a de gene ación de casos de p ueba que se p opo ciona. La
biblio eca gene a casos de p ueba median e heu ís icas con encionales, ajenas a las
écnicas basadas en LLM. Jun o con los mo o es basados en LLM, o ma á pa e del
6
plugin inal ealizado en VS Code pa a la gene ación au omá ica de casos de p ueba.
La biblio eca se i á como pun o de compa ación de la calidad de los casos de p ueba
gene ados po el LLM, pa a un mismo p oblema de cobe u a.
Empieza la edacción de es a memo ia pa a no ene ningún p oblema a u u o,
comenzando el capí ulo 1 y los apa ados p e ios como esumen, palab as cla e y
mo i ación.
En el código comenzamos con la elabo ación de una co ec a es uc u a di idiendo los
di e en es a chi os en lib e ías.
1.3.1.4 Cua a ase: Implemen ación de ex ensión empleando la conexión a un
LLM
Se con inua con la elabo ación de una ex ensión, con la cual se ecogen las espues as
gene adas po un LLM, a a és de es e desa ollo se busca pedi a la in eligencia
a i icial que gene e casos de p ueba pa a una exp esión dada. Es a implemen ación
es u o plan eada en dos en o nos uno e a Jupy e No ebooks y el o o VS Code, as
a ias semanas de p uebas se decidió implemen a a a és de VS Code.
La ex ensión comenzó siendo di idida en dos pa es una di igida hacia la gene ación
median e el uso de lib e ías y o a median e el uso de la conexión con un LLM. La
implemen ación de la pa e po lib e ía ue complicada, pe o a pa i de aplica le cie o
pe iodo de iempo se log ó a anza de mane a posi i a. Po su pa e la implemen ación
median e LLM lle o un la go iempo pues o que e a un en o no nue o y poco explo ado,
pe o se pudo log a en el iempo es ipulado pa a ene las dos pa es lis as.
T as ene las p ime as e siones de es as ex ensiones se unie on en una sola,
consiguiendo así pode ejecu a a a és de un menú con ex ual.
C eando con es o el capí ulo 3 de es a memo ia.
1.3.1.5 Quin a ase: Compa ación de salidas de los gene ado es
Con la ex ensión implemen ada de mane a co ec a se comienza a hace
compa aciones de salidas en e los dos mé odos de gene ación. Obse ando las salidas
7
gene adas po el LLM nos damos cuen a de que puede que se necesi e comp oba de
mane a p ecisa si cumplen los c i e ios de MC/DC.
1.3.1.6 Sex a ase: Redacción de la memo ia y mejo a de comp ensión de la
ex ensión de LLM
Es a ase se cen a en edac a a ios de los apa ados de la memo ia p esen es en el
capí ulo 1 y 2, así como en desa olla una compa ación de allada en e las salidas de
los gene ado es
1.3.1.7 Sép ima ase: A ance de la memo ia y mejo a de elemen os del código
En es a ase se con inúa desa ollando apa ados de la memo ia, así como ealizando
las co ecciones necesa ias. Aplicando mejo as en el eposi o io de Gi Hub [12] pa a
acili a su comp ensión. Además, se c ea un a chi o READ.ME aco de con el código de
la ex ensión, abo dando odos los elemen os impo an es, como dependencias,
mé odo de ejecución, con ex o y ejemplos de ejecución.
1.3.1.8 Fase Final: Función de comp obación y inalización de la memo ia
En es a ase se ha implemen ado y pe eccionado la unción de comp obación con la
cual se e i ica la co ec a gene ación de los casos de p ueba median e el LLM y se
comple a la edacción de la memo ia con los úl imos apa ados siendo es os el capí ulo
4 y el capí ulo 5, además de comple a los elemen os es an es como ci as e índices.
14
● Pa a la exp esión ellenamos con la solución que da con el alo indicado
a cada a iable.
● Pa a la columna MC/DC pa ejas, amos a ija las a iables en un caso
menos una, la cual amos a modi ica a su alo opues o pa a e si así se
al e a la salida de la exp esión. En caso de a ia lo dejamos indicado, así
conseguimos las pa ejas que indican que dos ilas son las que se han
compa ado, en es e caso A iene 3 pa ejas.
Tabla 1: Tabla de e dad
N
A
B
C
A o (B and
C)
MC/DC
pa ejas
1
0
0
0
0
2
0
0
1
0
A (2,6)
3
0
1
0
0
A (3,7)
4
0
1
1
0
A (4,8)
5
1
0
0
0
B (5,7)
6
1
0
1
1
C (5,6)
7
1
1
0
1
8
1
1
1
1
Como eque imos de n+1 MC/DC pa ejas siendo n el núme o de a iables p esen es en
la exp esión. En es e ejemplo n=3, po lo an o, necesi amos 4 pa ejas pa a ello
oma emos solo una pa eja de A y su exp esión modi icando el alo de A al in e so pa a
o ma nues o mínimo conjun o (Tabla 2).
Tabla 2: Ejemplo MC/DC
N
A
B
C
A o (B and
C)
MC/DC
pai s
0
1
0
0
1
1
0
1
A (3,7)
15
1
0
0
0
B (5,7)
1
0
1
1
C (5,6)
Po lo an o, nues o esul ado se ía el o mado po es as en adas:
● A, no B, C
● no A, no B, C
● no A, B, C
● no A, B, no C
Es a demos ación ambién puede se ep esen ada pa a exp esiones de alo en e o,
usando el caso de la solución de la exp esión A o (B and C) se puede gene aliza pa a
A>10 o (B <10 and C>9).
● La ge Language Models (LLMs): son modelos de in eligencia a i icial en enados
pa a en ende y gene a lenguaje na u al. Es os modelos son capaces de
ap ende pa ones complejos en da os de ex o y ealiza a eas como
aducción, gene ación de ex o cohe en e, imágenes, e c. Es os modelos
pueden además se en enados pa a a eas más especí icas lo que los uel e
muy ú iles pa a a eas de gene ación de odo ipo de con enido en g an
can idad de aplicaciones. Los LLMs más popula es es án disponibles como
se icios web y se pueden accede a ellos median e llamadas a su API. Es deci ,
pe mi en ealiza consul as bajo el pa adigma de “clien e-se ido ”, siendo es a
la o ma que hemos escogido pa a in e ac ua con los LLMs de es e abajo. Exis e
o a opción pa a el uso de LLMs que consis e en desca ga y ejecu a los modelos
localmen e u ilizando con enedo es (Docke ) [15]. Es a al e na i a o ece la
en aja de pode abaja sin depende de conexiones a in e ne y man ene los
da os y modelos en un en o no con olado.
● Mo o heu ís ico PyMCDC: emplea una heu ís ica que p opo ciona en e n+1 y 2n
casos de p ueba que sa is acen el c i e io MC/DC (con n el núme o de a iables
booleanas de la decisión). Codi ica las decisiones (exp esiones booleanas) como
16
un "á bol de decisión bina io". Según el ipo de eco ido del á bol
(Longes MayMe ge, Sho , e c), p opo ciona un conjun o de es cases u o os [16].
2.2. Es ado del a e
En es a sección se e isan algunas he amien as de gene ación de casos de
p ueba que siguen el c i e io de cobe u a MC/DC, así como de las heu ís icas o écnicas
que u ilizan pa a gene a los casos en la ac ualidad.
● Algo i mos de búsqueda basados en mé odos o aces y me aheu ís icas:
Se ex aen caminos del g a o de lujo del p og ama pa a después gene a
los da os de es que cumplan con las condiciones necesa ias usando un sol e
SMT (Teo ías de sa is ac ibilidad módulo) [17] y, pos e io men e, se educe el
conjun o de p uebas con un mé odo o az pa a consegui así la cobe u a
MC/DC. Sin emba go, se pie de mucho es ue zo compu acional ya que un
núme o ele ado de caminos escogidos llegan a se in iables.
● SAT Sol e :
Se hace uso de un SAT sol e [18] pa a cons ui conjun os de p ueba
mínimos. Es o se ealiza en una única consul a en la que se codi ica el c i e io
MC/DC, y el sol e p oduce una asignación adecuada de los alo es de en ada
de los casos de p ueba si es que exis e alguna. Sin emba go, en ocasiones puede
lle a a e o es imeou debido a la exhaus i idad de las consul as SAT.
● G a os n-cubo y código G ay:
Toma una exp esión booleana como en ada, cons uye el g a o n-cubo
[19] y deduce los casos de p ueba de los é ices del g a o. La selección de casos
se basa en el peso de cada caso de p ueba. Su mayo incon enien e es que el
conjun o de p uebas no es mínimo.
● Análisis sin ác ico y semán ico de los eque imien os uncionales a a és de GIC:
Se p opone una pla a o ma que p ime o analiza los eque imien os uncionales,
a pa i de ellos, gene a los casos de p ueba. Es a he amien a [20] cons a de un
17
analizado de a chi os, con el que es anda iza el o ma o de esc i u a de los
eque imien os a a és de una g amá ica independien e del con ex o y de un
módulo gene ado que abaja jun o al analizado y que sigue el c i e io MC/DC.
Es e ecibe el á bol sin ác ico gene ado po el analizado y a pa i de ahí
cons uye los conjun os de p uebas.
2.3. En o no de conexiones con LLM
Pa a la gene ación de casos de mane a au omá ica des aca el modelo gp -3.5-
u bo, dado que se a a de un modelo de ex o capaz de en ende y gene a lenguaje
na u al. Las siguien es pla a o mas y he amien as p opo cionan o in eg an esa e sión
de la in eligencia a i icial:
● OpenAI API
● Azu e OpenAI Se ices
● Hugging Face
● Google Cloud Na u al Language API
Todas es as pla a o mas es án accesibles a a és de se icios web, median e
in e aces de p og amación de aplicaciones (API). Cuando los desa ollado es desean
u iliza las capacidades de es as pla a o mas en aplicaciones, deben emplea
solici udes HTTP a a és de la ed, u ilizando las API p opo cionadas.
Como paso p e io al uso de cualquie a de es os mo o es LLM, es necesa io
con igu a una cla e de acceso (API key) (Ilus ación 4).
18
Ilus ación 4: Acción de una API
Las API key son códigos únicos y p i ados empleados pa a au en ica y au o iza
el acceso a una API, ac uando como iden i icado pa a desa ollado es. Pa a ob ene
es as lla es debes accede a los si ios web de cada aplicación, dado que se emplean
en cada solici ud que hacemos hacia la API.
2.3.1. OpenAI API
La emp esa OpenAI [21] [22] ha sido conocida po sus a ances signi ica i os en
IA, así como po su comp omiso con la anspa encia y la segu idad en el desa ollo de
ecnologías de in eligencia a i icial. Es la en idad po excelencia debido a sus a ances
en los modelos de lenguaje, como el empleado en es e TFG el GPT (Gene a i e P e-
ained T ans o me ), es e pe mi e a los desa ollado es gene a ex o, ealiza
aducciones, esponde p egun as.
Es e ecu so es muy común po lo an o exis en a ios en o nos con in o mación
p ecisa de cómo ac ua de ca a a la conexión con la API, como la p opia página del
p oduc o la cual iene odo el lujo de de alles, pe o a pesa de es o suelen su gi di e sos
e o es.
19
● Cla e de API inco ec a, cuando la cla e de acceso que empleas no es á
co ec amen e con igu ada o no iene los pe misos necesa ios pa a accede al
se icio en línea.
● La URL inco ec a, al indica el endpoin de u conexión al se icio en línea es e
no es el co ec o, en es e caso se debe asegu a que endpoin son los co ec os
pa a cada modelo que deseas u iliza . Dos ejemplos de endpoin son los
empleados po :
○ Los nue os modelos c eados a pa i del 2023: gp -4, gp -4- u bo-p e iew,
gp -3.5- u bo, los cuales emplean como endpoin
h ps://api.openai.com/ 1/cha /comple ions
○ Los modelos ac ualizados de legado (2023): gp -3.5- u bo-ins uc ,
babbage-002, da inci-002, los cuales emplean como endpoin
h ps://api.openai.com/ 1/comple ions
● P oblemas de au o ización, al in en a accede a se icios los cuales no ienes
pe misos aplicados desde u cuen a.
● Lími es de solici ud excedidos, indica que se ha supe ado el núme o pe mi ido de
solici udes den o de un pe íodo de iempo especí ico. Es e lími e puede se
impues o po el p o eedo del se icio al que se es á in en ando accede .
2.3.2. Azu e OpenAI Se ices
Azu e [23] es una pla a o ma en la nube, a a és de la cual podemos abaja
con la in eligencia a i icial, p opo cionada po Mic oso o ece una amplia gama de
se icios de compu ación, almacenamien o, bases de da os, análisis, edes, in eligencia
a i icial y más. Es os se icios se pueden u iliza pa a cons ui , implemen a y adminis a
aplicaciones y se icios de mane a e icien e y escalable, sin necesidad de in e i en
in aes uc u a ísica.
Pa a pode emplea es a in aes uc u a debes ene una susc ipción, en es e
caso, hemos empleado la cuen a de co eo de la Uni e sidad Complu ense de Mad id
pa a ene una de ipo es udian es.
20
El acceso a la pa e de OpenAI es muy solici ado, po eso pa a ob ene acceso
a los elemen os se debe ellena un o mula io [24] y espe a la espues a del equipo
enca gado.
T as ecibi el acceso al en o no de IA, debes ealiza dis in os pasos siendo es os
c ea un ecu so con el nomb e que quie as y ellena odos los da os que e solici en en
la página. Con el ecu so c eado, an es de que puedas gene a ex o o in e encia,
necesi as implemen a un modelo. Con es e modelo c eado y inculado al ecu so ya
pod ás accede a los da os pe sonales como el API (Applica ion P o ocol In e ace) keys
y el endpoin pa a log a las conexiones de u API.
2.3.3. Hugging Face
Hugging Face [25] es una pla a o ma que p opo ciona acceso a una amplia
gama de modelos de lenguaje, incluidos modelos de código abie o y modelos
desa ollados po la comunidad. O ece una API pa a in e ac ua con es os modelos, lo
que pe mi e a los desa ollado es u iliza los pa a a eas de p ocesamien o del lenguaje
na u al.
2.3.4. Google Cloud Na u al Language API
Google Cloud [26] o ece una API de p ocesamien o del lenguaje na u al que
p opo ciona capacidades de análisis de sen imien os, ex acción de en idades,
clasi icación de con enido y más. Aunque no es especí icamen e un modelo de
lenguaje gene a i o como GPT-3, puede se ú il pa a muchas a eas de p ocesamien o
del lenguaje na u al.
2.3.5. Compa ación de pla a o mas de conexión con LLM
Pa a ilus a de mane a cla a las di e encias en los campos más ele an es de las
pla a o mas se p esen an los da os en o ma o abla, en la cual des acan la calidad del
modelo, uncionalidades, acilidades de uso e in eg ación, cos o, escalabilidad y
sopo e y documen ación (Tabla 3).
21
Tabla 3: Compa ación de pla a o mas
Pla a o ma
Calidad
del modelo
Funciona-
lidades
Facilidad
de uso e
in eg ación
Cos o
Escalabi-
lidad
Sopo e y
documen-
ación
OpenAI
API
Al a
calidad,
des acan
po
gene a
ex o
cohe en e
y
ele an e
Amplia
gama,
des acan
do
gene ació
n de
ex o,
aducció
n y análisis
de
sen imien
os
Fácil y
con una
documen
ación
cla a y
ejemplos
Puede se
cos oso
pa a
aplicacio
nes de
al o
olumen
Al amen e
escalable,
puede
maneja
g andes
can idad
es de
solici udes
Documen
ación
de allada
y sopo e
écnico
Azu e
OpenAI
Se ices
Calidad
decen e,
pe o no
an
a anzado
s como
OpenAI
Iguales
que
OpenAI
Sencilla
con
Mic oso
Azu e,
con
documen
ación y
ejemplos
disponible
s
Depende
del uso y
los
se icios
empleado
s, pe o
puede se
compe i i
o
Escalable
y puede
adap a se
Documen
ación
comple a
y sopo e
écnico
de
Mic oso
Hugging
Face
Dependie
n e del
modelo
seleccion
ado, en
gene al
una
buena
calidad
Amplia
a iedad
de
modelos
pa a el
p ocesami
en o de
lenguaje
na u al,
pueden
eque i
con igu a
ción
adicional
Requie e
cie o
ni el de
écnica
pa a
ap o ech
a la al
máximo,
comunida
d ac i a y
ecu sos
disponible
s
Fo ma
g a ui a
Escalabilid
ad
limi ada
Documen
ación
ex ensa y
comunida
d ac i a
Google
Calidad
Amplia
Rela i am
Puede se
Al amen e
Documen
22
Pla a o ma
Calidad
del modelo
Funciona-
lidades
Facilidad
de uso e
in eg ación
Cos o
Escalabi-
lidad
Sopo e y
documen-
ación
Cloud
Na u al
Language
API
azonable,
pe o más
limi ada
que
OpenAI
gama,
des acan
do análisis
de
sen imien
os,
ex acció
n de
en idades
y análisis
sin ác ico
en e
sencilla
con o os
se icios
de
Google
Cloud,
documen
ación y
ejemplos
de ayuda
al o pa a
aplicacio
nes de
olumen
al o, pe o
iene
p ecios
lexibles
escalable
y puede
maneja
g andes
can idad
es de
solici udes
ación
comple a
y sopo e
écnico
de
Google
Cloud
Des aca
en cada
apa ado
OpenAI
API
OpenAI
API
Azu e
OpenAI
Se ices
Hugging
Face
OpenAI
API
Azu e
OpenAI
Se ices
La conexión a un LLM en es e abajo ha sido implemen ada desde VS Code, a
a és de la pla a o ma de Azu e OpenAI Se ices. Es a pla a o ma p opo ciona una
documen ación bien de allada con indicaciones paso a paso de cómo consegui la
co ec a conexión, así como un mé odo de comunicación con el en o no de la
pla a o ma a a és del cual pode manda cualquie ipo de p oblema.
El hecho de no emplea OpenAI API ue ob ene a ios e o es que no ue on
capaces de soluciona . El no uso de Hugging Face se debe a la di icul ad de ca a a
emplea su en o no web y busca el modelo que se adap e a nues as especi icaciones
buscadas y eque idas. En el caso de la pla a o ma de Google se demanda demasiada
in o mación poco opo una pa a pode accede .
Po lo an o, el en o no de conec a se a los LLMs desde aplicaciones de desa ollo
p opio se encuen a en un pun o posi i o con a ios mé odos y accesos desde di e en es
pla a o mas que apoyan a desa ollado es pa a pode expandi los dis in os pun os, así
como documen os y webs que e p opo cionan los pasos o denados que se deben de
segui pa a la co ec a implemen ación.
23
Capí ulo 3 - Desc ipción del plugin pa a la
gene ación de casos de p ueba
El desa ollo del plugin se ha lle ado a cabo en VS Code dado que es e edi o de
código pe mi e ácilmen e la c eación de una es uc u a básica de ex ensión, de
mane a au omá ica. Además, es uno de los edi o es que hemos empleado du an e el
anscu so de la ca e a uni e si a ia y con un g an núme o de usua ios a ni el mundial.
Es compa ible con mul i ud de lenguajes de p og amación, como Py hon o C++, en e
o os, y cuen a con sopo e po pa e de una g an comunidad de usua ios y
desa ollado es.
La ex ensión implemen ada se di ide en es ases. En p ime luga , ac ualizamos
un gene ado heu ís ico de casos de p ueba p eexis en e c eando un mé odo pa a
ejecu a es e gene ado de o ma sencilla y con una can idad mínima de pasos. En
segundo luga , explo amos la conexión y consul a con a ios LLM pa a la gene ación de
casos de p ueba. Po úl imo, empaque amos los dos mo o es de gene ación de casos
de p ueba en un único plugin de VS Code pa a acili a su uso po pa e de
desa ollado es de so wa e. En las siguien es secciones e emos las dependencias y
lib e ías necesa ias pa a el uncionamien o, así como el p oceso de desa ollo del plugin.
3.1 A qui ec u a del plugin
El plugin desa ollado iene dos cla os componen es que son los dos mo o es, el
mo o median e el uso del LLM con el cual enemos el obje i o de conec a nos con un
LLM median e el uso de API REST y el mo o PyMCDC el cual empleamos con el uso de
comandos en consola (Ilus ación 5). Pa a es a a qui ec u a debemos des aca los
siguien es componen es p incipales (Ilus ación 6) comenzando po las dependencias,
una in e az de con igu ación empleando un a chi o .json en el cual es a án p esen es
los pa áme os necesa ios pa a con igu a el en o no an o de la pa e PyMCDC como
del LLM ya que gua damos en es e a chi o los dos elemen os que deben se más
pe sonales como el endpoin y la API key, p epa ación del en o no en es e componen e
buscamos c ea y con igu a el e minal así como la ac i ación del pyen , la gene ación
30
3.5.1 Gene ación de casos de p ueba median e LLM: e sión 1.0
En cuan o a lo elacionado con gene ación a a és de LLMs comenzamos con
la pa e de conexión la cual nos esul ó complicada, pues no conseguimos una
conexión iable haciéndolo di ec amen e con el se icio o ecido po OpenAI API, po
lo que buscamos o as opciones. P obamos con Dialog Flow y Hugging Face pe o no
nos esul ó cómodo al no domina las he amien as en cues ión.
Te minamos encon ando la pla a o ma Azu e con la cual a a és de sus OpenAI
se ices log amos ecibi espues as de un LLM [36].
Las p ime as líneas de código elacionadas con es e apa ado son las
dependencias del código que en es e caso son las lib e ías OpenAIClien y
Azu eKeyC eden ial siendo es a p ime a la enca gada de pe mi i nos in e ac ua con el
se icio de Azu e OpenAi pe mi iendo manda solici udes al se icio pa a gene a las
espues as que que emos y la segunda pa a maneja los se icios de c edenciales de
Azu e. Empleamos un a chi o con e minación .en que es especialmen e ú il pa a
maneja de mane a segu a las con igu aciones que pueden a ia en e di e en es
en o nos, en una e sión inal es os da os pasa ían a es a en un a chi o con
con igu ación de a iables de en o no pa a encapsula los dos elemen os de ca ác e
pe sonal del código, siendo es os el pun o de e minación y la API key, p opo cionados
en el pe il del usua io que haya c eado el ecu so y el modelo inculado a él.
La lógica p incipal del código de conexión con un LLM es á o mada po una lis a
de mensajes, la cual es á di idida en dos pa es una se á pa a de ini el con ex o( ol/ ole)
y la o a el con enido(con en ) dónde es a á el mensaje como al que que emos
en ia / ecibi /indica . Seguido de la c eación del clien e empleando la lla e
p opo cionada po Azu e, el deploymen ID se a a del nomb e de la implemen ación
c eada en la página de Azu e OpenAI S udio, pa a pode es ablece conexión con
nues o ecu so llamado es -IA.
La siguien e uncionalidad u iliza nues o modelo de lenguaje pa a gene a
espues as au omá icas basadas en la en ada del usua io. Es a en ada es á o mada
31
po una cadena de ex o que hemos c eado con an e io idad. Con es o conseguido
solo nos al a mos a las espues as.
T as a ias p uebas en o no a las exp esiones booleanas, damos como co ec a
la ex ensión c eada.
3.5.2 Gene ación de casos de p ueba a a és de LLMs: e sión 2.0
Pa a una e sión 2.0 se nos ecomendó añadi una opción al menú con ex ual de
VS Code con la cual ejecu a la con e sación di ec amen e.
Pa a es a idea añadimos un campo con ibu es a nues o package.json, en el cual
end emos dos campos, un campo commands en el cual se da nomb e al comando que
se c ea y un campo menus en el cual se indica qué comando se á el añadido.
Con los comandos y menús de inidos en el package.json p ocedemos a la lógica
del comando en es e caso al ac i a se la ex ensión se egis a el comando y se ac i a
po lo an o a pa i de es e momen o que emos des aca el ex o que se á la exp esión
booleana que se manda a como pa áme o a la con e sación con el cha . Con es a
exp esión es con la que se ejecu a á nues o código de conexión con Azu e.
Es o se á implemen ado en una sola ex ensión jun ándose con la gene ación a
a és de lib e ías.
Además, as e isa la in o mación sob e los oles en el apa ado de mensajes
[37], hemos implemen ado una mejo es uc u a. El p ime ol que hemos e isado es el
ol de sis ema (sys em), que no es obliga o io, pe o con el podemos indica o es ablece
el compo amien o del asis en e en la con e sación. En es e caso buscamos que sea
expe o en la gene ación de casos pa a exp esiones que cumplan el MC/DC , con el
ol de asis en e (assis an ) es el que p opo ciona las espues as a la en ada indicada po
el sis ema y al usua io y lo empleamos pa a in lui en la pos e io espues a del modelo y
el úl imo ol empleado es el de usua io (use ) con el que se p opo ciona la en ada pa a
las inalizaciones del cha en es e caso le mandamos a ios mensajes pa a indica le que
que emos sob e el c i e io MC/DC así como un ejemplo de que o ma o de salida
32
que emos an e una p egun a del mismo ca ác e . El ol de unción ( unc ion) no lo
hemos empleado pues no necesi amos sabe los esul ados de una unción.
También cabe menciona los ipos de p omp s [38] en Cha GPT, siendo es as
he amien as esenciales pa a guia la gene ación de espues as del modelo los cuales
hemos enido que p es a a ención pa a do a los de calidad y una buena cons ucción,
siendo es os empleados en los mensajes gene ados po cada ol an e io men e
mencionados. Siendo los ipos de p omp s más des acados:
● Secuenciales, u ilizando una secuencia de p omp s p e ios pa a ob ene una
espues a de e minada pa a consegui una p og esión lógica, en nues o caso
empleamos di e sos mensajes en iados en ol usua io pa a que el modelo se
adap e al en o no que que emos.
● Es uc u ales, ayudan a o ganiza una espues a del modelo, como en nues o
caso empleamos pa a pedi que la solución es é en o ma o de una lis a de
Py hon.
● A gumen ales, ayuda a que el modelo pueda o ece azones o a gumen os a
a o o en con a, es e ipo de p omp s no es empleado en nues o código.
● Compa a i os, nos ayudan a ob ene espues as más exhaus i as sob e un sec o
o ámbi o p o esional conc e o, es e ipo se emplea con el ol sis ema pa a deja
cla o que se a a de un p o esional de la gene ación de casos base que
cumplan el c i e io deseado.
● Condicionales, ayudan a pone una condición pa a ob ene una espues a sob e
un ema pa a consegui un obje i o conc e o, empleamos de o ma que le
p egun amos si es capaz de da nos el mismo o ma o de salida que le hemos
comen ado cuando el usua io le p egun é po una exp esión booleana.
● Vacíos o huecos, son aquellos inpu s que no con ienen in o mación especí ica o
su icien e pa a guia la gene ación de espues as, pe o es os pueden ayuda nos
a da apo a con ex o p e io, así como noso os empleamos uno pa a asegu a
que nues o modelo conoce los mo i os pa a que una gene ación de casos base
sea co ec a.
33
Pa a una compa ación de iempo en e los gene ado es se c onome a el iempo
desde el inicio de la ejecución (PyMCDC)o con e sación (LLM) has a la de olución de
la solución, incluyendo el iempo necesa io pa a ejecu a los in en os en el caso que el
LLM alla a con el cálculo inicial.
Obse ando las salidas gene adas emos que a pesa de que al LLM se le pide
explíci amen e que esponda únicamen e la espues a deseada, es deci , la lis a en
o ma o JSON con los casos de p ueba. Muchas eces esponde con algo más de ex o,
ya sea una muy b e e in oducción o alguna ano ación. Po ello, y pa a asegu a que
la salida que se mues a al usua io po los mensajes in o ma i os de VS Code, c eamos
una sencilla unción que lee la salida ob enida po la IA y ob iene de ella únicamen e la
lis a con los casos de p ueba.
El siguien e diag ama (Ilus ación 7) mues a los pasos que sigue la ejecución de
es a ex ensión pa a log a la conexión. Comenzando po la ob ención de la API key y el
endpoin sacados de Azu e, a con inuación, se c ea la lis a de mensajes que que emos
en ia al asis en e, di e enciando los es oles que pueden se los mensajes y jun o a es o
el deploymen id ya solo al a ecibi la espues a del asis en e.
34
Ilus ación 7: Ex ensión LLM Ve sión 2.0
3.5.3 Gene ación de casos de p ueba a a és de LLMs: e sión inal
Pa a es a úl ima e sión ya es ando ambas gene aciones en un mismo plugin,
buscamos mejo a aún más la espues a del LLM (Ilus ación 8), dado que en la an e io
e sión no p opo cionan soluciones que conside amos ace adas. A es o se une el
hecho de que no es amos segu os de que las espues as gene adas sean capaces de
cumpli los c i e ios especí icos de la cobe u a de MC/DC que han sido mencionados
an e io men e. Pa a es o hacemos que eciba in o mación de uel a, en caso de se
e ónea la espues a dada, es o se á un messages2 o mado po los mensajes p esen es
en messages unidos con dos mensajes nue os que son has allado en u espues a y o o
mensaje que le manda a el mo i o de su allo.
35
Al se comp obada a a és de un sc ip comp ob.py en el cual se mi a si la
espues a cumple es as dos condiciones:
1) El núme o de casos de p ueba gene ados es á en e n+1 y 2n
2) Toda a iable iene un caso de p ueba pa a cie o y o o pa a also.
Es e sc ip iene cua o salidas posibles, siendo T ue si ambas condiciones
son espe adas, 1 si alla en la p ime a condición, 2 si alla en la segunda
condición y 3 si alla en ambas.
Con es as salidas hacemos al cha gene a o a espues a sabiendo en qué ha
allado pa a así mejo a la salida, limi ando es o a es in en os.
Po lo an o aho a la salida con la lis a de casos solo se mos a á en caso de se co ec a
en o o caso se mos a á un mensaje de gene ando casos y si se llega al lími e de es
in en os ealizados se mos a á un mensaje de lími e alcanzado y no end emos po lo
an o espues a.
36
Ilus ación 8: A qui ec u a inal de la ex ensión LLM
3.6 Desa ollo de la ex ensión pa a gene a au omá icamen e casos
de p ueba a a és de o os mo o es heu ís icos (PyMCDC)
Pa a la pa e de la ex ensión que se basa en PyMCDC pa imos del código Py hon
que se nos en egó al comienzo del abajo de in de g ado y que es la base de es a
uncionalidad. La idea p incipal es pode in e ac ua con es e p og ama desde nues a
ex ensión pa a Visual S udio Code, pa a pode abaja con él de una mane a más
cómoda y e ec i a, mejo ando así la expe iencia de los usua ios.
Lo p ime o que u imos que hace ue c ea un en o no pyen a a és de la
he amien a Windows Subsys em o Linux (WSL) en el que se encon a an odas las
lib e ías y he amien as necesa ias pa a pode ejecu a el código PyMCDC. Ya con el
37
en o no c eado, uncionando co ec amen e y as a ias p uebas del p og ama
ealizadas empezamos a abaja en la ex ensión.
La g an en aja de Visual S udio Code es su capacidad de pode ejecu a oda
clase de e minales que se encuen en ins aladas en el o denado , po lo que
comunica se con nues o en o no WSL e a una a ea sencilla. Debíamos c ea una
e minal WSL y ac i a nues o en o no en ella pa a pode ejecu a el p og ama con la
en ada deseada.
Al comienzo de la ejecución de la ex ensión se llama a una unción pa a p epa a
el en o no. La unción ecibe una se ie de da os ob enidos p e iamen e de la lec u a de
un iche o de con igu ación. En e es os da os se encuen an: el nomb e que el usua io
desee da le al e minal, la shell que debe usa (WSL), el nomb e del en o no pyen
c eado po el usua io y la u a al di ec o io donde se encuen an los a chi os de la
ex ensión y al inal han sido incluidos la API key del LLM y el endpoin . Con es os da os se
c ea un e minal WSL, se ac i a el en o no y se di ige a la u a indicada dejando el
en o no p epa ado pa a su uso.
Lo siguien e que hicimos ue un p og ama Py hon que si ie a de en ada a
PyMCDC pa a pode ejecu a lo con los a gumen os deseados. Es deci , un p og ama
que ob enga unos a gumen os y ejecu e PyMCDC haciendo uso de dichos a gumen os.
Además, se c eó una unción Typesc ip pa a pode manda le el comando de
ejecución del p og ama Py hon mencionado con la en ada deseada a la e minal WSL
del en o no. Es a unción ambién almacena la espues a de la e minal en un iche o
ou . x que se lee pa a pode mos a la salida ob enida a a és de un mensaje
in o ma i o de VS Code.
Con es o ya eníamos odo p epa ado pa a desa olla los comandos necesa ios pa a
hace uso de PyMCDC desde nues a ex ensión. C eamos dos comandos.
El p ime o pe mi e al usua io esc ibi manualmen e en una inpu box la exp esión
condicional deseada desde la ba a de comandos de Visual S udio Code.
38
Y el segundo que u iliza el selec o de ex o pa a que el usua io seleccione la
exp esión deseada desde el código en el que es é abajando y que es a si a como
a gumen o pa a nues o p og ama, a con inuación, el usua io ha ía clic de echo en el
a ón pa a ejecu a el comando de la ex ensión.
Pa a inaliza , egis amos es os comandos en el package.json de la ex ensión y
c eamos un acceso di ec o a los mismos al pulsa el bo ón de echo del a ón pa a una
mayo comodidad de acceso al comando.
De es a o ma el usua io iene dos opciones pa a ejecu a la uncionalidad
PyMCDC de nues a ex ensión y que op e po la que desee.
3.7 Ex ensión inal
El código que es á p esen e y accesible en el di ec o io de Gi Hub ep esen a la
usión de las dos ex ensiones explicadas en una sola en idad. Nues o p opósi o e a
emplea los dos gene ado es desde la misma ex ensión y log amos es e obje i o
in eg ando los elemen os p esen es en la ex ensión de conexión al LLM en la ex ensión
de ejecución de PyMCDC, pues es a posee un mayo g ado de desa ollo.
El p oceso de in eg ación ue luido y ácil, pues desde un inicio ealizamos las
ex ensiones con la idea de culmina en una unión inal.
3.8 Ejemplo de ejecución.
Pa a hace uso de la ex ensión inal la cual iene los dos gene ado es
implemen ados, el p oceso a segui se ía el siguien e (Ilus ación 9). El usua io end ía
ins alada la ex ensión en el Visual S udio Code de su equipo.
39
Ilus ación 9: Esquema de ejecución de la ex ensión
Supongamos que el usua io es á abajando en el código de un p oyec o y, a la
ho a de depu a lo y es ea lo equie e de casos de p ueba que cumplan los
condicionales que se encuen an en las di e en es secciones de su código.
El usua io u iliza á el selec o de ex o sob e la condición pa a la que desea
gene a los casos de p ueba. Una ez seleccionada, el usua io ha á clic de echo en el
a ón pa a mos a el menú con ex ual. En él e á dos opciones: “Gene a e es cases
(LLM)” y “Gene a e es cases (PyMCDC)” (Ilus ación 10). Es as opciones como se indica
en su nomb e ienen la unción de gene a los casos de p ueba pa a la condición
seleccionada median e el uso de un LLM y la lib e ía PyMCDC espec i amen e.
46
Exp esión/Salida
lib e ía/Salida LLM
Núme o de casos
gene ados/Núme
o de casos
espe ados
In en os has a
espues a
álida (LLM)
Tiempo de
ejecución
Cumple la
comp obación
Salida de LLM
6 / 5
2 / 3
813(ms)
SI
EJEMPLOS DE TCASII
Exp esión
(a>2) & (c>2) & ((d>3) | (e>9)) & (h>1) | (a>2) & (d>3) | (e>9) & (i<1) |
(b>12) & (e>9) | ( >1)
Salida de la lib e ía
9 / 9
128008 (ms)
Salida de LLM
X / 9
3 / 3
92509 (ms)
NO
Exp esión
((a>10) & (c>10) | (b>11) & (d>2)) & (e>21) & (( >1) & (g>8) | (i<1) &
(h>6))
Salida de la lib e ía
10 / 10
160561 (ms)
Salida de LLM
X / 10
3 / 3
135885 (ms)
NO
Exp esión
((a>1) & (c>2) | (b>3) & (d>1)) & (e>4) & (( >8) | ((i>2) & ((g>2) & (j>8)
| (h>5) & (k>7))))
Salida de la lib e ía
12 / 12
204047 (ms)
Salida de LLM
15 / 12
1 / 3
165229 (ms)
SI
47
Exp esión/Salida
lib e ía/Salida LLM
Núme o de casos
gene ados/Núme
o de casos
espe ados
In en os has a
espues a
álida (LLM)
Tiempo de
ejecución
Cumple la
comp obación
Exp esión
(a<10) & ((b<1) | (c<1)) & ((d>10) | (e<12))
Salida de la lib e ía
6 / 6
228858 (ms)
Salida de LLM
7 / 6
3 / 3
423308(ms)
SI
Exp esión
(e<2) & ( >3) & (g<9) & (a>3) & (((b>8) & (c>67)) |((h<8) & (d>4)))
Salida de la lib e ía
9 / 9
247553 (ms)
Salida de LLM
X / 9
3 / 3
519563 (ms)
NO
Exp esión
(a>1) & (b<1) & (c<1) & (d<1) & (e<1) & ( >1) & ((g>1) | (n<1) & ((h>1)
| (i>1))) & ((j<1) | (k<1) & ((j>1) | (l<1)) & (m<1))
Salida de la lib e ía
14 / 14
264444 (ms)
Salida de LLM
X / 14
3 / 3
579929 (ms)
NO
Exp esión
(a>1) | (b>1) | (c>1) | (m<1) & (d<9) & (e>1) & ( >1) & (g<2) & (h<3) |
(i>2) & ((j>2) | (k>3)) & (l>2)
Salida de la lib e ía
14 / 14
283575 (ms)
Salida de LLM
X / 14
3 / 3
633248 (ms)
NO
48
Exp esión/Salida
lib e ía/Salida LLM
Núme o de casos
gene ados/Núme
o de casos
espe ados
In en os has a
espues a
álida (LLM)
Tiempo de
ejecución
Cumple la
comp obación
Exp esión
((c<2) | (d<5)) & ((e<10) & ( >1)) & (g<9) & (a<13) & ((b>5) & (i>0) |
(h<2) & (k>23))
Salida de la lib e ía
11 / 11
304042 (ms)
Salida de LLM
X / 11
3 / 3
683122 (ms)
NO
4.1. Casos des acados
En es e apa ado se menciona en especial dos casos que se han encon ado en
la compa ación siendo “masking MC/DC” y no ene espues a po pa e de PyMCDC
pe o sí del LLM.
Es e p ime o conocido como "masking MC/DC" o "MC/DC enmasca ado” ha
es ado p esen e en el momen o de ans o ma los ejemplos ex aídos de TCAS II, dado
que en la mayo ía de las exp esiones se daban. Un ejemplo es ( & g | ~ & h), po que
los alo es de e dad que oma a ec an a ~ y po an o los cua o é minos booleanos
de la exp esión no son comple amen e independien es. PyMCDC no nos p opo ciona
una espues a con casos base, sino una lis a acía po lo an o se ha enido que
modi ica de mane a que la negación no es é p esen e, un ejemplo se ía ( & g | ~i & h)
en el que cambiamos ~ po ~i añadiendo una nue a a iable, pe o es a no es
dependien e a o a.
El caso de no ene espues a po pa e de PyMCDC, pe o sí del LLM se e en la
exp esión ((x > 0) & (y < 0)) & ((x < 0) & (y > 0)), es a exp esión pa a PyMCDC nos da
como espues a, Sol ing [(! (0 < y)), (0 < x), (y < 0), (x < 0)] wi h False. Domain is no SAT!!!
[], se obse a que de uel e que el dominio de las a iables no sa is ace las es icciones
49
p opo cionadas, pe o pa a el LLM sí que hay solución. Fo mada po cua o casos base
la cual podemos desca a di ec amen e po no cumpli MC/DC, pe o a la ez al
obse a la exp esión nos damos cuen a de que es imposible que un núme o sea a la
ez mayo que 0 y meno que 0 po lo an o cualquie espues a a a se e ónea. Pues o
que es a exp esión no posee una solución que, de e dade o, pe o pa a el LLM pa ece
que no se con empla en ningún caso que una exp esión no enga espues a.
También menciona la nega i a del LLM de gene a de mane a di ec a una espues a
co ec a pa a los casos más complejos, como en es e caso ep esen an los modi icado
de TCAS II, necesi ando en odos ellos mínimo dos in en os de gene ación.
4.2. Comen a io inal
T as obse a es os casos, se puede conclui que la gene ación a a és de la
lib e ía se encuen a un paso po delan e de la gene ación median e modelos de
lenguaje. Es o se debe a que los modelos de lenguaje come en allos en exp esiones,
especialmen e en las complejas, así como en dis in as ocasiones ienen di icul ades
pa a saca una solución que se adap e al c i e io buscado. Además, emplean la
ola ilidad, es deci puede ocu i que al solici a más de una ez solución pa a una
exp esión la espues a a íe. También debemos des aca la elocidad, a pesa de se
los dos mé odos muy ápidos, la ejecución a a és del LLM es mucho más len a. Se ha
omado en cuen a el iempo de inalización de la ejecución, conside ando la
posibilidad de no ob ene una espues a co ec a en el caso de la gene ación median e
LLM.
Es o no implica que el gene ado median e LLM deba desca a se po su al a la encia,
ya que es e aspec o puede mejo a se abajando con un mic o con enedo o una
imagen local emba cado jun o con el es o del plugin de VS pa a que las ejecuciones
luyan más ápido. Sin emba go, los LLM ac uales consumen muchos ecu sos de CPU,
po lo que es más común que los usua ios accedamos a ellos como se icios web.
Po el con a io, que emos des aca en posi i o la posibilidad de e alua
exp esiones de ipo booleano dado que su con apa e es incapaz de ejecu a es as
50
exp esiones po lo an o es un pun o pa a ene en cuen a en es a nue a o ma de
gene a casos de p ueba.
Po úl imo, as ealiza es a compa ación en dis in os equipos, se debe menciona
la di e encia posi i a hacia el gene ado median e LLM, la cual es la acilidad y
accesibilidad de uso, pues pa a emplea PyMCDC debemos ene el en o no de WSL
ins alado co ec amen e con odas sus dependencias lo cual di icul a su uso.
51
Capí ulo 5 - Conclusiones y abajo u u o
La gene ación de casos de p ueba median e modelos de lenguaje es posible
incluso posi i a, empleándose de mane a ápida y ácil pa a cualquie ipo de usua io.
Debemos des aca es a gene ación pa a exp esiones de poca complejidad o de
di icul ad baja, dado que pa a exp esiones de media/al a complejidad es obse able
que su empleo no conlle a una buena espues a.
Conside amos que la gene ación median e LLM es á condicionada po el
en o no de es os modelos de lenguaje, que bien es án desa ollados de g an mane a
pa a unos en o nos, pa a es e caso no conside amos que en la úl ima e sión disponible
has a la echa el gp -3.5- u bo sea un buen elemen o pa a abaja , dado que debe se
más desa ollado pa a se capaz de ealiza una espues a co ec a an e cualquie ni el
de exp esión, dando igual su complejidad, cosa que aho a mismo no puede hace se,
Debes de es ablece un conjun o de mensajes muy conc e o y manda un nume o de
mensajes ele ado pa a da le un conocimien o ce cano lo más posible al en o no
MC/DC pa a consegui así es ablece con e sación con un cha capaz de esponde
de o ma adecuada y ni con es a écnica empleada de mane a co ec a pa ece que
se pueda log a .
La al a de con ianza an e el conocimien o de es e en o no del MCDC p o oca
que seamos noso os los que enemos que ealiza una comp obación sob e las
hipo é icas soluciones co ec as que nos p opo ciona, dado que no nos pe mi e es a
segu os de que se omen espues as como co ec as que no ienen nada que e con
lo que se es á buscando.
En conclusión, buscando la e icacia y co ec i ud la gene ación de casos de
p ueba median e modelos de lenguaje es á un paso po de ás de lo deseado. Siendo
más des acable la gene ación empleando la lib e ía en e a es a gene ación, pe o
como hemos dejado e lejado en es a memo ia cada gene ación iene sus pun os
posi i os y nega i os y enemos cla o que es e p oyec o pod ía mejo a con el p opio
desa ollo del en o no de los modelos de lenguaje.
52
5.1. T abajo a u u o
T as ealiza es a in oducción a la gene ación au omá ica a a és de es e nue o
en o no conocido como son los LLMs, hemos iden i icado limi aciones y á eas que
conside amos deben se los p óximos pasos a ealiza pa a consolida es e p oyec o
siendo es as la ealización de una unción más c í ica y selec a de comp obación pa a
salida de LLM pues o que la ealizada es una con dos c i e ios omados de o ma básica
y es o puede lle a a cie os e o es así como la implemen ación de un sis ema pa a que
el p opio cha no o me espues as pa a exp esiones que no ienen solución.
También hemos de menciona el desa ollo de una mejo a del apa ado isual de
la ex ensión, así como mejo a su compo amien o en cuan o apidez de ejecución.
En cuan o al á ea de conexiones con LLM basándonos en las conclusiones de es e
es udio se ía posi i o pode ealiza dis in as conexiones a a ios en o nos LLM di e en es,
pa a pode decidi cuál de odos es el más a anzado pa a gene a es os casos de
p ueba y cual abaja mejo con el c i e io MC/DC.
En esumen, las p opues as de in es igación u u a p esen adas en es a sección
son posi i as pa a a anza en el conocimien o sob e la gene ación de casos de p ueba
median e modelos de lenguaje y ienen el po encial de in lui en el u u o y en el
desa ollo de nue as ecnologías.
53
In oduc ion
Mo i a ion
Cu en ly, in he wo ld o so wa e de elopmen , he e is a g ea di e si y o inc easingly
complex p og ams wi h a c i ical impac on socie y in case o ailu e (e.g., hink o he
banking sec o , communica ions, o anspo a ion). The e o e, hese sys ems equi e
minimum le els o quali y and eliabili y o ensu e hei p ope unc ioning. The need o
de elop so wa e ha mee s hese s anda ds has made so wa e es ing a i al pa o
he de elopmen p ocess o any so wa e p og am.
The goal o es ing is o ind and co ec e o s, ensu ing highe quali y o he de eloped
so wa e and educing he main enance cos , hus gua an eeing use sa is ac ion. To
achie e his goal, he main ool o he so wa e es e is he es s, which consis o a uple
o inpu alues as well as he expec ed ou pu alue.
This uple o (inpu alues, expec ed ou pu ) is called a es case, and i is he mos
impo an pa o any es because i se es o challenge he p og am's code in speci ic
scena ios o e alua e i s beha io in all kinds o si ua ions, om he mos common o he
mos complex. The e ec i eness o hese es cases lies in hei abili y o ind aul s,
he eby ensu ing he co ec unc ioning o he p og am in any si ua ion.
These es cases a e designed ollowing ce ain co e age c i e ia, ha is, a se ies o
me ics and app oaches o measu e he pa s ha ha e been execu ed du ing he es s.
The e o e, hese c i e ia mus be e ec i e o ensu e adequa e co e age o all pa s o
he so wa e and e ec i ely iden i y aul s in he code.
The e o and di icul y in he manual c ea ion o es cases ha e inc eased along wi h
he cu en complexi y o p og ams, making i an a duous ask ha is mo e p one o e o s.
This esul s in exhaus i e es ing ha ing a high economic and ime cos . Being awa e o
his p oblem, a solu ion is p oposed: he au oma ic gene a ion o es cases, which aims
o op imize he impo an ask o so wa e es ing by speeding up he p ocess o c ea ing
es cases and inc easing hei quali y.
54
In his TFG (Final Deg ee P ojec ), we explo e he au oma ic gene a ion o es cases using
La ge Language Models (LLMs) unde he MC/DC co e age c i e ion, a special ype o
b anch co e age.
This c i e ion is used in indus ial s anda ds (ae ospace sec o , DO-178C s anda d, and
au omo i e sec o , ISO 26262 s anda d) o ensu e he eliabili y and sa e y o so wa e
p oduc s implemen ed in he ae ospace and au omo i e sec o s, espec i ely. These
s anda ds add ess e e y hing om so wa e de elopmen p ocesses o quali y and
sa e y managemen . Failu es a e classi ied acco ding o hei se e i y, allowing hei
p io i iza ion in es s o achie e he highes possible eliabili y and sa e y.
When execu ing he es s, using he MC/DC co e age c i e ion ensu es g ea e sensi i i y
o b anch co e age. Addi ionally, es se s ha sa is y he MC/DC c i e ion a e much
smalle han hose ha mee b anch co e age c i e ia. The e o e, he ime equi ed o
execu e he es s is d as ically educed while inc easing hei e ec i eness. Howe e ,
achie ing a minimal (op imal) se o es s ha sa is y he MC/DC c i e ion is cos ly and
di icul , so app oxima ions a e usually achie ed.
To o e come his limi a ion, a heu is ic has been p oposed o app oxima e es
gene a ion wi h he MC/DC c i e ion using LLM pla o ms. This o e s an easy way o
gene a e e ec i e es cases wi h he aim o op imizing he so wa e es ing p ocess,
inc easing so wa e quali y, and making es ing a less cos ly ask in e ms o ime and
money.
Goals
• The main objec i e o his Final Deg ee P ojec is he au oma ic gene a ion o es
cases using language models. To achie e his p ima y objec i e, a se ies o
speci ic goals mus be me : Acquisi ion o knowledge and a ious in o ma ion
esou ces abou he MC/DC co e age c i e ion, o unde s and he ex en o which
ou au oma ic de elopmen has been posi i e o nega i e.
• Upda ing and imp o ing a p e-exis ing heu is ic ool o gene a ing es cases ha
sa is y MC/DC c i e ia.
55
• Implemen a ion o an ex ension/module in VS Code o he au oma ic gene a ion
o es cases h ough connec ion wi h an LLM.
• Implemen a ion o a plugin o a de elopmen en i onmen (IDE) ha acili a es
he use o he es case gene a ion ool by non-expe use s and encapsula es he
wo p e iously men ioned es case gene a ion engines (LLM-based gene a o
and p e-exis ing heu is ic ool gene a o ). In pa icula , he VS Code edi o has
been chosen as he IDE o hos he plugin.
• Compa ison o ou pu s om bo h es case gene a o s conce ning he MC/DC
c i e ion o assess he quali y o ou au oma ic gene a ion using LLM.
Wi h his se o objec i es co ec ly ca ied ou , i will be possible o ensu e ha he main
objec i e has been achie ed.
Wo k plan
Fo he de elopmen o his p ojec , a hyb id me hodology called Sc umban will be used.
This combines elemen s o he Sc um me hodology, ocusing on deli e ing p og ess in
sho cycles, which is why we will use he Ji a So wa e pla o m (Illus a ion 16). On his
pla o m, a s uc u e di ided in o sp in s will be c ea ed, and he Kanban me hodology
will be inco po a ed, as he pla o m allows us o iew a boa d showing he s a us o asks
and he de elopmen low i sel .
The wo k s uc u e will be di ided in o di e en sp in s, which will ini ially be se o a basic
du a ion o one week. This pe iod can be adap ed based on he numbe o asks/wo ks
o be done. A e his ime, mee ings wi h he u o s will be held o show he p og ess
made, inalize he cu en sp in , and s a he nex one. The amoun o wo k in each sp in
will be ep esen ed h ough asks g ouped by ca ego ies (Illus a ions 17 and 18). These
asks can be c ea ed by he u o s o by he s uden s. The asks can mo e h ough i e
s a es:
• To do
• In p og ess
• Unde e iew
62
can lead o e o s. Addi ionally, implemen ing a sys em o p e en he cha om
gene a ing esponses o exp essions ha ha e no solu ion is necessa y.
We should also men ion he de elopmen o an imp o ed isual aspec o he ex ension,
as well as enhancing i s execu ion speed.
Rega ding LLM connec ions, based on he conclusions o his s udy, i would be bene icial
o es ablish connec ions o a ious LLM en i onmen s o de e mine which is he mos
ad anced o gene a ing hese es cases and which wo ks bes wi h he MC/DC
c i e ion.
In summa y, he u u e esea ch p oposals p esen ed in his sec ion a e posi i e s eps
owa ds ad ancing knowledge in he gene a ion o es cases using language models.
They ha e he po en ial o in luence he u u e and he de elopmen o new
echnologies.
63
Capí ulo 6 - Con ibuciones pe sonales
Ismael Ba ahona Cáno as
Desde que decidimos ealiza el TFG en conjun o con mi compañe o Gonzalo
Con e as Go do, hemos es ado en ocados en encon a algo que nos llama a la
a ención y nos mo i a á a ambos pa a pode abaja de mane a ac i a en ello. Po
es e mo i o seleccionamos es e abajo dado que la in eligencia a i icial es un
apa ado ecnológico que nos llama la a ención, así como conoce más sob e ella
dado que en las p opias asigna u as de la ca e a se dan emas. Pe o en ninguna se
habla de mane a ex ensa sob e un ema an pun e o como los LLMs.
Ya con el p oyec o en ma cha enía cla o que que ía euniones con los u o es
de mane a asidua pues conside o que me deben guia y da opinión con o me se aya
a anzando. Plan ee la opción de pone nos un ho a io ijo de abajo pa a el p oyec o
con mi compañe o, el cual seguimos sal o en casos de excesi o abajo.
Pa a comenza con el p oyec o he enido que epasa los elemen os básicos del
lenguaje Py hon pues es un lenguaje con el que apenas he abajado. Tu e que busca
in o mación pa a pode comp ende el código inicial p opo cionado. Con es as bases
pasé a busca y lee in o mación pa a en ende las bases sob e el c i e io de cobe u a
que di ige es e abajo el MC/DC el cual e a nue o pa a mí. No me cos ó comp ende
en qué consis e y cuál es su ele ancia, así como qué obje i o puede ene el co ec o
desa ollo de la gene ación au omá ica median e LLM.
En cuan o al desa ollo del código de la ex ensión c eada me enca gue del
en o no elacionado con la conexión al LLM, comenzando con la búsqueda de
in o mación ela i a, así como de la p ueba de dis in os en o nos. Es o debo deci que
me esul ó posi i o pues como he mencionado es un en o no que me gus a y despie a
mi cu iosidad, desa ollé el código en Typesc ip , un lenguaje nue o pa a mi pues como
al no se emplea en ninguna asigna u a cu sada. También he enido que elaciona me
con el en o no de WSL pa a p oba la pa e de la lib e ía de PyMCDC.
64
Del en o no de las ex ensiones de Vs Code he enido que in o ma me pa a pode
comp oba el co ec o desenlace de la conexión. Es o no ha hecho más que anima mi
in e és po es a ama de ecnología, que ya enía mi a ención pues ealice la asigna u a
op a i a in eligencia a i icial aplicada al con ol.
En el en o no de la ex ensión en la que se unen ambos gene ado es he
pa icipado ac i amen e en mejo as e implemen aciones de nue o código necesa io.
Pe o la pa e que más me ha abso bido es la compa ación de salidas, pues
eniendo un gene ado an p eciso como lo es el de la lib e ía, pe mi e la compa ación
con lo c eado po el LLM, en onces odo es e apa ado ha sido mi ocupación pe sonal,
lo cual nos ha ayudado a obse a las conclusiones de mane a cla a.
En la memo ia di ía que he omado el ol p incipal pues es algo que me gus a ya
que no engo p oblema en edac a cualquie a ance o p oblema obse ado pues soy
una pe sona que conside a que odo lo que se ealice en un p oyec o debe es a
e lejado en algún en o no. Los capí ulos, así como sus secciones han sido edac ados y
supe isados po ambos elemen os del equipo, siendo cla o que puede que alguno
haya desa ollado más un capí ulo o o o ya uese po se del en o no que había
p o undizado más, siendo es o p esen e en el capí ulo de la ex ensión, o bien po que a
alguien le in e esaba más ese capí ulo, como en mi caso se ía el apa ado de en o no
de conexiones con LLMs.
En esumen, mis con ibuciones a es e p oyec o han sido a iadas e in eg ales,
aba cando desde la plani icación has a la edacción inal. Es as expe iencias me han
pe mi ido desa olla habilidades esenciales en el campo de la in eligencia a i icial, así
como en el en o no de los LLMs, y han sido undamen ales pa a mi desa ollo
académico.
65
Gonzalo Con e as Go do
A la ho a de ma icula me pa a hace el TFG, enía cla o que que ía abaja con
mi compañe o Ismael Ba ahona Cáno as ya que la g an mayo ía de abajos y
p oyec os que ha habido que hace en las asigna u as los hemos hecho jun os, nues a
me odología de abajo y de en oca las cosas es simila po lo que abajamos bien
jun os. Como no eníamos ningún ema en especí ico en el que quisié amos abaja
decidimos busca en e los emas p opues os po los p o eso es. Lo que sí eníamos cla o
e a que que íamos abaja sob e algún ema que nos llama a la a ención de una o ma
u o a, ya sea po el ema en sí, su obje i o o el ámbi o en el que se cen a. Vimos es e
ema y nos in e esó el uso de la in eligencia a i icial y los LLMs, ya que es un ema muy
ac ual y con bas an e po encial, po lo que nos decidimos a explo a es e ema.
Al comienzo del desa ollo del TFG y las p ime as euniones con los u o es
empezamos a in o ma nos sob e di e en es emas elacionados, como el mundo del
es ing pa a comp ende su impo ancia y los di e en es c i e ios de cobe u a que se
emplean pa a c ea los es s de los p og amas, en nues o caso, el c i e io MC/DC. Los
u o es ambién nos p opo ciona on el código inicial pa a la gene ación de casos de
p ueba a a és de PyMCDC po lo que ambién u imos que epasa el lenguaje Py hon
y comandos del en o no Linux. Es a pa e in oduc o ia ue común a ambos miemb os
del equipo pues los dos necesi ábamos la base pa a pode abaja en ello.
Pa a el desa ollo de la ex ensión yo in es igué el en o no de Jupy e No ebooks
en el p oceso de decisión del en o no pa a el que desa olla íamos la ex ensión,
inalmen e decidimos usa Visual S udio Code. Así que pa a empeza la implemen ación
u e que in o ma me y ap ende a maneja Typesc ip , un lenguaje de p og amación
que no habíamos usado nunca.
En el desa ollo de la ex ensión yo me enca gué de la base de es a, es deci , los
comandos pa a ejecu a las di e en es uncionalidades de la ex ensión, la unción de
ac i ación y, en esumen, las pa es básicas de la ex ensión.
66
En mi caso, me cen é en la pa e de gene ación de casos de p ueba median e
la lib e ía PyMCDC. Tu e que in es iga una mane a de pode ejecu a desde nues a
ex ensión código en Py hon en un en o no i ual Linux, c ea un p og ama de en ada
al código de gene ación de casos y ansmi i los esul ados ob enidos a la in e az de
Visual S udio Code pa a e los cómodamen e.
Tan o Ismael como yo abajamos en conjun o en nume osas mejo as y unciones
una ez que nues as espec i as pa es de la ex ensión se encon aban en la e sión
comple a.
Respec o a la edacción de la memo ia y c eación de diag amas y igu as,
ambos in eg an es del equipo hemos pa icipado en la g an mayo ía de las secciones
de es a, a excepción de aquellas pa es elacionadas con nues a espec i a
apo ación e implemen ación de la ex ensión.
Pa a esumi , la mayo ía de mis apo aciones en es e abajo se encuen an en el
código de la ex ensión, así como en la muchas de las secciones de es a memo ia,
des acando aquellas elacionadas con la lib e ía PyMCDC.
Es e abajo me ha pe mi ido ap ende sob e las ca ac e ís icas, el
uncionamien o y el en o no de los LLMs que ac ualmen e es án en boca de odos.
También he ap endido nue as o mas de u iliza el lenguaje Py hon pa a aplicaciones
en la in eligencia a i icial, así como ap ende a maneja código en Typesc ip y
desa olla p og amas en en o nos de abajo que no había usado an e io men e y que
aho a ya o man pa e de mis conocimien os académicos.
67
Bibliog a ía
[
1]
B. B oekman y E. No enboom, «Tes ing embedded so wa e,» 2003. [En línea].
A ailable:
h ps://books.google.es/books?hl=es&l =&id=O3hpTaXmHKwC&oi= nd&pg=PR10&
dq= es ing+de+so wa e&o s=8 7ynPWRiP&sig=jyS p2o0QchaKNcB6 p oFPYFAc&
edi _esc=y# =onepage&q= es ing%20de%20so wa e& = alse. [Úl imo acceso:
Junio 2024].
[
2]
G. J. Mye s, «The A o So wa e Tes ing,» 2004. [En línea]. A ailable:
h p://www.51 es ing.com/N_download/lib/Tes ingTechDL/A o So wa eTes ing.p
d . [Úl imo acceso: Junio 2024].
[
3]
«Wikipedia LLM,» [En línea]. A ailable:
h ps://es.wikipedia.o g/wiki/Modelo_de_lenguaje_g ande. [Úl imo acceso: Junio
2024].
[
4]
K. Hayhu s , D. Vee husen, J. Chilenski y L. Rie son, «A P ac ical Tu o ial on
Modi ied Condi ion/ Decision Co e age,» 2001. [En línea]. A ailable:
h ps://shemesh.la c.nasa.go / m/pape s/Hayhu s -2001- m210876-MCDC.pd .
[Úl imo acceso: Junio 2024].
[
5]
L. A. Johnson, «DO-178B: So wa e conside a ions in ai bo ne sys ems and
equipmen ce i ica ion.,» 1998. [En línea]. A ailable:
h ps://www.dcs.gla.ac.uk/~johnson/ eaching/sa e y/ epo s/schad.h ml. [Úl imo
acceso: Junio 2024].
[
6]
«ISO 26262,» 2024. [En línea]. A ailable:
h ps://es.wikipedia.o g/wiki/ISO_26262. [Úl imo acceso: Junio 2024].
68
[
7]
A lassian, «Ji a So wa e,» [En línea]. A ailable:
h ps://www.a lassian.com/es/so wa e/ji a. [Úl imo acceso: 2024].
[
8]
«Pagina o icial de Py hon,» [En línea]. A ailable: h ps://www.py hon.o g/.
[Úl imo acceso: Junio 2024].
[
9]
h ps://www. ypesc ip lang.o g/, «Pagina o icial Typesc ip ,» [En línea].
A ailable: h ps://www. ypesc ip lang.o g/. [Úl imo acceso: Junio 2024].
[
10]
G. Bie man, M. Abadi y M. To ge sen, «Unde s anding ypesc ip ,» 2014. [En
línea]. A ailable: h ps://link.sp inge .com/chap e /10.1007/978-3-662-44202-9_11.
[Úl imo acceso: Junio 2024].
[
11]
c aigloewen-ms , ma wojo, suelsp, Soham-gli ch, donwilson y wibjo n,
«Ins alación de Linux en Windows con WSL,» [En línea]. A ailable:
h ps://lea n.mic oso .com/es-es/windows/wsl/ins all. [Úl imo acceso: 2024].
[
12]
G. Con e as y I. Ba ahona, «Gi hub p oyec o TFG,» UCM, Junio 2024. [En
línea]. A ailable: h ps://gi hub.com/TGF-2023-24/ es ing-ai/ ee/p uebas. [Úl imo
acceso: Junio 2024].
[
13]
G. J. Mye s, C. Sandle y T. Badge , The a o so wa e es ing, 2011.
[
14]
F. Ahishakiye, J. I. Requeno, V. S olz y L. M. K is ensen, «Co e age Analysis o
Ne Insc ip ions in Colou ed Pe i Ne Models,» 2020. [En línea]. A ailable:
h ps://pd s.seman icschola .o g/175 /b6 4 aeb3b5 c8b 6b3242c 8dea0eb0e88.p
d . [Úl imo acceso: Junio 2024].
[
15]
H. Man a y A. S. Raina, «LLM E e ywhe e: Docke o Local and Hugging
Face Hos ing,» 2023. [En línea]. A ailable: h ps://www.docke .com/blog/llm-
docke - o -local-and-hugging- ace-hos ing/. [Úl imo acceso: Junio 2024].
69
[
16]
F. Ahishakiye, J. I. Requeno Ja abo, L. Michael K is ensen y V. S olz,
«Reposi o io Gi Hub py-mcdc,» 2021. [En línea]. A ailable:
h ps://gi hub.com/selabh l/py-mcdc. [Úl imo acceso: Junio 2024].
[
17]
K. Ghani y J. A. Cla k, «Au oma ic es da a gene a ion o mul iple condi ion
and MCDC co e age,» de Fou h In e na ional Con e ence on So wa e
Enginee ing Ad ances , IEEE, 2009, pp. 152-157.
[
18]
T. Ki amu a, Q. Maissonneu e, E.-H. Choi, C. A ho y A. Ga gan ini, «Op imal
es sui e gene a ion o modi ied condi ion decision co e age using SAT sol ing.,»
2018. [En línea]. A ailable: h ps://doi.o g/10.1007/978-3-319-99130-6 9. [Úl imo
acceso: Junio 2024].
[
19]
J.-R. Chang y C.-Y. Huang, «A s udy o enhanced MC/DC co e age c i e ion
o so wa e es ing.,» de 31s Annual In e na ional Compu e So wa e and
Applica ions Con e ence, IEEE, 2007, pp. 457-464.
[
20]
A. Vic o ia Alca az, G. Espejel Salaza y E. G. Cossio F anco, «Gene ación
au omá ica de casos de p ueba a pa i de eque imien os uncionales u ilizando
g amá icas lib es de con ex o,» 2021. [En línea]. A ailable:
h p://cia eq. eposi o ioins i ucional.mx/jspui/handle/1020/511. [Úl imo acceso:
Junio 2024].
[
21]
M. Azu e, «Pagina o icial de OpenAi API,» Azu e, [En línea]. A ailable:
//openai.com/p oduc . [Úl imo acceso: 05 2024].
[
22]
«OpenAI documen a ion,» OpenAI, [En línea]. A ailable:
h ps://pla o m.openai.com/docs/o e iew. [Úl imo acceso: 2024].
[
23]
M. Azu e, «Pagina o icial de Azu e OpenAI,» Azu e, [En línea]. A ailable:
h ps://oai.azu e.com/po al/a 9bc2a0874d4 129812b5ed7 0712 /deploymen .
[Úl imo acceso: 05 2024].
70
[
24]
M. Azu e, «Acceso a azu e-po al,» [En línea]. A ailable:
h ps://aka.ms/oai/access?azu e-po al= ue. [Úl imo acceso: 05 2024].
[
25]
«Pagina o icial Hugging Face,» [En línea]. A ailable:
h ps://hugging ace.co/. [Úl imo acceso: 2024].
[
26]
Google, «IA de Na u al Language(Google),» [En línea]. A ailable:
h ps://cloud.google.com/na u al-language?hl=es_419. [Úl imo acceso: 2024].
[
27]
C. D ake, «Py hon EDA Documen a ion,» 2018. [En línea]. A ailable:
//pyeda. ead hedocs.io/en/la es /. [Úl imo acceso: Junio 2024].
[
28]
A. Micheli y M. Ga io, «PySMT,» [En línea]. A ailable:
h ps://pypi.o g/p ojec /PySMT/. [Úl imo acceso: Junio 2024].
[
29]
J. G an , «Py hon So ed Con aine s,» 2014. [En línea]. A ailable:
h ps://g an jenks.com/docs/so edcon aine s/. [Úl imo acceso: Junio 2024].
[
30]
B. Bayles y E. Rose, «mo e-i e ools,» 2012. [En línea]. A ailable:
h ps://pypi.o g/p ojec /mo e-i e ools/. [Úl imo acceso: Junio 2024].
[
31]
S. C. Johnson, «Lin , a C p og am checke .,» 1977. [En línea]. A ailable:
h p://squoze.ne /UNIX/ 7/ iles/doc/15_lin .pd . [Úl imo acceso: Junio 2024].
[
32]
F. Ahishakiye, J. I. Requeno Ja abo, L. M. K is ensen y V. S olz, «Mc/dc es
cases gene a ion based on bdds. In In e na ional Symposium on Dependable
So wa e Enginee ing: Theo ies, Tools, and Applica ions,» 2021. [En línea]. A ailable:
h ps://link.sp inge .com/chap e /10.1007/978-3-030-91265-9_10. [Úl imo acceso:
Junio 2024].
[
33]
T. Ande son y M. Dahlin, de Ope a ing Sys ems: P inciples and P ac ice,
Recu si e Books, 2014, p. 123.
71
[
34]
«Pagina VS Code,» Mic oso , [En línea]. A ailable:
h ps://code. isuals udio.com/. [Úl imo acceso: Junio 2024].
[
35]
«Pagina Jupy e ,» [En línea]. A ailable: h ps://jupy e .o g/. [Úl imo acceso:
Junio 2024].
[
36]
m bullwinkle, ni inme, mg eenegi , db adish-mic oso , -alje y e ic-u ban,
«Quicks a : Ge s a ed gene a ing ex using Azu e OpenAI Se ice,» Mic oso
Azu e, 2023. [En línea]. A ailable: h ps://lea n.mic oso .com/en-us/azu e/ai-
se ices/openai/quicks a ? abs=command-line%2Cpy hon&pi o s=p og amming-
language-ja asc ip . [Úl imo acceso: Junio 2024].
[
37]
Hugo, «Ge ing S a ed wi h Cha GPT API: A Comp ehensi e Guide,» 2023.
[En línea]. A ailable: h ps://aneejian.com/ge ing-s a ed-cha -gp -api-
comp ehensi e-guide/. [Úl imo acceso: Junio 2024].
[
38]
A. Fe nández, «Tipos de P omp s en Cha GPT y cómo u iliza los pa a mejo a
los esul ados,» [En línea]. A ailable: h ps://es.linkedin.com/pulse/ ipos-de-
p omp s-en-cha gp -y-c%C3%B3mo-u iliza los-pa a-amel- e n%C3%A1ndez-.
[Úl imo acceso: 2024].