Entornos de desarrollo

1º DAM/DAW - Curso 2026-2027

User Tools

Site Tools


apuntes:testing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:testing [2026/09/27 22:41] – [API Testing con Postman] Santiago Faciapuntes:testing [2026/09/28 22:10] (current) – [Test de integración] Santiago Faci
Line 8: Line 8:
 ===== Test unitarios ===== ===== Test unitarios =====
  
 +Se implementan para testear la unidad mínima de código, que normalmente serán funciones o métodos, de forma totalmente aislada del resto de la aplicación.
 ==== Clases de utilidad ==== ==== Clases de utilidad ====
  
Line 128: Line 129:
  
 ===== Test de integración ===== ===== Test de integración =====
 +
 +En este caso escribimos tests que permitan probar varios componentes juntos para verificar que trabajan bien cuando interactuan entre si.
  
   * Caso de uso: **Ok (200 OK)**   * Caso de uso: **Ok (200 OK)**
Line 316: Line 319:
 </code> </code>
  
-Puedes encontrar una colección de ejemplo ya preparada con algunos scripts, lista para ser ejecutada con Newman [[https://github.com/codeandcoke/games/blob/main/games.yaml|aqui]]+Puedes encontrar una colección de ejemplo ya preparada con algunos scripts, lista para ser ejecutada con Newman [[https://github.com/codeandcoke/cities-api/blob/main/cities.postman_collection.json|aqui]]
  
 ===== API testing con Postman automatizado con GitHub Actions ===== ===== API testing con Postman automatizado con GitHub Actions =====
Line 325: Line 328:
  
 <code yaml> <code yaml>
-FROM eclipse-temurin:21-jdk-alpine +FROM node:22-alpine 
-VOLUME /tmp +WORKDIR /usr/src/app 
-EXPOSE 8080 +COPY package*json ./ 
-COPY target/games-0.1.jar app.jar +RUN npm ci --only=production 
-ENTRYPOINT ["java", "-jar", "app.jar"]+COPY . . 
 +EXPOSE 3000 
 +ENV NODE_ENV=production 
 +CMD ["node", "src/app.js"]
 </code> </code>
  
Line 337: Line 343:
  
 <code yaml> <code yaml>
-name: games+version: "3.4" 
 +name: cities
 services: services:
-  games-db:+  db:
     image: mariadb:11.3.2     image: mariadb:11.3.2
-    container_name: games-db +    container_name: cities-db
-    restart: always+
     environment:     environment:
-      MYSQL_USER: games_user +      MARIADB_USER: 'user' 
-      MYSQL_PASSWORD: games_password +      MARIADB_PASSWORD: 'password' 
-      MYSQL_DATABASE: games +      MARIADB_PORT: 3306, 
-      MYSQL_PORT: 3306 +      MARIADB_ROOT_PASSWORD: 'rootpassword' 
-      MYSQL_ROOT_PASSWORD: test_root_password +    volumes: 
-    ports: +      - ./db:/docker-entrypoint-initdb.d
-      - "3306:3306"+
     healthcheck:     healthcheck:
-      test: [ CMD, healthcheck.sh, --connect, --innodb_initialized ] +      test: [ CMD, healthcheck.sh, --connect, --innodb_initialized] 
-      interval: 5s +      interval: 10s 
-      timeout: 3s+      timeout: 5s
       retries: 3       retries: 3
     networks:     networks:
-      - network-games +      - network1 
-  games-api: +  backend: 
-    image: games-api +    image: cities-be 
-    container_name: games-api+    container_name: cities-api
     ports:     ports:
       - "8080:8080"       - "8080:8080"
     depends_on:     depends_on:
-      games-db:+      db:
         condition: service_healthy         condition: service_healthy
-    environment: 
-      SPRING_APPLICATION_JSON: '{ 
-        "spring.application.name": "games", 
-        "sever.port": "8080", 
-        "spring.jpa.hibernate.ddl-auto": "update", 
-        "spring.jpa.properties.hibernate.globally_quoted_identifiers": "true", 
-        "spring.datasource.url": "jdbc:mariadb://games-db:3306/games", 
-        "spring.datasource.username": "games_user", 
-        "spring.datasource.password": "games_password", 
-        "spring.jpa.database-platform": "org.hibernate.dialect.MariaDBDialect" 
-      }' 
     networks:     networks:
-      - network-games+      - network1 
 +  frontend: 
 +    image: cities-fe 
 +    container_name: cities-ui 
 +    ports: 
 +      - "1234:1234" 
 +    networks: 
 +      - network1
 networks: networks:
-  network-games: +  network1: 
-    driver: bridge +    driver: bridge</code>
-</code>+
  
 ==== GitHub action ==== ==== GitHub action ====
Line 399: Line 399:
     branches:     branches:
       - main       - main
-      - develop 
  
 jobs: jobs:
   newman:   newman:
     runs-on: ubuntu-latest     runs-on: ubuntu-latest
 +    
 +    strategy:
 +      matrix:
 +        node-version: [20.x, 22.x, 24.x]
 +    
     steps:     steps:
       - uses: actions/checkout@master       - uses: actions/checkout@master
-      - uses: actions/setup-java@v5+      - uses: actions/setup-node@v4
         with:         with:
-          distribution: 'temurin' +          node-version: ${{ matrix.node-version }} 
-          java-version: '21' +          cache: 'npm' 
-      - run: mvn package +      - run: npm install 
-      - run: docker build -t games-api .+      - run: docker build -t cities-api .
       - run: docker compose up -d       - run: docker compose up -d
       - run: npm install -g newman       - run: npm install -g newman
-      - run: newman run games.postman_collection.json -e local.postman_environment.json+      - run: newman run cities.postman_collection.json -e local.postman_environment.json
 </code> </code>
  
apuntes/testing.1790548871.txt.gz · Last modified: by Santiago Faci