Estrarre casi di test end-to-end su più pagine

2

Sto usando Protractor e Jasmine per creare test end-to-end per una pagina web. Per testare questa pagina iniziale, ho astratto alcune funzioni di utilità comuni per creare circa 20 casi di test per questa particolare pagina. Un esempio di questo è mostrato.

describe('User is on the page and', function () {
  beforeEach(function () {
    browser.get('http://test.test');
  });

  it('page title of the page should be blahblah', function () {
    expect(browser.getTitle()).toEqual('blahblah');
  });

  it('main header of the page should be test', function () {
    expect(element(by.css('#entry-header h1')).getText()).toEqual('test');
  });

  ...
}

Il problema è che ora ho 6 altre pagine che hanno estremamente funzionalità simili. Non mi piace il pensiero di duplicare tutti questi test e di mantenerli per ogni pagina, quindi sono tentato di astrarre questi casi di test in modo che possano essere riutilizzati attraverso le diverse pagine passando in specifici pagine come parametri.

Tuttavia, anche questa sembra una cattiva pratica. I casi di test non sono più descrittivi, sono funzioni con parametri passati. Anche i test case non saranno leggibili, in quanto avrebbero a che fare con una logica leggermente diversa tra le pagine. Inoltre, le modifiche ai casi di test potrebbero effettivamente causare regressioni per altre pagine.

Esiste una best practice o schema accettati per questo caso d'uso?

    
posta LanceLafontaine 29.04.2016 - 16:34
fonte

1 risposta

1

Separa le cose che variano dalle cose che non lo fanno.

È sbagliato riscrivere gli stessi test per più pagine.

È sbagliato provare a scrivere un test per adattarsi ad ogni pagina.

Ciò di cui hai bisogno è un modo per associare il test con le pagine per cui è valido, che non implica la riscrittura.

In questo modo se il test A è valido alle pagine 1, 4 e 7 è testato solo su 1, 4 e 7. Se molti degli stessi test sono validi su 1, 4 e 7, considera l'aggregazione delle chiamate a tali prova insieme. Ciò non significa che devi definirli insieme su una pagina. Significa chiamarli insieme. In questo modo A può essere riutilizzato su 9 una volta 9 esiste anche se B non funziona su 9.

    
risposta data 29.04.2016 - 21:17
fonte

Leggi altre domande sui tag