Logo UAB
2022/2023

Test i Qualitat del Software

Codi: 102758 Crèdits: 6
Titulació Tipus Curs Semestre
2502441 Enginyeria Informàtica OB 3 1
2502441 Enginyeria Informàtica OT 4 1

Professor/a de contacte

Nom:
Xavier Otazu Porter
Correu electrònic:
xavier.otazu@uab.cat

Utilització d'idiomes a l'assignatura

Llengua vehicular majoritària:
català (cat)
Grup íntegre en anglès:
No
Grup íntegre en català:
Grup íntegre en espanyol:
No

Equip docent

Antonio Ballester Valiente

Prerequisits

No és obligatori, però es recomana cursar en paral·lel l'assignatura "Requisits del Software" i "Disseny de Software".

Objectius

En aquesta assignatura s'introdueixen els conceptes bàsics per planificar proves del software i les tècniques per implementar-les, així com estimacions de la seva qualitat.

Competències

    Enginyeria Informàtica
  • Adquirir hàbits de treball personal.
  • Capacitat per a desenvolupar, mantenir i avaluar serveis i sistemes software que satisfacin tots els requisits de l'usuari i es comportin de forma fiable i eficient, siguin assequibles de desenvolupar i mantenir i compleixin normes de qualitat, aplicant les teories, principis, mètodes i pràctiques de l'Enginyeria del Software.
  • Capacitat per concebre, desenvolupar i mantenir sistemes, serveis i aplicacions informàtiques emprant els mètodes de l'enginyeria del software com a instrument per a assegurar-ne la qualitat.

Resultats d'aprenentatge

  1. Aplicar les tècniques formals de verificació del compliment de requisits de les aplicacions software.
  2. Aplicar mètodes formals de revisió del disseny del software.
  3. Avaluar de manera crítica el treball dut a terme.
  4. Avaluar els sistemes software assegurant que satisfacin tots els requisits de l'usuari i es comportin de forma fiable i eficent, siguin assequibles de desenvolupar i mantenir i compleixin normes de qualitat, aplicant les teories, principis, mètodes i pràctiques de l'Enginyeria del Software.
  5. Planificar i documentar les proves del disseny del software en casos pràctics.

Continguts

L'ordre temporal dels següents continguts al llarg del curs no ha de seguir necessariament aquest ordre.

 

Introducció la prova del software

Objectiu de la prova. Tipus de proves: caixa blanca, caixa negra, de validació, regressió, càrrega etc. Nivells de prova: unitat, integració, sistema, acceptació.

Proves d'unitat i proves d'integració

Objectiu i metodologia. Perquè fer proves d'unitat i integració? Proves d'unitat i Test Driven Development. "Mock" objects.

Proves de caixa negra

Classes d'equivalència. Anàlisi de valors límit. Taules de decisió. Pairwise testing. Transició d'estats. Disseny de casos de prova a partir de casos d'ús. Exemple ATM.
Prova a partir de casos d'ús.

Proves de caixa blanca

Control de flux (complexitat ciclomàtica). Cadenes definició-us. Prova de cobertura envers prova de control de flux.

Prova exploratòria

Proves senzilles i ràpides. Interès pràctic i efectivitat.

Automatització de les proves

Creació de proves “automàtiques”. Eines scrpiting i recording web (Selenium). 

Proves de sistema o proves End-to-End

Objectiu i metodologia. Perquè fer proves de sistema? Behaviour Driven Development (BDD). Revisió de Test Reports.

Test Frameworks

Definció i exemples. Implementació d'un test framework i proves de sistema utilitzant Cucumber (BDD). 

Planificació documentació de la prova

Anàlisi del risc. Mastertestplan. Exemples de pla de proves i de documentació. 

Quality control, Quality Assurance i Quality Engineering

Revisions formals, mètriques, estàndards de desenvolupament.

Definició de bug i informes de bugs. Eines de Bug Tracking: Bugzilla i Jira. Com s'integra un Quality Engineer a un equip de desenvolupament. Revisions tècniques formals.

Ecosistema d'un Quality Engineer

Definició del cicle DevOps. Continuous Integration, Continuous Testing, Continuous Delivery, Continuous Feedback. Eines més conegudes (Jenkins, GitHub/GitLab i revisions de peticions de canvi, Grafana).

Metodologia

Aquesta assignatura té un equilibri entre la part teòrica i la part pràctica. No és una assignatura totalment ABP ja que els conceptes teòrics són importants, i la part pràctica es realitzarà amb sessions de tutories, sessions d'entregues i avaluació dels problemes planetjats i treball autònom per part de l'alumne.

Classes de teoria: Són classes de tipus magistral on s'introdueixen els conceptes teòrics de l'assignatura. Tot i ser classes de teoria, una bona part de la sessió (aproximadament la meitat) es destinarà a solucionar en grup senzills problemes plantejats pel professor.

Seminaris: Són classes on es plantejaran casos pràctics que requeriran l'aplicació dels conceptes explicats a les classes de teoria. Al final de la classe de seminaris es plantejarà algun problema que l'alumne haurà de solucionar de forma autònoma i que entregarà voluntàriament al començar la següent sessió de seminaris.

Laboratoris: Són sessions en les que elprofessor realitzara tutories amb els alumnes per tal de guiar la seva feina al desenvolupar la solució a pràctica un problema real d'una certa complexitat. Abans d'aquestes sessions, l'alumne haurà de realitzar una serie de tasques de forma autònoma que seran mostreades al començar la sessió de laboratoris.

La competència transversal assignada, T02.08 - Avaluar de manera crítica el treball dut a terme, s'avaluarà de manera automàtica en les pràctiques, ja que aquesta és una capacitat necessària per tal de poder realitzar una pràctica de manera autònoma.

Nota: es reservaran 15 minuts d'una classe, dins del calendari establert pel centre/titulació, per a la complementació per part de l'alumnat de les enquestes d'avaluació de l'actuació del professorat i d'avaluació de l'assignatura/mòdul.

Activitats formatives

Títol Hores ECTS Resultats d'aprenentatge
Tipus: Dirigides      
Classes de teoria 22 0,88 1
Tipus: Supervisades      
Laboratoris 12 0,48 1, 2, 3, 4, 5
Seminaris 12 0,48 1, 3, 4, 5
Tipus: Autònomes      
Estudi proves d'avaluació 60 2,4 1
Preparació laboratoris 24 0,96 1, 4, 5
Preparació seminaris 14 0,56 1, 4

Avaluació

La nota final de l'assignatura ve donada per la fórmula: Nota = 0.45*NTeo + 0.55*NLab,

NTeo és la nota de Teoria, i NLab la nota de laboratoris. Cadascuna de les notes NTeo i NLab han de ser superiors a 5, en cas contrari la qualificació final de l'assignatura serà el valor mínim d'aquestes dues. El valor de Nota només es calcularà en cas que NTeo i NLab siguin ambdues superiors a 5. En cas que no sigui així, el valor de Nota serà el valor mínim de NTeo i NLab.

La nota NTeo és

NTeo = 0.5*NTeo1 + 0.5*NTeo2

on NTeo1 i NTeo2 són dos activitats d'avaluació que es realitzaran al llarg del curs en horaris de sessions de teoria. El valor de NTeo només es calcularà en cas que NTeo1 i NTeo2 siguin ambdues superiors a 4. En cas que no sigui així, es considera que el valor de NTeo és el valor mínim de NTeo1 i NTeo2. Si NTeo no és superior a 5 després de realitzar les dues proves NTeo1 i NTeo2, l'alumne es podrà tornar a avaluar de NTeo1 i/o NTeo2 durant les proves d'avaluació final. En les proves d'avaluació final, cadascuna de les notes NTeo1 i NTeo2 es saturaran en un valor de 6

En el mateix moment de publicació de cada avaluació es donarà un període per a revisar la nota. Es respectaran escrupolosament els períodes de revisió de qualificacions, és a dir, no es revisarà cap qualificació fora d’aquest període de revisió de nota.

La nota NLab serà una mitja ponderada de les diferents sessions de laboratori NLab(i).

NLab = w1*NEntr1 + w2* NEntr2

on NEntr(i) és la nota individual de cada una de les dues entregues de pràctiques (previsiblement a les sessions de laboratori 3i 6 del curs, respectivament), i w1 i w2 son els pesos de cada entrega (eks valors s'anunciaran a principi de curs). El càlcul d’aquestes notes està especificat en l’enunciat de cada pràctica (que es publicarà a les aules Moodle)

No hi ha segona convocatòria per a la nota NLab ni per cap de les notes NLab(i). El valor de NLab només es calcularà en cas que totes i cadascuna deNLab(i) siguin iguals o superiors a 0,1. En cas contrari NLab serà el valor mínim d'entre tots els valors NLab(i).

L'ordre d'assignació als grups de pràctiques es realitzarà segons la nota de l'expedient acadèmic.

Es convalidarà la nota NLab d'aquells alumnes que hagin cursat l'assignatura en un màxim d'un curs anterior. No es convalidarà cap altra nota. La nota de convalidació serà un 5.

Un alumne obtindrà un "No Avaluable" com a qualificació final de l'assignatura únicament en el cas que no obtingui cap qualificació en cap de les variables que apareixen en les fórmules matemàtiques anteriors. Si un alumne presenta algun treball per avaluar o realitza alguna de les activitats d'avaluació que es contemplen en les fórmules anteriors, ja no podrà obtenir un "No Avaluable".

Per obenir una Matrícula d'Honor cal, com a requisit obligatori, obtenir una qualificació final de Excel·lent.

Les dates d'avaluació continuada i lliurament de treballs es publicaran al campus virtual (CV) o aules Moodle (MO) i poden estar subjectes a canvis de programació per motius d'adaptació a possibles incidències. Sempre s'informarà al CV/MO sobre aquests canvis ja que s'entén que el CV/MO és el mecanisme habitual d'intercanvi d'informació entre professor i estudiants.

Sense perjudici d'altres mesures disciplinàries ques'estimin oportunes, i d'acord amb la normativaacadèmica vigent, les irregularitats comeses per un estudiant que puguin conduir a una variacióde la qualificació es qualificaran amb un zero (0). Per exemple, plagiar, copiar, deixar copiar, ..., una activitat d'avaluació, implicarà suspendre aquesta activitat d'avaluació amb un zero (0). Les activitats d'avaluació qualificades d'aquesta forma i per aquest procediment no seran recuperables. Siés necessari superar qualsevol d'aquestes activitats d'avaluació peraprovar l'assignatura, aquesta assignatura quedarà suspesa directament amb una qualficació de zero (0), sense oportunitat de recuperar-la en el mateix curs.

Aquestes irregularitats inclouen, entre d'altres:

  • la còpia total o parcial d'una pràctica, informe, o qualsevolaltra activitat d'avaluació;
  • deixar copiar;
  • presentar un treball de grup no fet íntegrament pels membres del grup (aplicat  a tots  els membres, no solament als que no han treballat);
  • presentar com a propis materials elaborats per un tercer, encara que siguin traduccions o adaptacions, i en general treballs amb elements no originals i exclusius de l'estudiant;
  • tenir dispositius de comunicació (com telèfons mòbils, smart watches, bolígrafs amb càmera, etc.) accessibles durant les proves d'avaluació teorico-pràctiques individuals (exàmens);
  • parlar amb companys durant les proves d'avaluació teorico-pràctiques individuals (exàmens);
  • copiar o intentar copiar d'altres alumnes durant les proves d'avaluació teorico-pràctiques (exàmens);
  • usar o intentar usar escrits relacionats amb la matèria durant la realització de les proves d'avaluació teorico-pràctiques (exàmens), quan aquests no haginestat explícitament permesos.

A un estudiant que hagi comès irregularitats en un acte d'avaluació no se li convalidarà cap de les activitats d'avaluació realitzades. En resum: copiar, deixar copiar o plagiar (o l'intent de) en qualsevol de les activitats d'avaluació equival a un SUSPENS, no compensable i sense convalidacionsde parts de l’assignatura en cursos posteriors.

Activitats d'avaluació

Títol Pes Hores ECTS Resultats d'aprenentatge
Avaluació Laboratoris 0.55 0 0 1, 2, 3, 4, 5
Avaluació continuada individual Teoria 1 0.225 3 0,12 1
Avaluació continuada individual Teoria 2 0.225 3 0,12 1

Bibliografia

Entre [ ] els temes que cobreixen.


[1] A Software Testing Primer: an Introduction to Software Testing. Nick Jenkins. http://www.nickjenkins.net Lectura obligada!
[1,2,3,5,6] Manage Software Testing. Peter Farrell-Vinay. Auerbach Publications, 2008.
Esta bé la part ded ocumentació i planning, però la de tècniques de prova no gaire potser.
[1,3,4] A practitioner's guide to software testing. Lee Copeland, 2004.
Llibret molt senzill i breu (potser massa), enfoc pràctic.
[4] How to break software: a practical guideto testing. James A. Whittaker. Addison Wesley, 2003.
El llibre sobre prova exploratòria.
[5] Pragmatic Unit Testingin Java with Junit. Andy Hunt, Dave Thomas.The Pragmatic Programmer, 2003.
[6] IEEE Standard for Software and System Test Documentation IEEE Std82-2008. IEEE Computer Society, 2008.
[6] Systematic Software Testing by. RickD. Craig, Stefan P.Jaskiel. ArtechHouse, 2002.
El millor llibre que he trobat sobre planificació de proves. Inclou una explicació de l'estàndard IEEE de documentació.
[7] Llibre EUIS, veure a dalt.
[8] Why the Vasa sank: 10 problems and some antidotes for software projects. Richard E. Fairley, Mary Jane Willshire. IEEE Software, març-abril 2003.
Lectura molt interessant i divertida.
[9]Video “Scenes of software inspections. Video dramatizations for the classroom.” L.Deimel.Software Engineering Institute,CMU/SEI-91-EM-5-0,1991.
Thinking i Java, 3rd edition. B. Eckel. Versió electrònica a http://www.planetpdf.com/ . Versió impresa en castellà de Pearson Educación, 2002.
Llibre de referència per programació en Java (pràctica).

 

[5] https://testautomationu.applitools.com/junit5-tutorial/ Tutorial sobre JUnit.

[5] https://testautomationu.applitools.com/unit-testing/index.html Introducció al Unit Testing.

[5] https://site.mockito.org/ Paquet per implementar mock object.

[7] https://testautomationu.applitools.com/codeless-test-automation-with-selenium-ide/ Tutorial sobre selenium

[7] https://testautomationu.applitools.com/cucumber-java-tutorial/ Tutorial sobre cucumber.

Programari

JUnit (https://junit.org/junit5/)

Bugzilla (https://www.bugzilla.org/)

Jira (https://www.atlassian.com/software/jira)

Selenium (https://www.selenium.dev/)

Cucumber (https://cucumber.io/)

GitHub/GitLab (https://github.com/) (https://about.gitlab.com/)