UAT, Software Factory e Fitnesse

Dopo essere andati avanti per diversi mesi generando test client (a mano) per lo User Acceptance Test per vari servizi WCF ci siamo decisi a cercare delle alternative.

La prima strada è stata l'integrazione nella nostra Software Factory WCF di una recipe per la generazione automatica di test client da riga di comando a partire da un ServiceContract e devo dire che il risultato è stato ottimo:

  1. generazione automatica parametri di input dei metodi (file xml)
  2. tracciamento automatico delle performance (tempo creazione proxy e tempo effettivo di esecuzione metodo)
  3. generazione automatica error log in caso di eccezione
  4. generazione automatica client console per chiamata metodi WCF
  5. etc.

L'unica nota negativa era l'usabilità da parte del cliente per l'UAT, perchè modificare file xml per modificare i valori di input e verificare il file xml di output non è immediato.

Lo step successivo è stato l'adozione di Fitnesse e devo dire che a parte l'impatto iniziale (documentazione decisamente minimalista :)) lo strumento è veramente efficace e l'editing dei test tramite wiki è risultato semplice ed immediato al cliente.

Lo step finale sarà la generazione automatica dell'integrazione servizio WCF - Fitnesse tramite software factory.

Qualcun'altro di voi usa Fitnesse ?

VS2008 e limite download mex 65Kb

Quando si crea il proxy di un servizio WCF attraverso il mex potrebbe capitare di ricevere un errore dovuto alla dimensione del messaggio ricevuto superiore a 65Kb.

Per risolvere il problema con VS2008 dovete aggiungere le seguenti righe di configurazione al file
c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config
    <system.serviceModel>
        <client>
            <endpoint name="net.tcp" binding="netTcpBinding" bindingConfiguration="bc" contract="IMetadataExchange" />
        </client>
        <bindings>
            <netTcpBinding>
                <binding name="bc" maxReceivedMessageSize="10000000">
                    <readerQuotas maxNameTableCharCount="10000000" />
                    <security mode="None"/>
                </binding>
            </netTcpBinding>
        </bindings>
    </system.serviceModel>

Non è mia, ma del mitico collega XP Michele Zorzella.