Concetto per convalidare oggetti attraverso le lingue?

5

Una domanda interessante su cui mi sono imbattuto:

Supponiamo che un'applicazione java crei un modello di dati, converta questi dati in un oggetto json con due campi e li carichi su un server:

{
    "FirstName": "Foo",
    "LastName": "Bar"
}

Ora una tecnologia diversa, ad esempio js, php, ecc. sul server deve elaborare i dati.

Entrambe le parti sono ben testate contro una serie di test unitari, ma l'integrazione naturale tra linguaggi e tecnologie diverse è difficile da testare in profondità.

Esiste un principio o una tecnica noti in grado di convalidare i dati su entrambe le estremità? Voglio dire, diciamo che c'è un contratto che dice che LastName non deve , in ogni caso essere di < 2 caratteri in dimensioni. Questa è una regola aziendale che è un vincolo rigido sui dati.

Ora l'implementazione java ha un bug o semplicemente trascurato il requisito di LastName . Entrambi i lati completano i test unitari ma falliscono duramente durante l'integrazione.

Esiste una tecnica che consente di specificare tali regole tra le lingue? Non sto parlando del rigetto del tempo di esecuzione dei dati malformati, ma piuttosto della coerenza su entrambi i lati di un'applicazione.

    
posta Samuel 23.03.2018 - 22:22
fonte

2 risposte

1

Test di integrazione

Descrivi sinteticamente il problema di root qui, ovvero la mancanza di test di integrazione.

Both sides complete unit tests but they fail hard during integration.

Il team che costruisce l'applicazione Java ha dimenticato di includere la convalida e i test unitari per quando LastName è inferiore a due caratteri.

Il team che costruisce l'applicazione PHP, d'altra parte, ha ricordato di includere la convalida e i test unitari.

Fortunatamente, il team addetto al controllo qualità conosceva il requisito LastName e ha aggiunto il nome Jin-u O nella suite di test di integrazione. Quando hanno chiamato un'operazione API nell'applicazione Java utilizzando quel nome, in attesa di un errore di convalida a 400 livelli, hanno ottenuto invece un 200 e il test non è riuscito.

I test di integrazione sono facili? Assolutamente no. Ma ne vale sicuramente la pena se hai tempo e risorse per testare le tue applicazioni rispetto a una serie obiettiva di criteri.

    
risposta data 12.10.2018 - 01:17
fonte
0

La frase che ho trovato per questo è single source of truth :

In information systems design and theory, single source of truth (SSOT) is the practice of structuring information models and associated data schema such that every data element is stored exactly once. Any possible linkages to this data element (possibly in other areas of the relational schema or even in distant federated databases) are by reference only. Because all other locations of the data just refer back to the primary "source of truth" location, updates to the data element in the primary location propagate to the entire system without the possibility of a duplicate value somewhere being forgotten.

Il software può essere generato come indicato sopra:

In software design, the same schema, business logic and other components are often repeated in multiple different contexts, while each version refers to itself as "Source Code". To address this problem, the concepts of SSoT can also be applied to software development principals using processes like recursive transcompiling to iteratively turn a single source of truth into many different kinds of source code, which will match each other structurally because they are all derived from the same SSoT.

In particolare, alcune specifiche della lingua incrociata includono:

Progetti come Apache Thrift lo normalizzano:

Apache Thrift allows you to define data types and service interfaces in a simple definition file. Taking that file as input, the compiler generates code to be used to easily build RPC clients and servers that communicate seamlessly across programming languages. Instead of writing a load of boilerplate code to serialize and transport your objects and invoke remote methods, you can get right down to business.

Riferimenti

risposta data 17.10.2018 - 23:24
fonte

Leggi altre domande sui tag