Što je testiranje pohrane? Vrste, Concepts & Primjer

⚡ Pametni sažetak

Testiranje pohrane provjerava zapisuje li aplikacija svoje podatke u ispravne direktorije i ima li dovoljno prostora na disku kako bi se izbjegla neočekivana prekidanja, a istovremeno mjeri koliko brzo temeljna pohrana reagira pod realnim opterećenjem.

  • 💾 Također se naziva: Testiranje performansi pohrane, jer je brzina jednako važna kao i ispravan smještaj.
  • ⚠️ Zašto je to važno: Spora pohrana uzrokuje sporo vrijeme odziva, dugotrajne upite i nižu dostupnost aplikacija.
  • 🧩 Tri vrste: Testiranje aplikacija, simulacija aplikacija i mjerenje performansi, svako sa svojim aktivnostima.
  • 📏 Osnovne metrike: IOPS, latencija, propusnost i dubina reda uvijek se čitaju zajedno, a ne izolirano.
  • 🧪 Kako se izvodi: Definirajte ciljeve, odredite veličinu skupa podataka, odaberite realistične kombinacije čitanja/pisanja, a zatim povećajte opterećenje.
  • 🛠️ alat: Sintetički I/O generatori proizvode ponovljive brojeve koje naredbe za kopiranje datoteka nikada ne mogu.
  • ???? Uobičajene pogreške: Praćenje pogrešnog servera, preskočiping čišćenje predmemorije i ignoriranje iskorištenosti procesora.

Vodič za testiranje pohrane koji obuhvaća vrste, koncepte i uobičajene pogreške

Što je testiranje pohrane?

Ispitivanje skladišta je vrsta testiranja softvera koja se koristi za provjeru pohranjuje li testirana softverska aplikacija relevantne podatke u odgovarajuće direktorije i ima li dovoljno prostora za sprječavanje neočekivanih prekida zbog nedovoljnog prostora na disku. Također se naziva testiranje performansi pohrane.

Tehnika se nalazi na nefunkcionalnoj strani discipline: poput drugih oblika nefunkcionalno testiranje, ne govori ništa o tome daje li značajka točan odgovor, već sve o tome može li sustav nastaviti proizvoditi odgovore kako raste količina podataka i pritisak ulazno/izlaznih operacija.

Zašto testiranje pohrane?

Pohrana je najsporiji sloj kojeg se većina aplikacija dotiče, pa se slabost tamo pojavljuje posvuda. Četiri razloga opravdavaju poseban ciklus testiranja.

  • Spora pohrana znači sporo vrijeme odziva, dugotrajne upite i nižu dostupnost aplikacije.
  • Spora pohrana predstavlja dodatni trošak za održavanje serverske infrastrukture.
  • Pomaže u pronalaženju praktičnih ograničenja pohrane sustava prije implementacije.
  • Korisno je razumjeti kako sustav reagira kada se hardverski uređaj zamijeni ili nadogradi.

Donji dijagram stavlja testiranje pohrane u taj kontekst - aplikacija, datotečni sustav i fizički uređaj nalaze se na istoj putanji, a kašnjenje bilo gdje na njoj stiže do korisnika.

Pregled testiranja pohrane koji prikazuje aplikaciju koja zapisuje podatke kroz datotečni sustav na uređaj za pohranu

Vrste testiranja pohrane

Koriste se tri pristupa, a razlikuju se uglavnom po tome koliko je radno opterećenje slično stvarnoj aplikaciji.

  • Testiranje aplikacije: Testiranje aplikacija s primjerima upita u okruženju sličnom produkcijskom.
  • Simulacija aplikacije: Provođenje testiranja korištenjem standardnog softvera koji se ponaša slično ciljnoj aplikaciji.
  • Mjerenje performansi: Provođenje testiranja korištenjem standardnog softvera za mjerenje performansi koji generira sintetičko, ponovljivo opterećenje.

Prvi daje najrealniji rezultat i najmanje prenosiv; treći daje brojeve koji se mogu usporediti na različitim uređajima i dobavljačima, ali malo govori o tome kako će se sama aplikacija ponašati.

Uobičajeno testiranje Concepts Uključeno tijekom testiranja skladištenja

Svaka od te tri vrste odnosi se na zaseban skup aktivnosti, kao što je sažeto u nastavku.

Vrste testiranja pohrane Primjer uobičajenih aktivnosti testiranja pohrane
Testiranje aplikacije Usporedite vremena odgovora OLTP-a
Usporedite vremena izvođenja serije
Usporedite postojane stope strujanja
Simulacija primjene Testirajte vršnu pohranu IOPS za baze podataka
Testiranje vršne propusnosti pohrane za okruženja strujanja podataka
Testirajte latenciju pohrane za razmjenu poruka ili druge jednonitne aplikacije
Benchmarking Testiranje na oštećenje podataka

Ključne metrike u testiranju pohrane

Rezultati pohrane prikazuju se putem malog skupa brojeva. Čitanje bilo kojeg od njih samostalno najbrži je način da se dođe do pogrešnog zaključka, jer se međusobno razlikuju.

metrički Što mjeri Tamo gdje je najvažnije
IOPS Operacije čitanja i pisanja izvršene u sekundi, bez obzira na veličinu Transakcijske baze podataka i mali nasumični zapisi
skrivenost Vrijeme između početka i završetka jedne I/O operacije Putanje poruka i jednonitnih aplikacija
propusnost Količina podataka prenesenih u sekundi, obično u MB/s Serijska izvršavanja, sigurnosne kopije i strujna opterećenja
Dubina reda čekanja Broj neriješenih zahtjeva izdanih istovremeno Bilo koje izvršavanje koje mora odražavati stvarnu konkurentnost

Dubina reda čekanja zaslužuje posebnu pozornost. Izdavanje jednog zahtjeva istovremeno proizvodi točnu latenciju pojedinačnog zahtjeva, ali umjetno nisku brojku IOPS-a i propusnosti, zbog čega uređaj može izgledati sporo u testu, a brzo u produkciji ili obrnuto.

Kako izvršiti testiranje pohrane

Test pohrane je pouzdan samo onoliko koliko su pouzdani uvjeti pod kojima je proveden. Slijed u nastavku omogućuje ponovljivost rezultata.

  • Korak 1) Definirajte cilj. Odlučite dokazuje li se izvođenjem spremnost baze podataka, pronalazi li se gornja granica propusnosti ili uspoređuju dva uređaja. Svaki cilj podrazumijeva drugačije radno opterećenje, a njihovo miješanje proizvodi brojke na koje nitko ne može reagirati.
  • Korak 2) Realno odredite veličinu skupa podataka. Radni skup dovoljno malen da stane u predmemoriju mjeri predmemoriju, a ne pohranu. Uskladite volumen produkcijskih podataka ili barem znatno premašite veličinu predmemorije.
  • Korak 3) Odaberite kombinaciju i uzorak čitanja/pisanja. Slučajni i sekvencijalni pristup ponašaju se vrlo različito na istom uređaju, kao i 70/30 kombinacije čitanja i pisanja te rafalni zapisi samo za pisanje. Uzmite kombinaciju iz nadzora produkcije, a ne iz zadane postavke.
  • Korak 4) Postavite dubinu reda i broj niti. Oni kontroliraju koliko konkurentnosti dolazi do uređaja, stoga ih zabilježite sa svakim rezultatom - brojka navedena bez njih ne može se reproducirati.
  • Korak 5) Očistite predmemoriju i zagrijte se. Izbriši predmemorije poslužitelja i uređaja između izvršavanja, a zatim odbaci prvi interval kako bi se uspoređivali brojevi u stabilnom stanju, a ne oni koji se uspoređuju prvi put.
  • Korak 6) Trčite dovoljno dugo. Kratki zadaci skrivaju grešku pri pisanju koja se pojavljuje kada SSD iscrpi svoj međuspremnik za pisanje. Dugotrajni zadaci je otkrivaju.
  • Korak 7) Pratite cijeli stog. Uz brojače pohrane zabilježite iskorištenost procesora, memorije i mreže kako se usko grlo negdje drugdje ne bi pogrešno protumačilo kao ograničenje pohrane.
  • Korak 8) Ponovite i usporedite. Pokrenite istu konfiguraciju više puta i sačuvajte zapisnike; pomak performansi između verzija vidljiv je samo u odnosu na pohranjenu osnovnu vrijednost.

Budući da se ista disciplina primjenjuje na bilo koje mjerenje vođeno opterećenjem, ovi se prolazi obično planiraju zajedno s ispitivanje performansi i zakazano prije nego što se kandidat za izdanje zamrzne.

Alati za testiranje pohrane

Alati se svrstavaju u dvije skupine, a većini timova potrebne su obje.

  • Sintetički I/O generatori. Uslužni programi kao što su Fio, Iometer i sysbench izdaju precizno opisano opterećenje - deklarirana je veličina bloka, kombinacija čitanja/pisanja, dubina reda i trajanje, tako da se izvršavanje može točno ponoviti na drugom uređaju.
  • Alati za učitavanje na razini aplikacije. Vozači kao što su JMeter vježbati samu aplikaciju, tako da pohrana vidi isti obrazac pristupa koji stvaraju stvarni korisnici, uključujući planove upita i ponašanje indeksa koje sintetički alat ne može reproducirati.

OperaBrojači sustava ting upotpunjuju sliku. Bez obzira na alat koji generira opterećenje, brojke pohrane moraju se očitati pored brojača procesora, memorije i mreže - nekoliko tehnika testiranja pohrane, uključujući benchmark testiranje i ispitivanje volumena, oslanjaju se na taj full-stack prikaz kako bi ispravno interpretirali rezultat.

Pogreške prilikom testiranja pohrane

Većina nevažećih rezultata pohrane tracnatrag na mali broj izbježivih pogrešaka.

  • Praćenje pogrešnih performansi poslužitelja, pa brojke opisuju stroj koji nije pod testiranjem.
  • Uspoređivanje uređaja za pohranu bez prethodnog brisanja predmemorije poslužitelja, što mjeri memoriju, a ne disk.
  • Zaboravljanje praćenja iskorištenosti procesora tijekom testiranja, što skriva usko grlo vezano uz procesor iza simptoma u obliku pohrane.
  • Testiranje performansi pohrane s naredbama za kopiranje datoteka, koje su jednonitne, potpomognute predmemorijom i nisu ponovljive.

Pitanja i odgovori

Ispitivanje volumena povećava količinu podataka koje aplikacija pohranjuje i prati pogoršanje ponašanja. Testiranje pohrane cilja na sloj uređaja ispod njega, mjereći koliko brzo se ti podaci mogu pisati i čitati natrag.

Svaka lokacija na koju aplikacija zapisuje: direktoriji podataka, mape dnevnika i privremene mape, ciljevi prijenosa i putovi arhiva. Za svaku je potrebno provjeriti je li datoteka smještena na pravo mjesto i je li slobodni prostor ispravno prijavljen.

Metrike ostaju iste, ali se dodaju predviđena ograničenja IOPS-a, burst krediti i šumni susjedi. Izvodi se dovoljno dugo da se burst kredit iscrpi, inače izmjerena brojka odražava privremeni dopušteni iznos, a ne stabilno stanje.

Modeli strojnog učenja određuju normalne krivulje IOPS-a i latencije kao osnovne, a zatim označavaju izvršavanja koja odstupaju prije nego što se prijeđe prag. Isti modeli predviđaju rast kapaciteta, pa se iscrpljenost diska predviđa, a ne otkriva u produkciji.

GitHub kopilot brzo izrađuje nacrte datoteka poslova, omotače za brisanje predmemorije i skripte za parsiranje rezultata. Tester i dalje daje veličinu bloka, dubinu reda čekanja i trajanje, budući da oni dolaze iz praćenja produkcije, a ne iz predloška.

To je valjan testni slučaj, a ne nesreća. Aplikacija bi trebala upozoriti, elegantno degradirati i zabilježiti stanje, umjesto da se prekine. Oporavak iz stanja punog diska pripada testiranje oporavka.

Obično su se stanje predmemorije, dubina reda čekanja ili duljina izvršavanja razlikovali među njima. Važno je i uvjetovanje uređaja - svježe formatirani SSD piše brže od onog koji je nekoliko puta popunjen i prepisan.

Obično ga izvode testeri performansi, dok administratori infrastrukture ili baze podataka dostavljaju konfiguraciju uređaja i obrasce pristupa produkciji. Rezultat je opravdan samo kada se obje strane slože da je radno opterećenje bilo realno.

Sažmite ovu objavu uz: