Quali pratiche esistono per i test unitari specifici della locale?


17

Di recente abbiamo scoperto un problema specifico delle impostazioni locali nella nostra applicazione e, sebbene fosse facile da risolvere (una volta capito cosa stava succedendo), è arrivato il team a cui sto pensando sulle pratiche di unit test in questo senso.

Vorremmo rilevare questi problemi prima, idealmente prima che vengano scoperti da un cliente, e vogliamo proteggerci dal reintrodurre in futuro specifici bug locali, ma duplicare ogni test unitario in almeno un'altra cultura sembra un sacco di spese generali.

In che modo o come affronteresti il ​​test unitario multi-locale?


1
Vuoi fornire qualche dettaglio in più riguardo al problema che hai riscontrato? Sembra interessante e mi piacerebbe saperne di più.
Mchl

1
@Mchl Era il bug della locale turca . Avevamo un codice di confronto delle stringhe che includeva la lettera i.
Adam Lear

Risposte:


4

Generalmente non sarà necessario duplicare ogni test unitario. Dovresti identificare ciò che è realmente dipendente dalla locale ( qui è presente una buona lista di controllo ). Molte cose legate all'internazionalizzazione sono soggette a un livello più elevato di test rispetto all'unità-test.

Se hai a che fare con i dati di stringa che possono venire in codifiche diverse, puoi utilizzare il "test guidato dai dati", ovvero passare i dati in codifiche diverse allo stesso metodo di prova. Per Java il TestNG è il più adatto per questo.

Un altro possibile problema è la formattazione e l'analisi della data / ora. La maggior parte dei locali usa: per separare gli elementi del tempo, ma ci sono quelli che usano punti e brasiliani usano hm e s (12h15m30s). Questo può anche essere usato dai dati passati in diverse lingue - non è necessario testarli tutti.

E testare la GUI con impostazioni locali da destra a sinistra di solito non è oggetto di test unitari.

La linea di fondo è che è necessario identificare quali dati nei test unitari sono specifici della locale e utilizzare test basati sui dati (fornitori di dati) per fornire questi dati ai test.


3

Ecco alcuni suggerimenti:

  • Sviluppa sempre su una macchina con impostazioni locali diverse dal tuo pubblico di destinazione principale. Ti aiuterà a trovare i bug relativi a date, valuta e ogni problema di formattazione numerica molto rapidamente. Fai lo stesso con il tuo server di compilazione, mettilo in Brasile o Vietnam (non fisicamente, solo le impostazioni).

  • Usa accenti e caratteri speciali nel titolo del test, nelle stringhe, ecc. Nei test delle unità. Il problema di internazionalizzazione più comune che riscontro con il software che utilizzo (non quelli che sviluppo) è con é ed è o anche ç in francese. Inseriscili in ogni stringa che usi nei tuoi test. Usa una parola comune che usi sempre comebrèç©

  • Non dimenticare di usare anche accenti e grafici speciali nei percorsi . Visual Studio.NET stesso ha ancora molti problemi con questo! È necessario accedere a creare tali directory e leggere / scrivere da esse nei test.

  • Se si utilizza Visual Studio .NET, nelle proprietà del progetto, in Analisi codice , abilitare Regole di globalizzazione . I problemi più comuni genereranno un avviso al momento della compilazione.

  • Assumi uno straniero nella tua squadra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.