Eenheetstester an engem DBMS - wéi mir et am Sportmaster maachen, Deel zwee

Éischten Deel - hei.

Eenheetstester an engem DBMS - wéi mir et am Sportmaster maachen, Deel zwee

Stellt Iech eng Situatioun vir. Dir sidd mat der Aufgab konfrontéiert nei Funktionalitéit z'entwéckelen. Dir hutt Erfahrung vun Äre Virgänger. Unzehuelen datt Dir keng moralesch Verpflichtungen hutt, wat géift Dir maachen?

Meeschtens sinn all déi al Entwécklungen vergiess an alles fänkt erëm op. Keen huet gär an de Code vun engem aneren ze graven, a wann Dir Zäit hutt, firwat net ufänken Ären eegene System ze kreéieren? Dëst ass eng typesch Approche, a ville respektéiert ass et richteg. Mä an eisem Projet hu mir anescht gehandelt. Mir baséieren den zukünftege automatiséierte Testsystem op d'Entwécklungen an Eenheetstester op utPLSQL vun eise Virgänger, an hunn dann an e puer parallele Richtungen geschafft.

  1. Restauratioun al Eenheet Tester. Erhuelung heescht Adaptatioun vun Tester un den existente Staat vum Loyalitéitssystem an Adaptatioun vun Tester un utPLSQL Standards.
  2. De Problem mat Verständnis léisen, a wat genee, wéi eng Methoden a Prozesser, hu mir mat Autotester ofgedeckt. Dir musst entweder dës Informatioun am Kapp halen, oder Conclusiounen zéien direkt op de Code vun Autotesten. Dofir hu mir décidéiert e Katalog ze kreéieren. Mir hunn en eenzegaartege Mnemonic Code fir all Autotest zougewisen, eng Beschreiwung erstallt an d'Astellunge fixéiert (zum Beispill ënner wéi enge Konditiounen et soll lafen, oder wat soll geschéien wann den Testlaf net klappt). Am Wesentlechen hu mir d'Metadaten iwwer d'Autotester ausgefëllt an dës Metadaten an de Standardtabellen vum utPLSQL Schema gesat.
  3. Definitioun vun Expansioun Strategie, i.e. Selektioun vu Funktionalitéit, déi ënner Autotester verifizéieren ass. Mir hu beschloss op dräi Saachen opmierksam ze maachen: nei Verbesserunge vum System, Tëschefäll aus der Produktioun a Schlësselprozesser vum System. Also entwéckelen mir parallel mat der Verëffentlechung, fir seng méi héich Qualitéit ze garantéieren, gläichzäiteg den Ëmfang vun der Regressioun auszebauen an d'Zouverlässegkeet vum System op kritesche Plazen ze garantéieren. Den éischten esou Flaschenhals war de Prozess fir Remise a Bonus per Scheck ze verdeelen.
  4. Natierlech hu mir ugefaang nei Autotester z'entwéckelen. Eng vun den éischte Verëffentlechungsaufgaben war d'Leeschtung vu virdefinéierte Proben vum Loyalitéitssystem ze evaluéieren. Eise Projet huet e Block vu steif fixe sql Ufroen déi Clienten no Bedéngungen auswielen. Zum Beispill, kritt eng Lëscht vun alle Clienten deenen hir lescht Akaf an enger bestëmmter Stad war, oder eng Lëscht vu Clienten deenen hir Moyenne Akaf Betrag iwwer engem bestëmmte Wäert ass. Nodeems mir Autotester geschriwwen hunn, hu mir virdefinéiert Echantillon gepréift, fix Benchmark Performance Parameteren, an zousätzlech krute mir Lasttest.
  5. Schafft mat Autotester sollt bequem sinn. Déi zwee heefegst Aktiounen sinn Autotester lafen an Testdaten generéieren. Dëst ass wéi zwee Hilfsmoduler an eisem System erschéngen: de Startmodul an den Dategeneratiounsmodul.

    De Launcher gëtt als eng generesch Prozedur mat engem Input Textparameter duergestallt. Als Parameter kënnt Dir en Autotest Mnemonic Code, Package Numm, Testnumm, Autotest Astellung oder e reservéiert Schlësselwuert passéieren. D'Prozedur wielt a leeft all Autotester déi d'Konditioune entspriechen.

    Den Dategeneratiounsmodul gëtt als Package presentéiert, an deem fir all Objet vum System ënner Test (en Dësch an der Datebank) eng speziell Prozedur erstallt gouf, déi d'Donnéeën do setzt. An dëser Prozedur sinn d'Standardwäerter op de Maximum gefëllt, wat d'Schafung vun Objete wuertwiertlech mat engem Klick vun engem Fanger garantéiert. A fir d'Benotzungsfäegkeet goufen Template fir déi generéiert Donnéeën erstallt. Zum Beispill, erstellt e Client vun engem gewëssen Alter mat engem Testtelefon an engem ofgeschlossene Kaf.

  6. Autotester solle lafen a lafen bannent enger raisonnabel Zäit fir Äre System. Dofir gouf en alldeeglechen Nuetsstart organiséiert, baséiert op de Resultater vun deenen e Bericht iwwer d'Resultater generéiert gëtt an un d'ganz Entwécklungsteam per Corporate Mail geschéckt gëtt. Nodeems Dir al Autotester restauréiert an nei erstallt huet, war d'total Lafzäit 30 Minutten. Sou eng Leeschtung huet jidderengem gepasst, well de Start an der Off-Hour stattfonnt huet.

    Mee mir hu misse schaffen un der Optimisatioun vun der Aarbechtsgeschwindegkeet. De Produktiounsloyalitéit System gëtt an der Nuecht aktualiséiert. Am Kader vun enger vun de Releases hu mir dréngend Nuets missten änneren. Eng hallef Stonn Waarden op d'Resultater vun Autotester um dräi moies huet d'Persoun, déi fir d'Verëffentlechung verantwortlech ass, net glécklech gemaach (grässeg Gréiss un Alexei Vasyukov!), An den nächste Moien goufe vill waarm Wierder géint eise System gesot. Awer als Resultat gouf e 5-Minute Standard fir Aarbecht gesat.

    Fir d'Performance ze beschleunegen, hu mir zwou Methoden benotzt: mir hunn Autotester an dräi parallele Threads ugefaang, well dëst ganz bequem ass wéinst der Architektur vun eisem Loyalitéitssystem. A mir hunn d'Approche verlooss wann den Autotest keng Testdaten fir sech selwer erstellt, awer probéiert eppes am System ze fannen. Nodeems Dir Ännerunge gemaach hutt, gouf d'total Operatiounszäit op 3-4 Minutten reduzéiert.

  7. E Projet mat Autotester soll op verschiddene Stänn agesat kënne ginn. Am Ufank vun der Rees goufen et Versuche fir eis eege Batchdateien ze schreiwen, awer et gouf kloer datt eng selbstgeschriwwe automatiséiert Installatioun e komplette Horror ass, a mir hu sech op industriell Léisungen ëmgewandelt. Wéinst der Tatsaach, datt de Projet vill Code direkt huet (virun allem späichere mir de Code vun Autotester) a ganz wéineg Donnéeën (d'Haaptdaten sinn Metadaten iwwer Autotester), huet et sech ganz einfach an d'Integratioun erausgestallt. Liquibase Projet.

    Et ass eng Open Source Datebank onofhängeg Bibliothéik fir Tracking, Gestioun an Uwendung vun Datebank Schema Ännerungen. Verwalte iwwer Kommandozeil oder Kaderen wéi Apache Maven. De Prinzip vun der Operatioun vu Liquibase ass ganz einfach. Mir hunn e Projet op eng gewësse Manéier organiséiert, deen aus Ännerungen oder Skripte besteet, déi op den Zilserver gerullt musse ginn, a Kontrolldateien déi bestëmmen a wéi enger Reiefolleg a mat wéi engem Parameter dës Ännerungen installéiert solle ginn.

    Um DBMS Niveau gëtt e speziellen Dësch erstallt an deem Liquibase de Rollback Log späichert. All Ännerung huet e berechent Hash, deen all Kéier tëscht dem Projet an dem Staat an der Datebank verglach gëtt. Dank Liquibase kënne mir einfach Ännerungen an eisem System op all Circuit ausrollen. Autotester ginn elo op Test- a Verëffentlechungscircuits ausgeführt, souwéi op Container (perséinleche Entwécklerkreesser).

Eenheetstester an engem DBMS - wéi mir et am Sportmaster maachen, Deel zwee

Also, loosst eis iwwer d'Resultater vun der Uwendung vun eisem Eenheetstestsystem schwätzen.

  1. Natierlech si mir als éischt iwwerzeegt datt mir ugefaang hunn besser Software z'entwéckelen. Autotester lafen all Dag a fannen Dosende vu Bugs all Verëffentlechung. Ausserdeem sinn e puer vun dëse Feeler nëmmen indirekt mat der Funktionalitéit verbonnen, déi mir wierklech wollten änneren. Et gi staark Zweifel datt dës Feeler duerch manuell Tester fonnt goufen.
  2. D'Team huet Vertraue kritt datt spezifesch Funktionalitéit richteg funktionnéiert ... Als éischt geet et ëm eis kritesch Prozesser. Zum Beispill, an de leschte sechs Méint hu mir keng Probleemer mat der Verdeelung vu Remise a Bonus per Scheck, trotz den Ännerungen déi all Verëffentlechung gemaach goufen, obwuel a fréiere Perioden Feeler mat e puer Frequenz opgetruede sinn.
  3. Mir hunn et fäerdeg bruecht d'Zuel vun den Testiteratiounen ze reduzéieren. Wéinst der Tatsaach, datt Autotester fir nei Funktionalitéit geschriwwe ginn, kréien Analysten an Deelzäittester e Code vu méi héijer Qualitéit, well et ass scho verifizéiert ginn.
  4. En Deel vun den Entwécklungen vum automatiséierten Test gëtt vun Entwéckler benotzt. Zum Beispill ginn Testdaten op Container erstallt mat dem Objektgeneratiounsmodul.
  5. Et ass wichteg datt mir eng "Akzeptanz" vum automatiséierte Testsystem vun Entwéckler entwéckelt hunn. Et gëtt Verständnis datt dëst wichteg an nëtzlech ass. An aus menger eegener Erfahrung kann ech soen, datt dat wäit vum Fall ass. Autotester musse geschriwwe ginn, se musse gepflegt an entwéckelt ginn, d'Resultater analyséiert ginn, an dacks sinn dës Zäitkäschte einfach net wäert. Et ass vill méi einfach an d'Produktioun ze goen an do mat Probleemer ze këmmeren. An eisem Land stinn d'Entwéckler op a froen hir Funktionalitéit mat Autotester ze decken.

Wat ass Next

Eenheetstester an engem DBMS - wéi mir et am Sportmaster maachen, Deel zwee

Loosst eis iwwer d'Entwécklungspläng vum automatiséierte Testprojet schwätzen.

Natierlech, soulaang de Sportmaster Loyalitéit System lieweg ass a weider entwéckelt, kënnen Autotester och bal endlos entwéckelt ginn. Dofir ass d'Haaptrichtung vun der Entwécklung d'Expansioun vum Ofdeckungsgebitt.

Wéi d'Zuel vun den Autotester eropgeet, wäert d'Gesamtzäit vun hirer Aarbecht stänneg eropgoen, a mir mussen erëm op d'Thema vun der Leeschtung zréckkommen. Wahrscheinlech ass d'Léisung d'Zuel vun de parallele thread ze erhéijen.

Awer dëst sinn offensichtlech Weeër fir Entwécklung. Wa mir iwwer eppes méi net-trivial schwätzen, markéiere mir déi folgend:

  1. Elo ginn Autotester um DBMS Niveau geréiert, d.h. Wëssen iwwer PL / SQL ass erfuerderlech fir erfollegräich Aarbecht. Wann néideg, kann d'Systemverwaltung (zum Beispill Metadaten starten oder erstellen) vun enger Aart Admin Panel mat Jenkins oder eppes ähnleches erausgeholl ginn.
  2. Jiddereen gär quantitativ a qualitativ Indikatoren. Fir automatesch Tester ass sou en universellen Indikator Code Coverage oder Code Coverage Metrik. Mat dësem Indikator kënne mir bestëmmen wéi ee Prozentsaz vum Code vun eisem System ënner Test vun Autotester ofgedeckt ass. Vun der Versioun 12.2 un, bitt Oracle d'Fäegkeet dës Metrik ze berechnen a proposéiert de Standard DBMS_PLSQL_CODE_COVERAGE Package ze benotzen.

    Eisen Autotest System ass just iwwer ee Joer al an et kéint Zäit sinn d'Ofdeckung ze evaluéieren. A mengem leschte Projet (e Projet net vum Sportmaster) ass dat geschitt. E Joer nodeems se un Autotester geschafft hunn, huet d'Gestioun d'Aufgab gesat fir ze bewäerten wéi ee Prozentsaz vum Code mir ofgedeckt hunn. Mat méi wéi 1% Ofdeckung wier d'Gestioun frou. Mir, d'Entwéckler, erwaart e Resultat vun ongeféier 10%. Mir hunn Code Ofdeckung geschrauft, gemooss, krut 20%. Fir ze feieren si mir fir de Präis gaang, awer wéi mir dofir gaang sinn a wou mir méi spéit higaange sinn ass eng ganz aner Geschicht.

  3. Autotester kënnen ausgesat Webservicer testen. Oracle erlaabt Iech dëst ze maachen, a mir wäerten net méi eng Rei vu Probleemer stoussen.
  4. An natierlech kann eisen automatiséierten Testsystem op en anere Projet applizéiert ginn. D'Léisung déi mir kritt hunn ass universell a erfuerdert nëmmen d'Benotzung vun Oracle. Ech hunn héieren datt et en Intérêt ass fir automatiséiert Testen op aner Sportmaster Projeten a vläicht wäerte mir hinnen goen.

Conclusiounen

Loosst d'Recap. Am Loyalitéit System Projet am Sportmaster hu mir et fäerdeg bruecht en automatiséierten Testsystem ëmzesetzen. Seng Basis ass d'utPLSQL Léisung vum Stephen Feuerstein. Ronderëm utPLSQL ass de Code fir Autotester an Hëllefsmodule selwer geschriwwen: e Launcher, en Dategeneratiounsmodul, an anerer. Autotester lafen all Dag an, am wichtegsten, schaffen a profitéieren. Mir sinn iwwerzeegt datt mir ugefaang hunn Software vu méi héijer Qualitéit ze verëffentlechen. Zur selwechter Zäit ass déi resultéierend Léisung universell a ka fräi op all Projet applizéiert ginn, wou et néideg ass fir automatiséiert Tester op der Oracle DBMS ze organiséieren.

PS Dësen Artikel huet sech als net ganz spezifesch erausgestallt: et gëtt vill Text a praktesch keng technesch Beispiller. Wann d'Thema global interessant ass, da si mir bereet et weiderzemaachen a mat enger Fortsetzung zréckzekommen, wou mir Iech soen wat an de leschte sechs Méint geännert huet a Code Beispiller ginn.

Schreift Kommentaren wann et Punkte sinn déi an Zukunft ënnersträichen sollen, oder Froen déi Offenbarung erfuerderen.

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Solle mir méi doriwwer schreiwen?

  • jo natierlech

  • Nee Merci

12 Benotzer hunn gestëmmt. 4 Benotzer hu sech enthalen.

Source: will.com

Setzt e Commentaire