Használja a Postman API-tesztelési funkcióit az alkalmazás felhasználói felületének folyamatos teszteléséhez.
Olvassa el ezt a történetet a blogomon: https://ankit-m.github.io/blog/ui-testing-in-postman/
A "Postman" egy olyan eszköz, amelyet gyakran használnak az API-kkal való együttműködéshez. Egyszerű módot biztosít HTTP-hívások kezdeményezésére és parancsfájlok futtatására a kérés különböző fázisaiban. Ezeket a funkciókat a folyamatos és automatizáltfelhasználói felület tesztelésére tudjuk használni.
Ez a cikk felvázol néhány módszert a Postman használatára a felhasználói felület különböző aspektusainak tesztelésére, pl. teljesítmény, funkcionalitás, biztonság, integritás és hozzáférhetőség. Azt is megvizsgáljuk, hogyan kell rendszeresen futtatni ezeket a teszteket, és értesítést kapunk az eredményekről.
0. Beállítás és Postman Primer
A Postman elsősorban környezetet biztosít az API-k létrehozásához és interakciójához. Weboldalak lekérésére is használható (akárcsak egy böngésző). Írja be az URL-t a címsorba, és nyomja meg a Küldés gombot a HTML-válasz megtekintéséhez. A Postman futtathat szkripteket a kérés elküldése előtt (Kérés előtti szkriptek) és a válasz megszerzése után (Tesztek). Minden kérés egy gyűjteményben van tárolva, amely futtatható az összes kérés sorrendben történő végrehajtásához.
Ha még soha nem használta a Postmant, további információkért látogasson el az „Oktatóközpontba”.
Megjegyzés: A Postman nem értékeli a JS-t vagy a külső CSS-t egy weboldalon. Előfordulhat, hogy néhány itt leírt technika nem működik olyan oldalakon, amelyek ügyféloldalon jelennek meg, vagy amelyek nagymértékben támaszkodnak JavaScriptre.
1. Teljesítmény
Különféle tényezők befolyásolják a weboldal teljesítményét – az adatok kiszolgálótól való fogadásának ideje, az első értelmes megjelenítés stb.
Minden teszttípushoz új kérelmet hozunk létre, és hozzáadjuk a megfelelő kódrészleteket a Tesztek lapon. Bármikor használhatja a referenciagyűjteményt vagy közvetlenül importálhatja a sablont a Postmanba.
- Válaszidő: Ez az az idő, ameddig az ügyfél megkapta a teljes választ (ebben az esetben a HTML-t) a kérés benyújtását követően. Beállíthatjuk a maximális válaszidő küszöböt.
var ONE_SECOND = 1000; pm.test("Response time is less than 1 second", function () { pm.expect(pm.response.responseTime).to.be.below(ONE_SECOND); });
- Fejlécek:A válaszfejlécek segítségével ellenőrizheti a szerver konfigurációját az adatok gyorsítótárazásához és kódolásához. Ezek segítenek javítani az oldal betöltési idejét és csökkenteni a hálózaton keresztül továbbított bájtok számát.
pm.test("Cache control header should be for 14 days", function () { pm.response.to.be.header("Cache-Control", "max-age=1209600"); }); pm.test("Content encoding should be set to gzip", function () { pm.response.to.be.header("Content-Encoding", "gzip"); });
- Válaszméret: Az első válasz (HTML-oldal) tényleges mérete.
pm.test("Response size is less than 35KB", function () { pm.expect(pm.response.responseSize).to.be.below(35000); });
- PageSpeed Insights API: A Google funkciókban gazdag PageSpeed API-t biztosít bármely weboldal teljesítményének értékeléséhez. Felhívhatja az API-t a Postmantól, és az eredményekre hivatkozva állíthat be referenciaértékeket a felhasználói felületéhez.
// GET https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={{url}} pm.test("PageSpeed score should be within 90 and 100", function () { var res = pm.response.json(); var score = res.lighthouseResult.categories.performance.score; pm.expect(score * 100).to.be.within(90, 100); });
2. Funkcionalitás
- Állapotkód: A válaszállapot az üzemidő legalapvetőbb tesztje. Ha a szerver váratlan állapotkódot ad vissza, előfordulhat, hogy a weboldal nem működik megfelelően.
pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
- Az oldal szerkezete: A cheerio könyvtár segítségével kiértékelheti a válaszjelölést a józanság ellenőrzéséhez. Ezek ellenőrizhetik a szükséges címkék és kritikus elemek jelenlétét.
var cheerio = require('cheerio'); var $ = cheerio.load(pm.response.text()); pm.test('Page title should be set', function () { pm.expect($('title').text()).to.equal('Ankit Muchhala'); }); pm.test('Page should have header and footer tags', function () { pm.expect($('header')).to.exist; pm.expect($('footer')).to.exist; });
- Fejlécek: Alapvető tesztek írhatók a válaszfejlécekhez, amelyek meghatározzák a weboldal működését –
Content-Type
,Set-Cookie
stb. - Manifest: Ha webalkalmazást/PWA-t készít, amelyet telepíthet mobileszközökre, akkor az alkalmazásnak egy
manifest.json
fájlt kell kiszolgálnia, és a megfelelőlink
head
címkében kell szerepelnie.
pm.test('Manifest file should exist', function () { pm.response.to.have.header('Content-Type', 'application/json'); }); // Add more tests to check manifest file pm.test('Manifest should have valid fields', function () { var jsonData = pm.response.json(); pm.expect(jsonData.name).to.equal('Ankit Muchhala'); });
- Service worker: Ha rendelkezik szervizmunkás-fájllal, ellenőrizheti annak létezését és tartalmát.
pm.test('Service worker file should exist', function () { pm.expect(pm.response.headers.get('Content-Type').split(';')) .to.include('application/javascript'); });
3. Biztonság
- HTTPS és HSTS: Ha azt szeretné, hogy az ügyfél és a szerver közötti kommunikáció biztonságos legyen, weboldalát HTTPS-en keresztül kell kiszolgálni. Gondoskodnia kell arról is, hogy minden nem biztonságos hívás (HTTP) a biztonságos protokollra legyen irányítva. A
Strict-Transport-Security
fejlécben azt is beállíthatja, hogy a böngészők csakbiztonságos protokollon keresztül kapcsolódjanak a szervereihez.
pm.test('Response should have status code is 301', function () { pm.response.to.have.status(301); }); pm.test('Response should redirect to secure URL', function () { pm.response.to.have.header( 'Location', 'https://' + pm.environment.get('host') + '/' ); }); pm.test('Strict-Transport-Security header should be set', function () { pm.response.to.have.header( 'Strict-Transport-Security', 'max-age=300; includeSubDomains' ); });
- Fejlécek: Vannak biztonsági fejlécek, amelyeket felhasználhat bizonyos biztonsági előnyök eléréséhez. Volt.
X-XSS-Protection
,X-Frame-Options
stb. A teljes listát itt találja, és teszteket is hozzáadhat a használtakhoz. - Nincs hivatkozó: Néhány józansági tesztet is futtathat a HTML-en, hogy ellenőrizze a gyakori biztonsági problémákat –
eval
, szükségteleniframes
vagy soron belüli JavaScript használatával. Az egyik ilyen teszt annak ellenőrzése, hogy mindentarget="_blank"
a
címkében (azaz új lapon/ablakban nyíló hivatkozások) rendelkezik-erel="noopener noreferrer"
. Ez azt jelenti, hogy az újonnan megnyitott lap nem fér hozzá az Ön weboldalához a következőn keresztül:document.referrer
var cheerio = require('cheerio'); var $ = cheerio.load(pm.response.text()); pm.test('All external ... valid attributed', function () { $('a').each(function(i, elem) { if ($(elem).attr('target') !== '_blank') { return; } pm.expect($(elem).attr('rel')) .to.equal('noopener noreferrer', $(elem).attr('href')); }); });
- Robots.txt: Ez a fájl a
/robots.txt
gyökérszinten található, és meghatározza, hogy a webrobotoknak (például a Google robotjainak) hogyan kell interakcióba lépniük az Ön weboldalaival. Annak ellenére, hogy nem kényszerítsemmit – a gonosz robotok egyszerűen figyelmen kívül hagyhatják –, jó gyakorlat egyrobots.txt
fájl, amely egyértelműen jelzi, hogy mely útvonalakon engedélyezett a feltérképezés.
pm.test('robots.txt file should exist', function () { pm.response.to.have.header('Content-Type', 'text/plain'); }); // add specific tests for your robots.txt file
4. Integritás
Ezek a tesztek ellenőrzik, hogy weboldala ellenőrzött forrásokból származó adatokat és érvényes oldalakra mutató hivatkozásokat jelenít-e meg.
- Link érvényessége: Gyakran szeretné ellenőrizni, hogy az oldalon lévő összes link érvényes-e, és nem vezeti-e el a felhasználót olyan weboldalra, amely nem elérhető. A következő szkript megtalálja az összes hivatkozást a weboldalán, és ellenőrzi, hogy léteznek-e (azaz egy
GET
kérés200
állapotkódot ad vissza). Itt a pm.sendRequestmódszert használjuk.
var cheerio = require('cheerio'); var $ = cheerio.load(pm.response.text()); pm.test("All links on the page should be valid", function () { $('a').each(function(i, elem) { var originalPath = $(elem).attr('href'); var path = originalPath; if (path && path[0] === '/') { path = pm.environment.get('url') + path; } pm.sendRequest(path, function (err, res) { pm.test('Link with href "' + originalPath + '" should be valid', function () { pm.expect(err).to.equal(null); pm.expect(res).to.have.property('code', 200); pm.expect(res).to.have.property('status', 'OK'); }); }); }); });
- CSP: A tartalombiztonsági házirend fejlécei megadják a böngésző által végrehajtható különböző típusú tartalmak érvényes forrásainak listáját. Például azt mondhatja: engedélyezze a JavaScript betöltését az aktuális tartományból (
self
) ésgetpostman.com
. A böngésző letiltja más források tartalom futtatását. Ez segít megvédeni alkalmazását arra az esetre, ha valaki rosszindulatú kódot fecskendezne bele. Megjegyzés: A CSP-ellenőrzések böngészőfüggőek, és nem használhatók egyedüli védelmi vonalként.
5. Hozzáférhetőség
Minden modern weboldalnak mobilbarátnak és a fogyatékkal élő felhasználók számára is elérhetőnek kell lennie. Ez azt jelenti, hogy szemantikailag helyes HTML-címkéket, ARIA-címkéket és releváns attribútumokat, például alt
vagy role
kell használni. Amint azt korábban bemutattuk, a cheerio segítségével teszteket írhat ezekhez.
A tesztek futtatása
A gyűjtemény futtatásának többféle módja van.
A Postásban
- Kattintson a gyűjteményére az oldalsávon
- Kattintson a
Run
elemre. Ezzel megnyílik a Collection Runner - Állítsa be a beállításokat, és futtassa!
A CLI-ben
A gyűjteményt CLI-ben futtathatja a newman használatával a newman run
paranccsal.
A Postás Monitorokban
Beállíthat egy „monitort” a tesztek időszakonkénti futtatására, valamint „az eredmények lazítására”.
Számos más teszt is elvégezhető a Postman weboldalain. Ha eszedbe jut valami, kérlek jelezd kommentben.