In teoria, i programmi o gli strumenti di Test Automation dovrebbero rendere le cose più facili per i tester, il tempo libero e fornirci un'ulteriore coperta di relax per la nostra copertura di valutazione.
E così tante organizzazioni non riescono a implementare un'infrastruttura di Test Automation scalabile, forte e valida che restituisca le risorse investite e potrebbe salvarle. Alcuni lavori di automazione dei test scritti "buttano via" e altri sono stati sostenuti in una lotta continua con i loro obiettivi per ottenere una suite di automazione stabile.
Nel corso degli anni ho osservato molte aziende che cercavano di eseguire i loro sforzi di automazione, ho osservato progetti scritti buttati via, framework cambiati e manager licenziati perché non riuscivano a fornire ciò che era stato promesso o fissato come obiettivo.
Ci sono molte ragioni per il fallimento, sebbene l'automazione abbia perfettamente senso a lungo termine, dobbiamo capire che è molto più difficile come sembra.
Di seguito sono riportati alcuni dei motivi che devi conoscere prima di andare avanti e iniziare a creare il tuo progetto di automazione dei test:
Analizza e fai domande: un lavoro di automazione del test è un lavoro come qualsiasi altro progetto di applicazioni e dovrebbe essere trattato come tale; Come elaborereste la pianificazione di un progetto software? Lascia che questa idea ti guidi quando pensi di implementare il tuo progetto di Test Automation. Chi sceglieresti per il lavoro? Chi utilizzerà il prodotto realizzato? Quale lingua o framework è il più adatto per il lavoro? Capiresti dalle sfide e dalle loro linee guida e daresti una sbirciatina? Comporrai un'architettura di cui non sai nulla da solo o chiameresti un consulente per consigliarti con alcune riflessioni?
Tutte queste domande sono semplicemente la punta di questo iceberg di ciò che dovresti chiederti prima di scrivere una riga di codice o anche di testare la situazione.
Skillset inadeguato: permettimi di farti una domanda. Consentiresti a un programmatore peggiore o inesperto, qualcuno che non capisce come comporre un ottimo codice pulito e ricercabile - modella il design della tua app e lo scrive da zero? Penso che la risposta sia no. Allora perché così tante aziende pensano che la qualità potrebbe essere implementata da qualcuno nell'infrastruttura di Evaluation Automation senza l'esperienza e le competenze? Se il personale dedicato non ha esperienza e conoscenza e non hai intenzione di assumere qualcuno che lo possiede, allora devi pensare a utilizzare strumenti di automazione senza codice.
Aspettative / approccio irrealistici: lo dividerò in due parti. La prima è una comprensione errata del ROI (ritorno sull'investimento) dell'automazione dei test e la seconda componente è un quadro di aspettative non realistiche per tempo. C'è un lavoro buono come quello fatto da te, e non puoi aspettarti qualcosa senza investire tempo, per fornire valore. Ho parlato con un QA Engineer che mi ha detto che ha ottenuto 6 ore settimanali per comporre un'infrastruttura sotto copertura. Cosa dovresti aspettarti che raggiunga 6 ore?
Per fare questo lavoro è necessario informarsi:
- Quali sono esattamente gli obiettivi che desideri raggiungere insieme alla tua automazione dei test?
- Quale potrebbe essere considerato un valore fantastico per gli sforzi / il tempo?
- Quali sono i criteri per il raggiungimento?
- Quanto tempo / denaro sei disposto a spendere per realizzarlo?
L'automazione non è un compito "Lancia e dimentica". Vuoi riconoscere che si tratta di un processo continuo che richiede manutenzione, uno sforzo di gruppo e avanzamento.
Devo ammettere che, purtroppo, da quello che ho visto, alcune aziende ritengono che fornire un QA Engineer un lavoro sotto copertura sia solo un modo per preservare un lavoratore o aggiungere un po 'di " pepe " alla sua routine settimanale. Non fraintendetemi, non sto dicendo che non dovremmo conservare i nostri lavoratori o fornire loro il tempo per imparare e progredire, sto solo dicendo che dovrebbe essere in linea con le aspettative che sono realistiche e la trasparenza nei confronti del lavoratore, quello stesso .
Pianificazione insufficiente: un fantastico progetto di automazione deve iniziare con un piano e un piano di alto livello, che si svilupperà in uno stile tecnico completo. Anche la strategia "taglia unica" può essere catastrofica per il tuo successo. Ciò che ha funzionato bene per una singola azienda non significa necessariamente che avrebbe fatto il lavoro per te. Quell'annuncio può essere vero riguardo alla scelta di uno strumento. Ogni volta che non è necessario utilizzare effettivamente la tecnologia in questione, si parla di buzz. Questo è estremamente importante da notare. Esiste un gran numero di strumenti open source e commerciali in grado di fornire un rapporto qualità-prezzo elevato e senza nemmeno considerare le alternative ei vantaggi / alternative che questi strumenti possono offrire. Scegli uno strumento che soddisfi le tue esigenze. Ecco i miei due centesimi: è molto meglio pagare per una soluzione piuttosto che sprecare un sacco di volte (questo aumenterà fino a essere molto più costoso del cartellino del costo del programma).
Ora, mentre continuiamo a discutere il modo di pianificare il nostro design, dovremo pensare alla nostra architettura tecnica a tutto tondo e ai requisiti aziendali. Ecco solo alcuni degli aspetti da tenere in considerazione:
- Immagina posti di lavoro, moduli, flussi aziendali che le persone esaminerebbero?
- Qual è la politica pianificata per ciascuna fase di esecuzione? (Sanity, Regression, pacchetto dedicato CI / CD?)
- Quali sono i principali flussi / funzionalità condivisi / comuni / ripetuti?
- Come pianifichiamo ogni test per un breve artefatto autonomo? (SetUp e TearDown, dipendenza da dati esterni invece di dati di valutazione generati, cosa deve essere eseguito prima di ogni test, classe suite?)
- Come possiamo evitare che una valutazione "rompa" un'altra se viene eseguita in simultanea?
- Come possiamo produrre una buona atmosfera scalabile, pulita e appropriata? (Server fittizi, casi di database, script di pulizia, preferenze del browser, configurazioni di rete / server, installazione e pulizia, ambiente virtuale o contenitori docker)
- Cosa costruiamo esattamente strumenti se usiamo?
- Esattamente come potrebbero essere gestite le nostre dipendenze?
- Dove è archiviato il nostro progetto?
- Quanti ingegneri stanno lavorando al progetto e il modo in cui verrebbe gestita la gestione delle varianti?
- Quali strumenti CI sono i migliori per eseguire le nostre build?
- Implementerai il flusso di lavoro CI / CD?
- Dove eseguirai i test e le risorse che puoi utilizzare per progettare la tua piattaforma di esecuzione? (Ti vengono forniti i fondi per acquistare i permessi per le soluzioni cloud? Disponi degli strumenti o del supporto per creare la tua infrastruttura Selenium Server?)
- Esattamente che tipo di test saranno presto automatici? (API, concetti visivi, processi server, automazione Web / interfaccia utente, dispositivi mobili - Android / IOS).
- Esistono raccolte di dati di grandi dimensioni, flussi lunghi, processi complicati, integrazioni che richiederebbero una valutazione aggiuntiva?
- Cosa dovremmo testare attraverso la GUI e cosa potrebbe essere più sicuro da controllare tramite l'API?
- Esattamente quali log, meccanismi di reporting, gestori e listener dovremo implementare in modo da rendere più semplice la valutazione della causa principale e il debug? (Cos'è una suite di automazione di un'ora se dedichi una giornata alla comprensione del risultato?)
- Quali metriche / report / output dovrebbero fornire le serie?
- Esattamente quali integrazioni vogliamo veramente? (Programmi di reportistica, Strumenti ALM, Bug Tracker, Programmi di gestione della valutazione).
- Chi può comporre l'infrastruttura e chi dovrebbe implementare i test? (Può esserci anche un ramo tra entrambi?)
- Chi è responsabile di offrire agli ingegneri dell'automazione i flussi di business / casi di test / logica di business che si suppone siano automatici?
- Esistono fasi POC (Proof of concept) definite per determinare gli obiettivi futuri?
Queste sono solo alcune delle domande in poche parole e quello che dovresti togliere da questo è quello
È probabile che uno strumento adatto, una pianificazione / progettazione superiore produca la differenza tra fallimento e successo.
Automatizzare tutto : un punto importante da notare è che non ciò che può o deve essere automatico. A volte la percezione o le decisioni di gestione sbagliate, automatizziamo tutto ciò che arriva alla testa del tester o convertiamo ciecamente i casi di test in script. Prima di tutto, non tutte le valutazioni sono appropriate per l'automazione. In secondo luogo, gli stessi casi di prova non sono accettabili per il lavoro. Questo finisce in un mucchio di test automatici impossibile da mantenere e purtroppo la maggior parte delle occasioni porterà a segnare gran parte del nostro lavoro scritto. Non c'è alcun valore aggiuntivo nell'automazione se la tua azienda non ha i fondi per mantenere i team di automazione decine di migliaia di istanze di test che occasionalmente controllano la stessa logica di business.
Avremo anche bisogno di produrre un piano chiaro su ciò che deve mantenere ogni build di automazione. Cosa è incluso nella nostra regressione? Cosa viene descritto come la nostra sanità mentale? Cosa è abbastanza sicuro e affidabile per entrare nella nostra pipeline CI / CD?
L'automazione del test richiede una solida pianificazione, comprensione, impegno e dedizione per fornire un valore appropriato.
Mancanza di competenze / istruzione adeguata, scelta degli strumenti errata, risorse insufficienti, mancanza di preparazione adeguata, anticipazione irrealistica, tutte cose che possono far fallire un progetto.
Spero che questa relazione abbia un impatto positivo e aiuti alcuni di voi a seguire una mentalità produttiva.