Domanda

Non riesco a credere di essere la prima persona a passare attraverso questo processo di pensiero, quindi mi chiedo se qualcuno possa aiutarmi.

Situazione attuale: gli sviluppatori scrivono un sito Web, le operazioni lo distribuiscono. Una volta distribuito, uno sviluppatore lo mette alla prova, per assicurarsi che la distribuzione sia andata senza intoppi.

Per me questo sembra sbagliato, significa essenzialmente che ci vogliono due persone per distribuire un'applicazione; Nel nostro caso quelle due persone si trovano sui lati opposti del pianeta e le zone del tempo entrano in gioco, causando il caos. Ma resta il fatto che gli sviluppatori sanno qual è il set minimo di test e che potrebbe cambiare nel tempo (in particolare per la parte del servizio Web della nostra app). Le operazioni, con tutto il rispetto per loro (e lo direbbero da soli), sono i pulsanti che hanno bisogno di una serie di istruzioni da seguire.

La soluzione manuale è che documentiamo i casi di test e le operazioni seguono quel documento ogni volta che distribuiscono. Sembra doloroso, inoltre potrebbero distribuire versioni diverse in ambienti diversi (in particolare UAT e produzione) e potrebbero aver bisogno di una diversa serie di istruzioni per ciascuno.

Inoltre, uno dei nostri piani quasi futuri è quello di avere un ambiente di distribuzione giornaliero automatizzato, quindi dovremo istruire un computer su come distribuire una data versione della nostra app. Vorrei molto aggiungere a quelle istruzioni su come fumare testare l'app.

Ora gli sviluppatori sono più bravi a documentare le istruzioni per i computer che per le persone, quindi la soluzione ovvia sembra essere quella di utilizzare una combinazione di nunit (so che questi non sono test unitari di per sé, ma è un test costruito per scopi Runner) e le API Watin o Selenium per eseguire gli ovvie passaggi del browser e chiamare al servizio Web e spiegare alle operazioni ai ragazzi come eseguire quei test unitari. Posso farlo; L'ho già fatto per lo più.

Ma non sarebbe bello se potessi rendere questo processo ancora più semplice?

A questo punto, i ragazzi delle operazioni e il computer dovranno sapere quale insieme di test si riferiscono a quale versione dell'app e raccontano al corridore NUNIT a quale URL di base dovrebbe indicare (diciamo, www.example.com = V3. 2 o test.example.com = v3.3).

Non sarebbe più bello se lo stesso Test Runner avesse un modo per dargli un URL di base e lasciarlo a scaricare dire un file zip, disimballare e modificare automaticamente un file di configurazione prima di eseguire eventuali apparecchi di prova che trovava lì?

C'è un'app open source che lo farebbe? Ce n'è bisogno di uno? Esiste una soluzione che usa qualcosa di diverso da NUNIT, forse Fitnesse?

Per la cronaca, sto guardando prima gli strumenti basati su .NET perché la maggior parte degli sviluppatori sono principalmente sviluppatori .NET, ma non ci siamo sposati. Se esiste un tale strumento utilizzando altre lingue per scrivere i test, ci adatteremo felicemente, purché ci sia un runner di test che funziona su Windows.

È stato utile?

Soluzione 7

Dopo molto tempo sprecato cercando di inventare una soluzione più semplice, alla fine abbiamo pensato al team OPS come utilizzare la GUI Runner di NUNIT. Questo è stato più facile del previsto e funziona bene.

Altri suggerimenti

Ho lavorato in uno scrittore di test del fumo per un'applicazione ASP.NET. Abbiamo usato Quicktest Pro, l'automazione delle prove è stata eseguita con Centro di qualità (Si chiamava Test Director.). Ciò ha comportato la scrittura di centinaia di script di prova che automatizzano un browser Web che interagisce con l'applicazione Web. Questi test utilizzati convalidano una build prima di lanciarla sui nostri server di produzione. Il centro di qualità consente di definire un "pool" di macchine di prova per consentire di eseguire un ampio elenco di script di prova in modo multi-thread.

Un test di fumo più semplicistico sarebbe quello di registrare tutti gli errori/eccezioni che l'applicazione produce ed esegue un ragno contro il sistema. Ciò non otterrà una copertura del codice molto "profonda", ma i test di fumo non sono pensati per la copertura del codice profondo. Questa registrazione di errori dovrebbe essere parte dell'applicazione di produzione per affrontare gli errori man mano che si presentano. I bug scivoleranno sempre anche se le crepe e tristemente i migliori tester saranno i tuoi utenti.

In passato ho usato il selenio per eseguire questo tipo di test di fumo per le distribuzioni Web. È possibile scrivere una suite di script di prova e quindi eseguire lo stesso sito in ambienti diversi.

Ho anche pensato a questa sequenza e ho proposto di adottare un approccio dichiarativo allo spiegamento e alla verifica, vedi qui per i miei pensieri,

http://jimblogdog.blogspot.co.uk/2010/10/introducingdeclarative-deployment.html

Ho anche creato alcuni plugin al mio progetto open source Wolfpack per automatizzare l'intero processo. Essenzialmente pacchi i tuoi "test di fumo di distribuzione" come pacchetto Nuget e lo pubblichi al tuo feed privato Nuget. Wolfpack rileverà automaticamente la nuova versione del pacchetto e lo scaricherà, insieme al pacchetto Nunit.Runner Nuget e disimballa tutti i file. Eseguirà quindi silenziosamente i test utilizzando il corridore della console NUNIT e analizzerà i risultati in un avviso che puoi ricevere tramite e -mail, ringhio, hipchat ecc.

http://wolfpack.codeplex.com/

http://wolfpackcontrib.codeplex.com/wikipage?title=NUnitDeploymentPublisher

Telerik ha alcuni strumenti di test dell'interfaccia utente gratuiti e non gratuiti che possono essere eseguiti in modo automatizzato da chiunque possa aiutare anche con questo.

Non so quali VC stai utilizzando, ma potresti scrivere una soluzione che estrae un file di configurazione specifico per la versione dal VCS attraverso un servizio intermedia.

È possibile scrivere uno script PowerShell o un'applicazione che scaricherebbe il file di configurazione da un servizio Web o app Web, passando l'URL di prova come parametro. I server o l'app sarebbero in esecuzione su una macchina con accesso ai VC, quindi potrebbe restituire il contenuto del file. Una volta recuperato, lo script o l'app potrebbero quindi avviare i test.

In genere, i test di nunit sono sufficienti che se passano tutti, la base di codice dovrebbe funzionare bene. Se si distribuisce il codice, con il superamento dei test di nunit e riscontra un fallimento sul sito Web, è necessario aggiungere anche una nunit aggiuntiva che fallisce, per lo stesso motivo. Quindi, quando si fissa il codice in modo tale che la NUNIT stia passando, sai di aver risolto il problema che ha il codice distribuito. Per questo motivo, la maggior parte dei sistemi di build automatici può essere configurato per eseguire prima tutti i test di nunit, quindi "fallire" la build se uno qualsiasi dei test fallisce.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top