Affermazioni e markup

book Assertions and markup

E 'molto importante avere un buon processo di scrittura, mentre la suite di test. Parlerò di quello che è stato utilizzato per JLS.

Come già detto prima che il prodotto finale è il numero di prove. C'è una relazione tra i test e le specifiche. Il processo di affermazione-driven dà un'idea di ciò che ogni gruppo di prove effettivamente i controlli nella specifica. L'utilizzo di questo rapporto lo sviluppatore può calcolare la copertura, ottiene l'elenco delle affermazioni su cui le prove non sono state scritte, ecc

Affermazione è una dichiarazione da una specifica che può essere provata. E il primo passo è quello di individuare tutte le asserzioni nel disciplinare. Dopo di che lo sviluppatore può scrivere dei test.

Esempio di quanto affermato dal Java Language Specification: smt Assertions and markup

  • Un errore in fase di compilazione si verifica se il modificatore stesso appare più di una volta in una dichiarazione di interfaccia.
  • Il nome di un tipo binario membro è costituito dal nome del suo binario immediatamente racchiude tipo, seguito da $, seguito dal nome semplice dei membri.
  • A continuare dichiarazione può avvenire solo in un po ', fare, o per la dichiarazione.

Ci potrebbero essere molte affermazioni che non sono verificabili o delle incertezze. A volte tali dichiarazioni comprendono termini quali "possibile" o "forse". Non è vero che se una frase è una parola "può" non è verificabile, ma di solito è così.

Esempi di dichiarazioni non verificabili:

  • Si consiglia di non tali "notazione misti" per le dichiarazioni di array.
  • Situazioni in cui la classe di un oggetto non è staticamente conosciuta, può portare ad errori di tipo run-time.
  • Se, tuttavia, la valutazione di un'espressione genera un'eccezione, quindi l'espressione è detto per completare bruscamente.

Ci sono molte discussioni e controversie su asserzioni. Alcuni dicono che esempi non devono essere trattati come asserzioni. Altri dicono che ogni affermazione è un affermazioni e ci sono due tipi di esse: verificabili e non verificabili. La mia opinione personale è che un 'affermazione è certamente qualcosa di verificabile. E nella maggior parte dei casi sono esempi di affermazioni solo perché il test può essere scritta controllando l'esempio particolare.

Il processo di identificazione affermazioni del disciplinare è chiamato markup. Ci sono molteplici approcci. Ma in ogni caso l'utente deve essere in grado di ottenere informazioni su se la dichiarazione è un'affermazione e in qualche modo distinguere una affermazione da un altro. Ci potrebbe essere un repository separato con mappatura delle affermazioni e la loro identità di dichiarazioni. Mi piace l'idea di integrare il codice nelle specifiche. Questo approccio è stato scelto per la lingua del Java SE suite di test. Il GLS è stato scritto in FrameMaker. Con meccanismi di esportare la versione PDF e HTML sono state create. La versione HTML è stato utilizzato durante la creazione della suite di test.

In JLS JLS e 2 alcune ancore individuato l'inizio e la fine di una affermazione. Ulteriori informazioni sono state la assertionID e breve sintesi della dichiarazione. La fine di ancoraggio è un immagine e un link per il test. La visualizzazione HTML e la visualizzazione di codice sono da figura corrispondente. L'ID affermazione sono arr033, arr034, arr020, ecc

JLC2 html1 Assertions and markup

JLC2 html code1 Assertions and markup

L'idea generale può essere descritto come:

<a name=assertionID> <! - descrizione shord come commento html ->
affermazione dichiarazione qui
<a href="path src="pics/assert.gif"> a test"> ID test, che è la stessa affermazione ID </ a>

Se il bilancio separato in diverse parti del disciplinare sono testati da un test il primo tag sarà qualcosa del tipo arr033_0, arr033_1, arr033_2.

Questo tipo di architettura è stato utilizzato per JLS JLS e 2. E 'stato leggermente modificato per JLS3, ma l'idea principale è stata mantenuta. So che alcuni esempi di approcci con ID affermazione non statico conservati in un archivio separato, dove ID è un valore hash calcolato in base al contenuto. Per vari motivi ha dimostrato fino ad essere non una soluzione molto buona. C'è sempre un processo difficile la migrazione alla nuova versione della specifica. Ma a mio parere è molto più facile con l'ID statico embedded nelle specifiche.



, , , , , , , , , , , , , , , , , ,
  • Bookmark
Print This Post Stampa questo post

Specifica, conformità, di compatibilità, test ... Che cosa stanno tratta?

A volte tutto questo termini sembrano piuttosto confusa. O è meglio dire che di solito o addirittura sempre. abstract Specification, conformance, compatibility, tests... What are they all about? Soprattutto quando diverse persone e le aziende a comprendere la situazione intorno a loro in modi diversi. Quindi partiamo dal principio.

Ci sono un sacco di specifiche o di norme che ci circonda. Il dizionario Webster descrive come qualcosa di standard stabiliti dalla pubblica autorità, su ordinazione, o il consenso generale, come modello o esempio. Quindi, fondamentalmente, è la lista delle regole, che durante l'utilizzo di altri devono obbedire.

Creiamo un linguaggio informatico. Prima di tutto la specificazione è necessaria, che analizzeranno il concetto intero modello, dicono gli sviluppatori che cosa può essere scritta come un programma, come esso si comportano, quale sarà compilato, eseguito e ecc Dopo aver creato questi documenti necessari - che è, ci si può fermare lì. Se l'idea è abbastanza buona società di diversi altri potrebbero voler creare le loro implementazioni: fe compilatori e ambienti di esecuzione. Ma devono obbedire le specifiche. In caso contrario, gli stessi programmi verrà eseguito in uno ed eseguire in modo diverso o addirittura non sulla realizzazione di altri. Rispetto da parte di una implementazione di tutti i requisiti di cui è chiamato conformità.

Perché è così importante? money coins Specification, conformance, compatibility, tests... What are they all about? Beh, diciamo che questo nuovo linguaggio è stato utilizzato per creare un programma per lo scambio azionario. Immaginate è stato scritto negli Stati Uniti, ben testato e utilizzato al NYSE. Si era così buona, che i paesi other in tutto il mondo hanno acquistato una licenza e ha iniziato ad usarlo per l'attuazione di questo nuovo linguaggio. Se una applicazione non obbediva le specifiche, il programma stesso potrebbe fare cose diverse con i soldi dei clienti '. In pratica questo programma di borsa potrebbe vendere quando l'agente commerciale ha spinto il pulsante "Acquista", oppure acquistare in acciaio al posto della frutta.

La buona domanda potrebbe essere: "Perché diverse implementazioni? Creiamo uno e utilizzarlo. ". Ci sono risposte diverse. Diverse aziende potrebbero voler usare questo linguaggio su diverse piattaforme (Solaris, Linux, Windows) e dei dispositivi (desktop, cellulare, PDA, calcolatore degli studenti, ecc.) Altri vogliono ottimizzare gli algoritmi per le loro esigenze, fe li realizzano in modo che il programma di database grandi saranno 10 volte più veloce.

Il punto chiave è che molte diverse implementazioni devono funzionare esattamente lo stesso e secondo le spec. In tal caso sono chiamati compatibili. La parte negativa è che nessuno può essere sicuro. Ecco perché il meccanismo di verifica è necessario. Di solito è una suite di test che verifica la conformità e compatibilità. E in questo caso è sbagliato dire che una cosa è compatibile o quasi il 99% compatibile. Ci potrebbe essere o sì o no.

no bug2 Specification, conformance, compatibility, tests... What are they all about? Andiamo verso un esempio. Sun Microsystems ha inventato Java. Per essere più precisi varie versioni di Java per i vari mercati sono stati creati. I più famosi sono Java ME , Java SE e Java EE . E per ciascuno di essi vi è una specifica separata. Sun Microsystems ha la sua implementazione, che è più comunemente usato. Tuttavia, il linguaggio è così buono, che ci sono abbastanza poche imprese di altri e le loro implementazioni. Per la compatibilità e le finalità di conformità ci sono TCKs (test di conformità Kit). TCK è un prodotto che include un numero di prove, verificare se un applicazione è corretta in base alle regole da disciplinare.

La mia intenzione era di dare un'idea di cosa specifica, di conformità, compatibilità e TCK sono e perché sono così importanti.



, , , , , , , , , , , , , , , , , , ,
  • Bookmark
Print This Post Stampa questo post