Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

E Habr!

ʻO Maxim Ponomarenko koʻu inoa a he mea hoʻomohala wau ma Sportmaster. Loaʻa iaʻu he 10 mau makahiki o ka ʻike ma ke kahua IT. Ua hoʻomaka ʻo ia i kāna ʻoihana ma ka hoʻāʻo manual, a laila hoʻololi i ka hoʻomohala ʻikepili. No nā makahiki 4 i hala iho nei, e hōʻiliʻili ana i ka ʻike i loaʻa i ka hoʻāʻo ʻana a me ka hoʻomohala ʻana, ua hana au i ka hoʻāʻo ʻana ma ka pae DBMS.

Aia wau ma ka hui Sportmaster no hoʻokahi makahiki wale nō a ke kūkulu nei au i ka hoʻāʻo ʻokoʻa ma kekahi o nā papahana nui. I ʻApelila, ua kamaʻilio wau me nā kāne mai Sportmaster Lab ma kahi ʻaha kūkā ma Krasnodar, ua kapa ʻia kaʻu hōʻike ʻo "Unit tests in a DBMS," a makemake wau e kaʻana like me ʻoe. Nui nā kikokikona, no laila ua hoʻoholo wau e hoʻokaʻawale i ka hōʻike i ʻelua pou. Ma ka mua, e kamaʻilio mākou e pili ana i nā autotests a me ka hoʻāʻo ʻana ma ka laulā, a ma ka lua, e noho wau i nā kikoʻī hou aku i kā mākou ʻōnaehana hoʻokolohua a me nā hopena o kāna noi.

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

ʻO ka mea mua, he manaʻo hoʻoluhi iki. He aha ka hoʻāʻo ʻakomi? ʻO kēia ka hoʻāʻo ʻana e hana ʻia me ka hoʻohana ʻana i ka polokalamu, a i kēia manawa IT ua hoʻohana nui ʻia i ka hoʻomohala polokalamu. ʻO kēia ma muli o ka ulu ʻana o nā ʻoihana, ke ulu nei kā lākou ʻōnaehana ʻike a, no laila, ke ulu nei ka nui o nā hana e pono ai e hoʻāʻo. ʻO ka hoʻokō ʻana i ka hoʻāʻo manual e lilo a ʻoi aku ka pipiʻi.

Ua hana au no kahi hui nui nona ka hoʻokuʻu ʻana i kēlā me kēia mahina ʻelua. I ka manawa like, ua hoʻopau ʻia ka mahina holoʻokoʻa i ka loaʻa ʻana o nā mea hoʻāʻo he ʻumikūmālua e nānā lima i ka hana. Mahalo i ka hoʻokō ʻana o ka automation e kahi hui liʻiliʻi o nā mea hoʻomohala, hiki iā mākou ke hōʻemi i ka manawa hoʻāʻo i 2 mau pule i hoʻokahi makahiki a me ka hapa. ʻAʻole mākou i hoʻonui wale i ka wikiwiki o ka hoʻāʻo ʻana, akā ua hoʻomaikaʻi pū i kona ʻano. Hoʻomaka pinepine ʻia nā hoʻokolohua automated a hoʻokō mau lākou i ka papa holoʻokoʻa o nā loiloi i hoʻokomo ʻia i loko o lākou, ʻo ia hoʻi, kāpae mākou i ke kumu kanaka.

Hōʻike ʻia ʻo IT i kēia manawa e ka mea hoʻomohala e koi ʻia ʻaʻole wale e kākau i ka code huahana, akā e kākau pū i nā hoʻokolohua ʻāpana e nānā i kēia code.

Akā, pehea inā e hoʻokumu mua ʻia kāu ʻōnaehana ma ka logic server? ʻAʻohe hopena ākea a i ʻole nā ​​hana maikaʻi loa ma ka mākeke. Ma ke ʻano he lula, hoʻoponopono nā ʻoihana i kēia pilikia ma ka hana ʻana i kā lākou ʻōnaehana hoʻāʻo ponoʻī. ʻO kēia kā mākou ʻōnaehana hoʻāʻo automated kākau ponoʻī i hana ʻia ma kā mākou papahana a e kamaʻilio wau e pili ana i kaʻu hōʻike.

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

Ke ho'āʻo nei i ka kūpaʻa

ʻO ka mea mua, e kamaʻilio e pili ana i ka papahana kahi i kau ai mākou i kahi ʻōnaehana hoʻāʻo automated. ʻO kā mākou papahana ka ʻōnaehana kūpaʻa Sportmaster (ma ke ala, ua kākau mua mākou e pili ana iā ia ma keia pou).

Inā ʻoi aku ka nui o kāu hui, a laila e loaʻa i kāu ʻōnaehana kūpaʻa ʻekolu mau waiwai maʻamau:

  • E hoʻouka nui ʻia kāu ʻōnaehana
  • Loaʻa i kāu ʻōnaehana nā kaʻina hana helu paʻakikī
  • E hoʻomaikaʻi ʻia kāu ʻōnaehana.

E hele kāua ... Ma ka huina, inā mākou e noʻonoʻo i nā hōʻailona Sportmaster āpau, a laila loaʻa iā mākou ma mua o 1000 mau hale kūʻai ma Rusia, Ukraine, Kina, Kazakhstan a me Belarus. Ma kahi o 300 mau kūʻai i hana ʻia ma kēia mau hale kūʻai i kēlā me kēia lā. ʻO ia hoʻi, i kēlā me kēia kekona 000-3 nānā i kā mākou ʻōnaehana. Ma keʻano maʻamau, hoʻouka nui ʻia kā mākou ʻōnaehana kūpaʻa. A ma muli o ka hoʻohana ikaika ʻia ʻana, pono mākou e hāʻawi i nā kūlana kiʻekiʻe loa o kona ʻano, no ka mea, ʻo kēlā me kēia hewa i ka polokalamu ʻo ia ka nui o ka monetary, reputational a me nā poho ʻē aʻe.

I ka manawa like, holo ʻo Sportmaster ma mua o hoʻokahi haneli mau hoʻolaha like ʻole. Aia nā ʻano hoʻolaha: aia nā hoʻolaha huahana, aia nā mea i hoʻolaʻa ʻia i ka lā o ka pule, aia nā mea i hoʻopaʻa ʻia i kahi hale kūʻai kikoʻī, aia nā hoʻolaha no ka nui o ka loaʻa, aia no ka helu o nā waiwai. Ma ka laulā, ʻaʻole ʻino. Loaʻa i nā mea kūʻai aku nā bonus a me nā code hoʻolaha i hoʻohana ʻia i ka wā e kūʻai ai. Ke alakaʻi nei kēia mau mea i ka helu ʻana i kekahi kauoha he hana koʻikoʻi ʻole.

ʻO ka algorithm e hoʻokō nei i ka hoʻoponopono kauoha he mea weliweli a paʻakikī. A ʻo nā hoʻololi ʻana i kēia algorithm he pilikia loa. Me he mea lā ua hiki ke alakaʻi i nā hoʻololi i ʻike ʻole ʻia i nā hopena ʻike ʻole. Akā ʻo ia nā kaʻina hana computing paʻakikī, ʻoi aku ka poʻe e hoʻokō i nā hana koʻikoʻi, ʻo ia nā moho maikaʻi loa no ka automation. ʻO ka nānā ʻana i ka nui o nā hihia like me ka lima e hoʻopau i ka manawa. A no ka mea ʻaʻole i hoʻololi ʻia ka helu komo i ke kaʻina hana, i ka wehewehe ʻana iā ia i hoʻokahi manawa, hiki iā ʻoe ke hana wikiwiki i nā hoʻāʻo maʻalahi a hilinaʻi e hana ka hana.

Ma muli o ka hoʻohana ikaika ʻia ʻana o kā mākou ʻōnaehana, makemake ka ʻoihana i kahi mea hou mai iā ʻoe, e noho me nā manawa a lilo i mea kūʻai aku. I kā mākou ʻōnaehana kūpaʻa, puka mai nā hoʻokuʻu i kēlā me kēia ʻelua mahina. ʻO ia ke ʻano o kēlā me kēia mahina ʻelua pono mākou e hoʻokō i kahi regression piha o ka ʻōnaehana holoʻokoʻa. I ka manawa like, ma ke ʻano, e like me nā IT hou, ʻaʻole hele koke ka hoʻomohala mai ka mea hoʻomohala i ka hana. Hoʻomaka ia ma ke kaapuni o ka mea hoʻomohala, a laila hele i ka papa hoʻāʻo, hoʻokuʻu, ʻae ʻia, a laila pau i ka hana. Ma ka liʻiliʻi, ma ka hoʻāʻo a me ka hoʻokuʻu ʻana, pono mākou e hoʻokō i kahi regression piha o ka ʻōnaehana holoʻokoʻa.

ʻO nā waiwai i wehewehe ʻia he mea maʻamau no kahi ʻōnaehana kūpaʻa. E kamaʻilio kākou e pili ana i nā hiʻohiʻona o kā mākou papahana.

ʻO ka ʻenehana, ʻo 90% o ka loiloi o kā mākou ʻōnaehana kūpaʻa i hoʻokumu ʻia ma luna o Oracle. Aia kahi mea kūʻai aku i hōʻike ʻia ma Delphi, nāna e hana i ka hana a kahi luna hoʻonohonoho hana. Aia nā lawelawe pūnaewele i hōʻike ʻia no nā noi waho (e laʻana he pūnaewele). No laila, kūpono loa inā mākou e kau i kahi ʻōnaehana hoʻāʻo automated, e hana mākou ma Oracle.

Ua ola ka ʻōnaehana kūpaʻa ma Sportmaster no nā makahiki ʻoi aku ma mua o 7 a ua hana ʻia e nā mea hoʻomohala hoʻokahi... ʻO ka awelika o nā mea hoʻomohala ma kā mākou papahana i kēia mau makahiki 7 he 3-4 mau kānaka. Akā i ka makahiki i hala, ua ulu nui kā mākou hui, a i kēia manawa aia he 10 poʻe e hana ana i ka papahana. ʻO ia hoʻi, hele mai nā kānaka i ka papahana i ʻike ʻole i nā hana maʻamau, nā kaʻina hana, a me ka hoʻolālā. A ke piʻi aʻe ka pilikia e poina mākou i nā hewa.

Hōʻike ʻia ka papahana ma ka loaʻa ʻole o nā mea hōʻike i hoʻolaʻa ʻia ma ke ʻano he limahana limahana. Aia nō, ʻoiaʻiʻo, hoʻāʻo, akā hoʻokō ʻia ka hoʻāʻo ʻana e nā mea loiloi, ma kahi o kā lākou mau kuleana nui: ke kamaʻilio ʻana me nā mea kūʻai aku ʻoihana, nā mea hoʻohana, hoʻomohala i nā koi ʻōnaehana, etc. etc... ʻOiai ke hoʻokō ʻia nei ka hoʻāʻo ʻana i ke ʻano kiʻekiʻe loa (pono loa kēia e haʻi ʻia, no ka mea e hopu paha kekahi o nā mea loiloi i ka maka o kēia hōʻike), ʻaʻole i hoʻopau ʻia ka maikaʻi o ka loea a me ka noʻonoʻo ʻana i kahi mea. .

Ke noʻonoʻo nei i nā mea a pau i luna, e hoʻomaikaʻi i ka maikaʻi o ka huahana i hāʻawi ʻia a hōʻemi i ka manawa hoʻomohala, ʻo ka manaʻo o ka hoʻomaʻamaʻa ʻana i ka hoʻāʻo ʻana i kahi papahana e like me ke kūpono. A ma nā ʻano like ʻole o ka noho ʻana o ka ʻōnaehana kūpaʻa, ua hoʻāʻo nā mea hoʻomohala hoʻokahi e uhi i kā lākou code me nā hoʻokolohua ʻāpana. Ma ke ʻano holoʻokoʻa, he kaʻina hana i hoʻokaʻawale ʻole ʻia, me ka hoʻohana ʻana o kēlā me kēia kanaka i kā lākou hana ponoʻī a me nā ʻano hana. He mea maʻamau nā hopena hope loa i nā hoʻokolohua ʻāpana: ua hoʻomohala ʻia nā hoʻāʻo, hoʻohana ʻia no kekahi manawa, mālama ʻia i loko o kahi waihona waihona i hoʻololi ʻia, akā i kekahi manawa ua pau ka holo ʻana a poina. ʻO ka mea mua, ma muli o ka pili ʻana o nā hoʻokolohua i kahi mea hoʻokani kikoʻī, ʻaʻole i ka papahana.

utPLSQL hele mai e hoʻopakele

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

ʻIke paha ʻoe i kekahi mea e pili ana iā Stephen Feuerstein?

He kanaka akamai kēia i hāʻawi i ka hapa lōʻihi o kāna ʻoihana e hana pū me Oracle a me PL/SQL, a ua kākau i nā hana he nui ma kēia kumuhana. Ua kapa ʻia kekahi o kāna mau puke kaulana: “Oracle PL/SQL. No ka poʻe ʻoihana." ʻO Stephen ka mea nāna i hoʻomohala i ka hoʻonā utPLSQL, a i ʻole, e like me ke ʻano o, Unit Testing framework no Oracle PL/SQL. Ua hoʻokumu ʻia ka hoʻonā utPLSQL i ka makahiki 2016, akā hoʻomau ʻia ka hana ikaika a hoʻokuʻu ʻia nā mana hou. I ka manawa o ka hōʻike ʻana, ua hoʻi ka mana hou i ka lā Malaki 24, 2019.
He aha ia. He papahana open source kēia. He mau megabytes kona kaumaha, me nā laʻana a me nā palapala. Ma ke kino, he schema kaawale ia ma ka waihona ORACLE me kahi pūʻolo a me nā papa no ka hoʻonohonoho ʻana i ka hoʻāʻo ʻana. Hoʻokomo ʻia kekahi mau kekona. ʻO kahi hiʻohiʻona kūikawā o utPLSQL ka maʻalahi o ka hoʻohana.
Ma ke ao holoʻokoʻa, ʻo utPLSQL kahi hana no ka holo ʻana i nā hoʻokolohua ʻāpana, kahi i hoʻomaopopo ʻia ai kahi hōʻike ʻāpana ma ke ʻano he kaʻina hana ʻo Oracle batch maʻamau, ʻo ia ka hui e hahai i kekahi mau lula. Ma waho aʻe o ka hoʻomaka ʻana, mālama ʻo utPLSQL i kahi log o kāu mau hoʻāʻo a pau, a loaʻa pū kekahi ʻōnaehana hōʻike kūloko.

E nānā i kahi laʻana o ke ʻano o ke code test unit, i hoʻohana ʻia me kēia ʻenehana.

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

No laila, hōʻike ka pale i ke code no kahi kikoʻī kikoʻī maʻamau me nā hoʻokolohua ʻāpana. He aha nā koi koi? Pono e hoʻopili mua ʻia ka ʻeke me "utp_". Pono nā kaʻina hana a pau me nā hoʻāʻo e like me ka prefix like. Pono i loko o ka pūʻolo nā kaʻina hana maʻamau: "utp_setup" a me "utp_teardown". Kāhea ʻia ke kaʻina hana mua ma ka hoʻomaka ʻana i kēlā me kēia hoʻāʻo ʻana, ʻo ka lua - ma hope o ka hoʻomaka ʻana.

"utp_setup", ma ke ʻano he lula, hoʻomākaukau i kā mākou ʻōnaehana e holo i kahi hoʻāʻo ʻāpana, no ka laʻana, ka hana ʻana i ka ʻikepili hōʻike. "utp_teardown" - ma ka ʻokoʻa, hoʻi nā mea a pau i nā hoʻonohonoho kumu a hoʻonohonoho hou i nā hopena hoʻomaka.

Eia kekahi laʻana o ka hoʻāʻo ʻāpana maʻalahi e nānā i ka hoʻoponopono ʻana o ka helu kelepona mea kūʻai aku i ke ʻano maʻamau no kā mākou ʻōnaehana kūpaʻa. ʻAʻohe kūlana koi no ke kākau ʻana i nā kaʻina hana me nā hoʻokolohua ʻāpana. Ma ke ʻano maʻamau, kāhea ʻia kahi ʻano o ka ʻōnaehana ma lalo o ka hoʻāʻo ʻana, a hoʻohālikelike ʻia ka hopena i hoʻihoʻi ʻia e kēia ʻano me ka mea kuhikuhi. He mea nui ka hoʻohālikelike ʻana o ka hopena kuhikuhi a me ka mea i loaʻa ma o nā ala utPLSQL maʻamau.

Hiki i ka ho'āʻo ʻāpana ke loaʻa kekahi helu o nā loiloi. E like me ka mea i ʻike ʻia mai ka laʻana, hana mākou i ʻehā mau kelepona i ke ʻano i hoʻāʻo ʻia e maʻamau i ka helu kelepona a loiloi i ka hopena ma hope o kēlā me kēia kelepona. I ka hoʻomohala ʻana i kahi hoʻāʻo ʻāpana, pono ʻoe e noʻonoʻo aia nā loiloi ʻaʻole pili i ka ʻōnaehana ma kekahi ʻano, a ma hope o kekahi pono ʻoe e ʻōwili hou i ke kūlana kumu o ka ʻōnaehana.
No ka laʻana, i ka hōʻike ʻāpana i hōʻike ʻia mākou e hoʻopili wale i ka helu kelepona hoʻokomo, ʻaʻole ia e pili i ka ʻōnaehana kūpaʻa ma kekahi ʻano.

A inā mākou e kākau i nā hoʻokolohua ʻāpana me ka hoʻohana ʻana i ke ʻano o ka hana ʻana i kahi mea kūʻai aku hou, a laila ma hope o kēlā me kēia hoʻāʻo e hana ʻia kahi mea kūʻai hou i loko o ka ʻōnaehana, hiki ke hoʻopilikia i ka hoʻomaka ʻana o ka hoʻāʻo.

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

Penei ka holo ʻana o nā hoʻāʻo ʻāpana. ʻElua mau koho hoʻomaka: holo i nā hoʻāʻo ʻāpana āpau mai kahi pūʻolo kikoʻī a i ʻole ka holo ʻana i kahi hoʻāʻo ʻāpana kikoʻī ma kahi pūʻolo kikoʻī.

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

ʻO kēia ke ʻano o kahi laʻana o kahi ʻōnaehana hōʻike kūloko. Ma muli o nā hopena o ka hoʻāʻo ʻana, kūkulu ʻo utPLSQL i kahi hōʻike liʻiliʻi. Ma laila mākou e ʻike ai i ka hopena no kēlā me kēia kikoʻī kikoʻī a me ka hopena holoʻokoʻa o ka hoʻāʻo ʻāpana.

6 mau rula o ka autotests

Ma mua o ka hoʻomaka ʻana e hana i kahi ʻōnaehana hou no ka hoʻāʻo ʻana i ka ʻōnaehana kūpaʻa, me ka hoʻokele, ua hoʻoholo mākou i nā loina e pono ai kā mākou mau hoʻokolohua ʻokoʻa e hiki mai ana.

Nā hoʻāʻo ʻāpana i kahi DBMS - pehea mākou e hana ai ma Sportmaster, ʻāpana hoʻokahi

  1. Pono pono nā ho'āʻo ʻokoʻa a pono. Loaʻa iā mākou nā mea hoʻomohala maikaʻi, pono e haʻi ʻia, no ka mea e ʻike paha kekahi o lākou i kēia hōʻike, a kākau lākou i nā code nani. Akā ʻaʻole kūpono kā lākou code kupanaha a loaʻa, loaʻa, a e hoʻomau i nā hewa. Pono nā hoʻāʻo ʻokoʻa e ʻike i kēia mau hewa. Inā ʻaʻole kēia ka hihia, a laila ke kākau nei mākou i nā autotest maikaʻi ʻole, a i ʻole mākou i hele i kahi wahi make, ʻaʻole i hoʻomohala ʻia. Ma nā hihia ʻelua, ke hana nei mākou i kahi mea hewa, a ʻaʻole kūpono kā mākou ala.
  2. Pono e hoʻohana ʻia nā hoʻokolohua auto. ʻAʻole kūpono ka hoʻolilo ʻana i ka manawa a me ka hoʻoikaika ʻana ma ke kākau ʻana i kahi huahana polokalamu, waiho i loko o kahi waihona a poina. Pono e holo nā ho'āʻo, a holo e like me ka hiki.
  3. Pono nā ho'āʻo auto e hana paʻa. ʻAʻohe o ka manawa o ka lā, ka hoʻomaka ʻana a me nā hoʻonohonoho ʻōnaehana ʻē aʻe, pono e alakaʻi nā holo hoʻāʻo i ka hopena like. Ma keʻano he kūlana, ua hōʻoia kēia i ka hanaʻana o nā autotests me nāʻikepili ho'āʻo kūikawā me nā hoʻonohonoho pūnaewele paʻa.
  4. Pono nā hoʻāʻo ʻokoʻa e hana i ka wikiwiki e ʻae ʻia no kāu papahana. Hoʻoholo ʻia kēia manawa no kēlā me kēia ʻōnaehana. Hiki i kekahi poʻe ke hana i ka lā a pau, a ʻo nā mea ʻē aʻe he mea koʻikoʻi ke hana i loko o kekona. E haʻi aku wau iā ʻoe ma hope liʻiliʻi i nā pae wikiwiki i loaʻa iā mākou i kā mākou papahana.
  5. Pono e maʻalahi ka hoʻomohala ʻana i ka autotest. ʻAʻole pono e hōʻole i ka hoʻāʻo ʻana i kekahi hana no ka mea ʻaʻole mākou i hana ma mua a no kekahi kumu ʻē aʻe. ʻAʻole kau ʻo utPLSQL i nā palena i ka hoʻomohala ʻana, a ʻo Oracle, ma ke kumu, hiki iā ʻoe ke hoʻokō i nā mea like ʻole. ʻO ka hapa nui o nā pilikia he hopena, ʻo ia wale nō ka manawa a me ka hoʻoikaika.
  6. Ka hiki ke hoʻohana. Loaʻa iā mākou kekahi mau kū i kahi e pono ai mākou e holo i nā hoʻokolohua. Ma kēlā me kēia kū, hiki ke hoʻonui ʻia kahi dump data i kēlā me kēia manawa. Pono ʻoe e hana i kahi papahana me nā hoʻāʻo maʻalahi i ke ala e hiki ai iā ʻoe ke hoʻokō me ka ʻeha ʻole i kāna hoʻonohonoho piha a ʻāpana paha.

A ma ka pou ʻelua i nā lā ʻelua e haʻi aku wau iā ʻoe i ka mea a mākou i hana ai a me nā hopena i loaʻa iā mākou.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka