Automatiza pruebas QA con Java | Parte 3: API de Google Sheet

4 min read
21 de junio de 2023

El manejo de documentos de Google Sheets es importante en un proyecto de automatización de pruebas de software. A continuación explicaremos por qué son tan importantes y te mostraremos cómo integrar Google Sheets en tus pruebas automatizadas. Si quieres aprender más sobre automatización de pruebas QA con java antes,  puedes consultar nuestra anterior entrega de esta serie de artículos en la que hablamos sobre el manejo de archivos properties. 

Google Sheets proporciona una forma conveniente de almacenar y manipular datos tabulares, lo que es especialmente útil para casos de prueba y resultados de pruebas. La integración de Google Sheets en el flujo de trabajo de automatización de pruebas permite almacenar y organizar los datos de prueba de manera estructurada. Esto facilita la reutilización de datos para diferentes escenarios de prueba, así como la generación dinámica de datos de prueba en función de ciertos criterios.

Además, el uso de Google Sheets simplifica la colaboración entre miembros del equipo de QA al permitirles compartir y actualizar fácilmente los documentos de prueba. Esto ayuda a mantener la consistencia de los datos utilizados en las pruebas y a garantizar que todos los miembros del equipo estén trabajando con la misma información actualizada. Por otro lado, la capacidad de leer y escribir en documentos de Google Sheets mediante código automatizado proporciona una forma eficiente de verificar los resultados de las pruebas y realizar comparaciones. Esto permite la verificación de resultados esperados y la detección temprana de discrepancias o errores en los datos recopilados durante las pruebas automatizadas.

En resumen, el manejo de documentos de Google Sheets en un proyecto de automatización de pruebas de software facilita la organización, colaboración y verificación de datos de prueba, lo que contribuye a un proceso de pruebas más eficiente y efectivo.

¿Cómo usar Google Sheet en tus pruebas de software?

Para manejar los archivos de Google Sheets tendremos una clase de utilidad que podemos llamar por ejemplo ‘GoogleSheetReader’. Esta clase contendrá el método público ‘read’ y los métodos privados ‘getSheetService’ y ‘authorize’.

La estructura general de la clase se muestra a continuación:

package utils;
import ...

public class GoogleSheetsReader {
    private static final String APPLICATION_NAME = "Google Sheets";

    public static List<List<Object>> read(String spreadSheetId, String range) throws GeneralSecurityException, IOException {
        .

        .
    }

    private static Sheets getSheetsService() throws  IOException, GeneralSecurityException{
        .

        .
    }

    private static Credential authorize () throws IOException, GeneralSecurityException{
        .

        .
    }
}


El método público es el de lectura del documento y recibe por parámetros el id del documento y el rango de de celdas que queremos leer (celdaDondeComienza : celdaDondeTermina). Este método obtiene una instancia del documento, para lo cual hace uso del método privado ‘getSheetsService’, y tras leer el mismo responde a su llamado con una lista de registros leídos. Su desarrollo se muestra a continuación.

public static List<List<Object>> read(String spreadSheetId, String range) throws GeneralSecurityException, IOException {
        Sheets sheetsService;
        sheetsService = getSheetsService();

        ValueRange response = sheetsService.spreadsheets().values()
                .get(spreadSheetId, range)
                .execute();

        return response.getValues();
    }


En el método público de lectura observamos el uso del método privado ‘getSheetsService’, el cual se encarga de construir una instancia de Sheets y se detalla a continuación.

private static Sheets getSheetsService() throws  IOException, GeneralSecurityException{
        Credential credential = authorize();
        return new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(),GsonFactory.getDefaultInstance(), credential).setApplicationName(APPLICATION_NAME).build();
}


Por último, en el método ‘getSheetsService’ observamos el uso del método también privado  ‘authorize’, el cual tiene como tarea obtener las credenciales necesarias para autenticar una conexión con una API de Google Sheets. De dicha API debemos obtener un archivo .json de credenciales el cual será necesario para la autenticación (al final encontrarás un procedimiento de como obtener las credenciales).  El método se detalla a continuación a continuación 

private static Credential authorize () throws IOException, GeneralSecurityException{

        InputStream in = GoogleSheetsReader.class.getResourceAsStream("/credenciales.json");
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(GsonFactory.getDefaultInstance(), new InputStreamReader(in));

        List<String> scopes = Arrays.asList(SheetsScopes.SPREADSHEETS_READONLY);

        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), clientSecrets, scopes)
                .setDataStoreFactory(new FileDataStoreFactory(new File("CredencialesUser")))
                .setAccessType("offline")
                .build();

        return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");

}


Un ejemplo del uso de la utilidad para obtener un dato de un documento se muestra a continuación, donde se tiene un método dentro de una prueba automatizada con Serenity y POM en donde se debe ingresar en un campo de texto de una página web una frase contenida en un documento de Google Sheet.

public void readSheetAndWriteOnSearchField(Integer rowNumber){
        String valueToSearch;
        String range = UtilConstants.NAME_HOJA + "!" + UtilConstants.RANGE;
        List<List<Object>> values = null;
        try {
            values = GoogleSheetsReader.read(UtilConstants.SPREADSHEET_ID,range);
            if (values == null || values.isEmpty()) {
                throw new RuntimeException("No hay datos en el documento.");
            }
        } catch (GeneralSecurityException | IOException e) {
            throw new RuntimeException("No se leyó el documento, error: "+ e.getMessage());
        }
        try {
            valueToSearch = String.valueOf((values).get(rowNumber).get(0));
        }catch (Exception e){
            throw new RuntimeException("registro(s) vacío(s), error: "+e.getMessage());
        }
        enter(valueToSearch).into(SEARCH_FIELD);
}

 

Cinco pasos para obtener credenciales API de Google Sheets

Para obtener credenciales de API de Google Sheets, debes seguir los siguientes pasos:


1. Crear un proyecto en la Consola de APIs de Google:

  • Ve a la [Consola de APIs de Google] (https://console.developers.google.com/).
  • Haz clic en "Seleccionar proyecto" y luego en "Crear proyecto".
  • Asigna un nombre al proyecto y haz clic en "Crear".

2. Habilitar la API de Google Sheets:

  • En la página de inicio de la Consola de APIs de Google, haz clic en "Explorar y habilitar APIs".
  • Busca "Google Sheets API" y haz clic en el resultado.
  • Haz clic en "Habilitar" para habilitar la API en tu proyecto.

3. Configurar el consentimiento del proyecto:

  • VEn la página de inicio de la Consola de APIs de Google, haz clic en "Configurar consentimiento OAuth".
  • Selecciona "Aplicación externa" y haz clic en "Crear".
  • Ingresa un nombre para la aplicación y específica el correo electrónico de contacto.
  • Haz clic en "Guardar y continuar".
  • En la sección "Ámbitos del proyecto", agrega el ámbito `https://www.googleapis.com/auth/spreadsheets`..
  • Haz clic en "Guardar y continuar".
  • Completa los pasos adicionales requeridos para configurar el consentimiento según tus necesidades.

4. Crear credenciales de API:

  • En la página de inicio de la Consola de APIs de Google, haz clic en "Crear credenciales" y selecciona "ID de cliente de OAuth".
  • Selecciona "Aplicación de escritorio" o "Aplicación web" según tu caso.
  • Ingresa un nombre para la credencial y especifica las URIs de redireccionamiento autorizadas (para aplicaciones web) o deja en blanco (para aplicaciones de escritorio).
  • Haz clic en "Crear".

5. Descargar las credenciales:

  • En la página de la credencial que creaste, haz clic en el ícono de descarga para obtener el archivo JSON con las credenciales.
  • Guarda el archivo JSON en un lugar seguro en tu sistema.

Una vez que hayas obtenido las credenciales de API, podrás utilizarlas en tu aplicación o script para interactuar con la API de Google Sheets. Asegúrate de seguir las mejores prácticas de seguridad para proteger las credenciales y evitar divulgarlas públicamente.

Para seguir aprendiendo, consulta ya la cuarta parte de esta serie de artículos. En ella te enseñaremos cómo utilizar bases de datos en tus pruebas de calidad de software. 

También te invitamos a consultar nuestro micrositio de carrera donde encontrarás información importante sobre nuestras vacantes de trabajo y la cultura empresarial que hace que trabajar en Pragma sea una experiencia única.

 

scrum_metodologia_agil_ebook

 

Suscríbete al
Blog Pragma

Recibirás cada mes nuestra selección de contenido en Transformación digital.

Imagen form