Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Hey Habr!

Non mwen se Maxim Ponomarenko e mwen se yon pwomotè nan Sportmaster. Mwen gen 10 ane eksperyans nan domèn IT. Li te kòmanse karyè li nan tès manyèl, Lè sa a, chanje nan devlopman baz done. Pandan 4 dènye ane yo, akimile konesans yo te genyen nan tès ak devlopman, mwen te otomatize tès nan nivo DBMS.

Mwen te nan ekip Sportmaster la pou jis plis pase yon ane epi mwen devlope tès otomatik sou youn nan gwo pwojè yo. Nan mwa avril, mesye yo nan Sportmaster Lab ak mwen te pale nan yon konferans nan Krasnodar, rapò mwen an te rele "Tès inite nan yon DBMS," e kounye a, mwen vle pataje li avèk ou. Pral gen anpil tèks, kidonk mwen deside divize rapò a an de pòs. Nan premye a, nou pral pale sou autotests ak tès an jeneral, ak nan dezyèm lan, mwen pral rete nan plis detay sou sistèm tès inite nou an ak rezilta yo nan aplikasyon li yo.

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Premyèman, yon ti kras teyori raz. Ki sa ki tès otomatik? Sa a se tès ki fèt lè l sèvi avèk lojisyèl, ak nan IT modèn li se de pli zan pli itilize nan devlopman lojisyèl. Sa a se akòz lefèt ke konpayi yo ap grandi, sistèm enfòmasyon yo ap grandi epi, kòmsadwa, kantite fonksyonalite ki bezwen teste ap grandi. Fè tès manyèl ap vin pi plis ak pi chè.

Mwen te travay pou yon gwo konpayi ki gen degaje soti chak de mwa. An menm tan an, yon mwa antye te pase pou gen yon douzèn tèsteur manyèlman tcheke fonksyonalite a. Mèsi a aplikasyon an nan automatisation pa yon ekip ti devlopè, nou te kapab redwi tan tès yo a 2 semèn nan yon ane ak yon mwatye. Nou pa sèlman ogmante vitès tès la, men tou, amelyore kalite li yo. Tès otomatik yo lanse regilyèman epi yo toujou fè tout kou chèk ki enkli ladan yo, se sa ki, nou eskli faktè imen an.

Modèn IT karakterize pa lefèt ke yon pwomotè ka oblije pa sèlman ekri kòd pwodwi, men tou, ekri tès inite ki tcheke kòd sa a.

Men, e si sistèm ou an baze sitou sou lojik sèvè? Pa gen okenn solisyon inivèsèl oswa pi bon pratik sou mache a. Kòm yon règ, konpayi yo rezoud pwoblèm sa a pa kreye pwòp tèt ou-ekri sistèm tès yo. Sa a se pwòp tèt nou ekri sistèm tès otomatik ki te kreye sou pwojè nou an epi mwen pral pale sou li nan rapò mwen an.

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Tès lwayote

Premyèman, ann pale sou pwojè a kote nou te deplwaye yon sistèm tès otomatik. Pwojè nou an se sistèm lwayote Sportmaster (nan chemen an, nou te deja ekri sou li nan pòs sa a).

Si konpayi ou a ase gwo, Lè sa a, sistèm lwayote ou a pral gen twa pwopriyete estanda:

  • Sistèm ou a pral trè chaje
  • Sistèm ou a pral genyen pwosesis enfòmatik konplèks
  • Sistèm ou a pral aktivman amelyore.

Ann ale nan lòd... An total, si nou konsidere tout mak Sportmaster, Lè sa a, nou gen plis pase 1000 magazen nan Larisi, Ikrèn, Lachin, Kazakhstan ak Byelorisi. Apeprè 300 acha yo fè nan magazen sa yo chak jou. Sa vle di, chak dezyèm chèk 000-3 antre nan sistèm nou an. Natirèlman, sistèm lwayote nou an trè chaje. Epi depi li se aktivman itilize, nou dwe bay estanda ki pi wo nan bon jan kalite li yo, paske nenpòt erè nan lojisyèl an vle di gwo pèt monetè, repitasyon ak lòt.

An menm tan an, Sportmaster kouri plis pase yon santèn pwomosyon diferan. Gen yon varyete de pwomosyon: gen pwomosyon pwodwi, gen sa yo dedye a jou nan semèn nan, gen sa yo ki mare nan yon magazen espesifik, gen pwomosyon pou kantite lajan an nan resi a, gen pou kantite machandiz. An jeneral, pa move. Kliyan yo gen bonis ak kòd pwomosyon ke yo itilize lè yo fè acha. Tout bagay sa a mennen nan lefèt ke kalkile nenpòt lòd se yon travay ki pa trivial.

Algorithm ki aplike pwosesis lòd se vrèman terib ak konplike. Ak nenpòt chanjman nan algorithm sa a se byen riske. Li te sanble ke chanjman ki pi w pèdi ensiyifyan yo te kapab mennen nan efè byen enprevizib. Men, se jisteman pwosesis enfòmatik konplèks sa yo, espesyalman sa yo ki aplike fonksyonalite kritik, ki pi bon kandida yo pou automatisation. Tcheke plizyè douzèn ka menm jan an alamen pran anpil tan. Epi depi pwen antre nan pwosesis la pa chanje, lè w te dekri li yon fwa, ou ka byen vit kreye tès otomatik epi ou ka gen konfyans ke fonksyonalite a ap travay.

Depi sistèm nou an aktivman itilize, biznis la pral vle yon bagay nouvo nan men ou, viv ak tan yo epi yo dwe kliyan-oryante. Nan sistèm lwayote nou an, degaje yo soti chak de mwa. Sa vle di ke chak de mwa nou bezwen pote soti nan yon regresion konplè nan sistèm nan tout antye. An menm tan an, natirèlman, tankou nan nenpòt IT modèn, devlopman pa imedyatman ale soti nan pwomotè a nan pwodiksyon an. Li orijine sou kous pwomotè a, Lè sa a, youn apre lòt pase nan ban tès la, lage, akseptasyon, epi sèlman Lè sa a, fini nan pwodiksyon an. Nan yon minimòm, sou tès la ak sikui lage, nou bezwen pote soti nan yon regresion konplè nan tout sistèm nan.

Pwopriyete ki dekri yo se estanda pou prèske nenpòt sistèm lwayote. Ann pale sou karakteristik pwojè nou an.

Teknolojikman, 90% nan lojik sistèm lwayote nou an baze sou sèvè epi aplike sou Oracle. Gen yon kliyan ekspoze nan Delphi, ki fè fonksyon an nan yon administratè espas travay otomatik. Gen ekspoze sèvis entènèt pou aplikasyon ekstèn (pa egzanp yon sit entènèt). Se poutèt sa, li trè lojik ke si nou deplwaye yon sistèm tès otomatik, nou pral fè li sou Oracle.

Sistèm lwayote nan Sportmaster egziste pou plis pase 7 ane e li te kreye pa yon sèl devlopè... Kantite mwayèn devlopè sou pwojè nou an pandan 7 ane sa yo te 3-4 moun. Men, pandan ane ki sot pase a, ekip nou an te grandi anpil, e kounye a, gen 10 moun k ap travay sou pwojè a. Sa vle di, moun ki vin nan pwojè a ki pa abitye ak travay tipik, pwosesis, ak achitekti. Epi gen yon risk ogmante ke nou pral manke erè.

Pwojè a karakterize pa absans tèsteur devwe kòm inite anplwaye yo. Gen, nan kou, tès, men tès yo te pote soti nan analis yo, anplis lòt responsablite prensipal yo: kominike ak kliyan biznis, itilizatè yo, devlope kondisyon sistèm, elatriye. elatriye... Malgre lefèt ke tès yo te pote soti nan bon jan kalite trè wo (sa a se espesyalman apwopriye mansyone, depi kèk nan analis yo ka kenbe je nan rapò sa a), efikasite nan espesyalizasyon ak konsantrasyon sou yon sèl bagay pa te anile. .

Lè nou konsidere tout sa ki anwo yo, pou amelyore kalite pwodwi a delivre epi redwi tan devlopman, lide otomatik tès sou yon pwojè sanble trè lojik. Ak nan diferan etap nan egzistans sistèm lwayote a, devlopè endividyèl yo te fè efò pou kouvri kòd yo ak tès inite yo. An jeneral, li te yon pwosesis san patipri disjointed, ak tout moun ki itilize pwòp achitekti ak metòd yo. Rezilta final yo te komen nan tès inite yo: tès yo te devlope, itilize pou kèk tan, ki estoke nan yon depo dosye vèsyon, men nan kèk pwen yo sispann kouri epi yo te bliye. Premye a tout, sa a te akòz lefèt ke tès yo te mare plis nan yon sèn espesifik, epi yo pa nan pwojè a.

utPLSQL vin pote sekou

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Èske w konnen yon bagay sou Stephen Feuerstein?

Sa a se yon nèg entelijan ki konsakre yon pati long nan karyè li nan travay ak Oracle ak PL/SQL, e li te ekri byen yon gwo kantite travay sou sijè sa a. Youn nan liv pi popilè li yo rele: "Oracle PL/SQL. Pou pwofesyonèl." Li te Stephen ki te devlope solisyon utPLSQL la, oswa, jan li vle di, kad tès inite pou Oracle PL/SQL. Solisyon utPLSQL la te kreye an 2016, men li kontinye ap travay aktivman sou li epi yo pibliye nouvo vèsyon. Nan moman rapò a, dènye vèsyon an se 24 mas 2019.
Kisa li ye. Sa a se yon pwojè sous louvri separe. Li peze yon koup de megabyte, ki gen ladan egzanp ak dokiman. Fizikman, li se yon chema separe nan baz done ORACLE ak yon seri pakè ak tab pou òganize tès inite yo. Enstalasyon pran kèk segonn. Yon karakteristik diferan nan utPLSQL se fasilite li yo nan itilize.
Globalman, utPLSQL se yon mekanis pou fè tès inite yo, kote yon tès inite yo konprann kòm pwosedi pakèt òdinè Oracle, òganizasyon an ki swiv sèten règ. Anplis lansman, utPLSQL estoke yon boutèy demi lit tout tès ou yo, epi tou li gen yon sistèm rapò entèn.

Ann gade yon egzanp sou sa kòd tès inite a sanble, aplike lè l sèvi avèk teknik sa a.

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Se konsa, ekran an montre kòd la pou yon spesifikasyon pake tipik ak tès inite yo. Ki kondisyon obligatwa yo? Pake a dwe prefiks ak "utp_". Tout pwosedi ak tès yo dwe gen egzakteman menm prefiks la. Pake a dwe genyen de pwosedi estanda: "utp_setup" ak "utp_teardown". Premye pwosedi a rele pa rekòmanse chak tès inite, dezyèm lan - apre lansman.

"utp_setup", kòm yon règ, prepare sistèm nou an pou kouri yon tès inite, pou egzanp, kreye done tès yo. "utp_teardown" - okontrè, tout bagay retounen nan paramèt orijinal yo ak reset rezilta lansman yo.

Isit la se yon egzanp tès inite ki pi senp la ki tcheke nòmalizasyon nimewo telefòn kliyan yo te antre nan fòm estanda pou sistèm lwayote nou an. Pa gen okenn estanda obligatwa sou fason pou ekri pwosedi ak tès inite yo. Kòm yon règ, yo fè yon apèl nan yon metòd nan sistèm nan anba tès, ak rezilta a retounen pa metòd sa a konpare ak yon sèl referans. Li enpòtan pou konparezon rezilta referans lan ak youn nan jwenn rive atravè metòd estanda utPLSQL.

Yon tès inite ka gen nenpòt kantite chèk. Kòm ka wè nan egzanp lan, nou fè kat apèl youn apre lòt nan metòd la teste nòmalize nimewo telefòn la ak evalye rezilta a apre chak apèl. Lè w ap devlope yon tès inite, ou dwe pran an kont ke gen chèk ki pa afekte sistèm nan okenn fason, epi apre kèk ou bezwen woule tounen nan eta orijinal la nan sistèm lan.
Pou egzanp, nan tès inite prezante a nou tou senpleman fòma nimewo telefòn nan opinyon, ki pa afekte sistèm nan lwayote nan okenn fason.

Men, si nou ekri tès inite yo lè l sèvi avèk metòd pou kreye yon nouvo kliyan, Lè sa a, apre chak tès yo pral kreye yon nouvo kliyan nan sistèm nan, ki ka afekte lansman ki vin apre tès la.

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Sa a se ki jan tès inite yo kouri. Gen de opsyon lansman posib: kouri tout tès inite ki soti nan yon pake espesifik oswa kouri yon tès inite espesifik nan yon pake espesifik.

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

Sa a se yon egzanp yon sistèm rapò entèn sanble. Dapre rezilta tès inite a, utPLSQL bati yon ti rapò. Nan li nou wè rezilta pou chak chèk espesifik ak rezilta jeneral tès inite a.

6 règ ototès yo

Anvan yo te kòmanse kreye yon nouvo sistèm pou tès otomatize nan sistèm lwayote a, ansanm ak jesyon, nou te detèmine prensip yo ke pwochen tès otomatik nou yo ta dwe konfòme yo avèk yo.

Tès inite nan yon DBMS - ki jan nou fè li nan Sportmaster, premye pati

  1. Ototès yo dwe efikas epi yo dwe itil. Nou gen devlopè bèl bagay, ki definitivman bezwen mansyone, paske kèk nan yo pral pwobableman wè rapò sa a, epi yo ekri kòd bèl bagay. Men, menm kòd bèl bagay yo pa pafè epi li gen, gen, epi yo pral kontinye gen erè. Tès oto yo oblije jwenn erè sa yo. Si sa a se pa ka a, Lè sa a, swa nou ap ekri move ototès, oswa nou rive nan yon zòn ki mouri ki, nan prensip, yo pa ap devlope. Nan de ka yo, nou ap fè yon bagay ki mal, epi apwòch nou an tou senpleman pa fè sans.
  2. Yo ta dwe itilize ototès yo. Li pa fè okenn sans pase anpil tan ak efò sou ekri yon pwodwi lojisyèl, mete l nan yon depo epi bliye li. Tès yo ta dwe kouri, epi kouri kòm regilyèman ke posib.
  3. Autotests ta dwe travay stab. Kèlkeswa lè a nan jounen an, kanpe lansman ak lòt anviwònman sistèm, kouri tès yo ta dwe mennen nan menm rezilta a. Kòm yon règ, sa a se asire pa lefèt ke autotests travay ak done tès espesyal ak anviwònman sistèm fiks yo.
  4. Autotests ta dwe travay nan yon vitès akseptab pou pwojè ou. Tan sa a detèmine endividyèlman pou chak sistèm. Gen kèk moun ki gen mwayen pou yo travay tout jounen an, pandan ke lòt moun jwenn li enpòtan pou fè li an segonn. Mwen pral di w yon ti kras pita ki estanda vitès nou reyalize nan pwojè nou an.
  5. Devlopman Autotest yo ta dwe fleksib. Li pa rekòmande pou refize teste nenpòt fonksyonalite tou senpleman paske nou pa te fè li anvan oswa pou kèk lòt rezon. utPLSQL pa enpoze okenn restriksyon sou devlopman, ak Oracle, an prensip, pèmèt ou aplike yon varyete de bagay. Pifò pwoblèm gen yon solisyon, se jis yon kesyon de tan ak efò.
  6. Deplwayabilite. Nou gen plizyè kanpe kote nou bezwen kouri tès yo. Nan chak kanpe, yon pil fatra done ka mete ajou nenpòt ki lè. Li nesesè fè yon pwojè ak tès otomatik yo nan yon fason ke ou ka san doulè fè enstalasyon li yo konplè oswa pasyèl.

Ak nan dezyèm pòs la nan yon koup de jou mwen pral di ou sa nou te fè ak ki rezilta nou reyalize.

Sous: www.habr.com

Add nouvo kòmantè