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

ʻO ka hapa mua - maanei.

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

E noʻonoʻo i ke kūlana. Ke alo nei ʻoe i ka hana o ka hoʻomohala ʻana i nā hana hou. Loaʻa iā ʻoe nā hoʻomohala mai kou mau mua. Inā manaʻo mākou ʻaʻohe ou kuleana pono, he aha kāu e hana ai?

ʻO ka pinepine, poina nā hana kahiko a hoʻomaka hou nā mea āpau. ʻAʻohe mea makemake e ʻeli i ke code a kekahi, akā inā loaʻa iā ʻoe ka manawa, no ke aha e hoʻomaka ai e hana i kāu ʻōnaehana ponoʻī? He ala maʻamau kēia, a he pololei loa. Akā ma kā mākou papahana ua hana hewa mākou. Hoʻokumu mākou i ka ʻōnaehana hoʻāʻo ʻokoʻa e hiki mai ana ma nā hoʻomohala ʻana i nā hoʻokolohua ʻāpana ma utPLSQL mai ko mākou mau mua, a laila hele mākou e hana ma nā ʻaoʻao like ʻole.

  1. Hoʻihoʻi hou i nā hoʻāʻo ʻāpana kahiko. ʻO ka hoʻihoʻi ʻana ʻo ia ka hoʻololi ʻana i nā hoʻokolohua i ke kūlana o ka ʻōnaehana kūpaʻa a me ka hoʻololi ʻana i nā hoʻokolohua i nā kūlana utPLSQL.
  2. Hoʻoholo i kahi pilikia me ka hoʻomaopopo ʻana i ke ʻano maoli, nā ʻano hana a me nā kaʻina i uhi ʻia me nā autotests. Pono ʻoe e mālama i kēia ʻike ma kou poʻo, a i ʻole e huki i nā hopena e pili pono ana i ke code autotest. No laila, ua hoʻoholo mākou e hana i kahi papa inoa. Hāʻawi mākou i kahi code mnemonic kūikawā i kēlā me kēia autotest, hana i kahi wehewehe a hoʻopaʻa ʻia nā hoʻonohonoho (no ka laʻana, ma lalo o nā kūlana e hoʻokuʻu ʻia ai, a i ʻole ka mea e hiki ke hana inā hāʻule ka hoʻomaka ʻana o ka hoʻāʻo). ʻO ka mea nui, ua hoʻopiha mākou i nā metadata e pili ana i nā autotests a waiho i kēlā metadata i loko o nā papa kuhikuhi utPLSQL maʻamau.
  3. ʻO ka wehewehe ʻana i ka hoʻolālā hoʻonui, ʻo ia hoʻi. ke koho ʻana i ka hana e pili ana i ka hōʻoia ʻia e nā hoʻokolohua automated. Ua hoʻoholo mākou e hoʻolohe i ʻekolu mau mea: ka hoʻomaikaʻi ʻana o ka ʻōnaehana hou, nā hanana hana, a me nā kaʻina hana ʻōnaehana koʻikoʻi. No laila, ke hoʻomohala nei mākou i ka like me ka hoʻokuʻu ʻana, e hōʻoiaʻiʻo ana i kona ʻano kiʻekiʻe, i ka manawa like e hoʻonui i ke ʻano o ka regression a me ka hōʻoia ʻana i ka hilinaʻi o ka ʻōnaehana ma nā wahi koʻikoʻi. ʻO ka bottleneck mua loa ʻo ia ke kaʻina o ka hāʻawi ʻana i nā uku a me nā bonus ma kahi kikoʻī.
  4. Ma keʻano maʻamau, hoʻomaka mākou e hoʻomohala i nā autotest hou. ʻO kekahi o nā hana i hoʻokuʻu mua ʻia ʻo ia ka loiloi i ka hana o nā laʻana i koho mua ʻia o ka ʻōnaehana kūpaʻa. Loaʻa i kā mākou papahana kahi poloka o nā nīnau SQL paʻa paʻa e koho i nā mea kūʻai aku ma muli o nā kūlana. No ka laʻana, e kiʻi i kahi papa inoa o nā mea kūʻai aku a pau i kūʻai hope ʻia ma kekahi kūlanakauhale kikoʻī, a i ʻole kahi papa inoa o nā mea kūʻai aku i ʻoi aku ka nui o ke kumukūʻai ma mua o kekahi waiwai. Ma ka loaʻa ʻana o nā autotests kākau, ua nānā mākou i nā laʻana i koho mua ʻia, i hoʻopaʻa ʻia i nā ʻāpana hana benchmark, a ua loaʻa iā mākou ka hoʻāʻo ukana.
  5. Pono ka hana ʻana me nā autotest. ʻO nā hana maʻamau ʻelua e holo ana i nā autotests a me ka hana ʻana i ka ʻikepili hōʻike. ʻO kēia ke ʻano i ʻike ʻia ai ʻelua mau modula kōkua i kā mākou ʻōnaehana: kahi module hoʻomaka a me kahi module hana ʻikepili.

    Hōʻike ʻia ka mea hoʻolaha ma ke ʻano he kaʻina hana holoʻokoʻa me hoʻokahi ʻāpana hoʻokomo kikokikona. Ma ke ʻano he ʻāpana, hiki iā ʻoe ke hāʻawi i ke code mnemonic autotest, inoa pūʻolo, inoa hōʻike, hoʻonohonoho autotest, a i ʻole kahi huaʻōlelo i mālama ʻia. Na ke kaʻina hana e koho a holo i nā autotest a pau e hoʻokō i nā kūlana.

    Hōʻike ʻia ka module hoʻomohala ʻikepili ma ke ʻano o kahi puʻupuʻu no kēlā me kēia mea o ka ʻōnaehana ma lalo o ka hoʻāʻo ʻana (kahi papa ma ka waihona), ua hana ʻia kahi kaʻina hana kūikawā e hoʻokomo i ka ʻikepili ma laila. Ma kēia kaʻina hana, hoʻopiha ʻia nā waiwai paʻamau e like me ka hiki, e hōʻoiaʻiʻo i ka hana ʻana o nā mea maoli ma ke kaomi ʻana i kahi manamana lima. A no ka maʻalahi o ka hoʻohana ʻana, ua hana ʻia nā mamana no ka ʻikepili i hana ʻia. No ka laʻana, hana i kahi mea kūʻai aku o kekahi mau makahiki me kahi kelepona hoʻāʻo a me kahi kūʻai paʻa.

  6. Pono e hoʻomaka a holo nā autotests i kahi manawa kūpono no kāu ʻōnaehana. No laila, ua hoʻonohonoho ʻia kahi hoʻolaha pō i kēlā me kēia lā, e pili ana i nā hopena i hana ʻia ai kahi hōʻike e pili ana i nā hopena a hoʻouna ʻia i ka hui hoʻomohala holoʻokoʻa ma o ka leka uila. Ma hope o ka hoʻihoʻi ʻana i nā autotest kahiko a me ka hana ʻana i nā mea hou, ʻo ka nui o ka manawa hana he 30 mau minuke. Ua kūpono kēia hana i nā mea a pau, ʻoiai ua hoʻomaka ʻia ka hoʻomaka ʻana ma waho o nā hola hana.

    Akā pono mākou e hana i ka hoʻonui ʻana i ka wikiwiki o ka hana. Hoʻonui ʻia ka ʻōnaehana kūpaʻa i ka hana i ka pō. Ma ke ʻano o kekahi o nā hoʻokuʻu, pono mākou e hoʻololi wikiwiki i ka pō. ʻO ka kali ʻana no ka hapalua hola no ka hopena o nā autotests i ka ʻekolu o ke kakahiaka ʻaʻole i hauʻoli ke kanaka kuleana no ka hoʻokuʻu ʻana (aloha ikaika iā Alexey Vasyukov!), A i ke kakahiaka aʻe ua ʻōlelo ʻia nā ʻōlelo maikaʻi i kā mākou ʻōnaehana. Akā ʻo ka hopena, ua hoʻokumu ʻia kahi maʻamau 5-minute no ka hana.

    No ka wikiwiki o ka hana, ua hoʻohana mākou i ʻelua mau ala: ua hoʻomaka nā autotests e holo i ʻekolu mau kaula like, ʻoi aku ka maikaʻi o kēia ma muli o ka hoʻolālā ʻana o kā mākou ʻōnaehana kūpaʻa. A haʻalele mākou i ke ala kahi i hana ʻole ai ka autotest i ka ʻikepili hoʻāʻo nona iho, akā hoʻāʻo e ʻimi i kahi mea kūpono i ka ʻōnaehana. Ma hope o ka hana ʻana i nā hoʻololi, ua hoʻemi ʻia ka nui o ka manawa hana i 3-4 mau minuke.

  7. Pono e hoʻolālā ʻia kahi papahana me nā hoʻāʻo ʻokoʻa ma nā kūlana like ʻole. I ka hoʻomaka ʻana o kā mākou huakaʻi, ua hoʻāʻo ʻia e kākau i kā mākou mau pūʻulu waihona, akā ua ʻike ʻia he mea weliweli loa ka hoʻokomo ʻana iā ia iho, a ua huli mākou i nā ʻōnaehana ʻoihana. Ma muli o ka nui o nā code pololei o ka papahana (ʻo ka mea mua, mālama mākou i ka code autotest) a me nā ʻikepili liʻiliʻi loa (ʻo ka ʻikepili nui ka metadata e pili ana i nā autotests), ua maʻalahi ka hoʻokō ʻana i ka papahana Liquibase.

    He waihona hāmama, waihona kūʻokoʻa waihona no ka nānā ʻana, hoʻokele, a hoʻokō i nā loli schema database. Hoʻokele ʻia ma o ka laina kauoha a i ʻole nā ​​papa hana e like me Apache Maven. He mea maʻalahi ke kumu o ka hana ʻana o Liquibase. Loaʻa iā mākou kahi papahana i hoʻonohonoho ʻia ma kekahi ʻano, aia nā hoʻololi a i ʻole nā ​​​​palapala e pono e ʻōwili ʻia i ka server i hoʻopaʻa ʻia, a mālama i nā faila e hoʻoholo ai i ke kaʻina a me nā ʻāpana e hoʻokomo ʻia kēia mau hoʻololi.

    Ma ka pae DBMS, hana ʻia kahi papaʻaina kūikawā kahi e mālama ai ʻo Liquibase i ka log rollover. Loaʻa i kēlā me kēia hoʻololi kahi hash i helu ʻia, i hoʻohālikelike ʻia i kēlā me kēia manawa ma waena o ka papahana a me ka mokuʻāina i ka waihona. Mahalo iā Liquibase, hiki iā mākou ke hoʻololi maʻalahi i kā mākou ʻōnaehana i kekahi kaapuni. Hoʻomaka ʻia nā autotests ma nā kaapuni hoʻāʻo a me ka hoʻokuʻu ʻana, a me nā ipu (nā kaapuni pilikino o nā mea hoʻomohala).

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

No laila, e kamaʻilio e pili ana i nā hopena o ka hoʻohana ʻana i kā mākou ʻōnaehana hoʻāʻo ʻāpana.

  1. ʻOiaʻiʻo, ʻo ka mea mua, ua maopopo mākou ua hoʻomaka mākou e hoʻomohala i nā polokalamu ʻoi aku ka maikaʻi. Hoʻomaka ʻia nā autotests i kēlā me kēia lā a ʻike ʻia nā hapa he nui i kēlā me kēia hoʻokuʻu. Eia kekahi, pili pili wale kekahi o kēia mau hewa i ka hana a mākou i makemake ai e hoʻololi. Aia nā kānalua koʻikoʻi ua loaʻa kēia mau hewa ma ka hoʻāʻo lima.
  2. Ua hilinaʻi ka hui i kēia manawa e hana pololei ana nā hana kikoʻī... ʻO ka mea mua, pili kēia i kā mākou mau hana koʻikoʻi. No ka laʻana, i loko o nā mahina ʻeono i hala iho nei, ʻaʻole i loaʻa iā mākou kekahi pilikia me ka hāʻawi ʻana i nā hōʻemi a me nā bonus i nā loaʻa, ʻoiai ke hoʻololi ʻia ka hoʻokuʻu ʻana, ʻoiai i ka wā ma mua ua loaʻa nā hewa me ka pinepine.
  3. Ua hiki iā mākou ke hōʻemi i ka nui o nā hoʻāʻo ʻana. Ma muli o ka mea i kākau ʻia nā autotests no ka hana hou, loaʻa i nā mea loiloi a me nā mea hoʻāʻo hapa-manawa ke code o ke ʻano kiʻekiʻe, no ka mea ua nānā ʻia.
  4. Hoʻohana ʻia kekahi o nā hoʻomohala i ka hoʻāʻo ʻana e nā mea hoʻomohala. No ka laʻana, hana ʻia ka ʻikepili hoʻāʻo ma nā ipu me ka hoʻohana ʻana i ka module generation object.
  5. He mea nui mākou i hoʻomohala i kahi "ʻae" o ka ʻōnaehana hoʻāʻo automated ma ka ʻaoʻao o nā mea hoʻomohala. Aia ka hoʻomaopopo he mea nui a pono kēia. Akā mai koʻu ʻike ponoʻī hiki iaʻu ke ʻōlelo he mamao kēia mai ka hihia. Pono e kākau ʻia nā autotests, pono e kākoʻo ʻia a hoʻomohala ʻia, pono e nānā ʻia nā hopena, a pinepine ʻole kēia mau kumukūʻai manawa. ʻOi aku ka maʻalahi o ka hele ʻana i ka hana a hoʻoponopono i nā pilikia ma laila. Ma ʻaneʻi, laina nā mea hoʻomohala a noi iā mākou e uhi i kā lākou hana me nā autotests.

He aha ka mea aʻe

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

E kamaʻilio e pili ana i nā hoʻolālā hoʻomohala no ka papahana hoʻāʻo automated.

ʻOiaʻiʻo, ʻoiai ke ola nei ka ʻōnaehana kūpaʻa o Sportmaster a hoʻomau i ka ulu ʻana, hiki nō hoʻi ke hoʻomohala i nā autotests kokoke pau ʻole. No laila, ʻo ke kuhikuhi nui o ka hoʻomohala ʻana ʻo ka hoʻonui ʻana i ka wahi uhi.

Ke piʻi nei ka nui o nā autotests, e hoʻonui mau ʻia kā lākou manawa hana, a e hoʻi hou mākou i ka pilikia o ka hana. ʻO ka mea nui paha, ʻo ka hoʻonā ʻana e hoʻonui i ka helu o nā kaula like.

Akā ʻo kēia nā ala ʻike o ka hoʻomohala ʻana. Inā mākou e kamaʻilio e pili ana i kahi mea liʻiliʻi ʻole, hōʻike mākou i kēia:

  1. I kēia manawa, hana ʻia ka hoʻokele autotest ma ka pae DBMS, ʻo ia hoʻi. Pono ka ʻike o PL/SQL no ka hana kūleʻa. Inā pono, hoʻokele ʻōnaehana (no ka laʻana, ka hoʻomaka ʻana a i ʻole ka hana ʻana i nā metadata), hiki iā ʻoe ke hana i kekahi ʻano panel admin e hoʻohana ana iā Jenkins a i ʻole kekahi mea like.
  2. Makemake nā kānaka a pau i nā hōʻailona quantitative a qualitative. No ka hoʻāʻo ʻokoʻa, ʻo ia ʻano hōʻailona ākea ka Code Coverage a i ʻole metric uhi helu. Ke hoʻohana nei i kēia hōʻailona, ​​hiki iā mākou ke hoʻoholo i ka pākēneka o ke code o kā mākou ʻōnaehana ma lalo o ka hoʻāʻo ʻana i uhi ʻia e nā autotests. E hoʻomaka ana mai ka mana 12.2, hāʻawi ʻo Oracle i ka hiki ke helu i kēia metric a hāʻawi i ka hoʻohana ʻana i ka pūʻolo DBMS_PLSQL_CODE_COVERAGE maʻamau.

    ʻO kā mākou ʻōnaehana autotest ʻoi aku ma mua o hoʻokahi makahiki a ʻo kēia paha ka manawa e loiloi ai i kā mākou uhi. I kaʻu papahana hope loa (ʻaʻole he papahana Sportmaster) ʻo ia ka mea i hana. Hoʻokahi makahiki ma hope o ka hana ʻana i nā autotests, hoʻonohonoho ka hoʻokele i ka hana o ka loiloi i ka pākēneka o ke code a mākou e uhi ai. Me ka uhi ʻana ma mua o 1%, e hauʻoli ka hoʻokele. ʻO mākou, nā mea hoʻomohala, manaʻo i kahi hopena ma kahi o 10%. Hoʻokomo mākou i ka uhi code, ana iā ia, a loaʻa iā 20%. No ka hoʻolauleʻa, hele mākou e kiʻi i ka makana, akā pehea mākou i hele ai e kiʻi a me kahi i hele ai ma hope he moʻolelo ʻokoʻa loa.

  3. Hiki i nā autotest ke nānā i nā lawelawe pūnaewele i hōʻike ʻia. ʻAe ʻo Oracle iā mākou e hana maikaʻi i kēia, a ʻaʻole mākou e hālāwai hou i nā pilikia.
  4. A, ʻoiaʻiʻo, hiki ke hoʻohana ʻia kā mākou ʻōnaehana hoʻāʻo automated i kahi papahana ʻē aʻe. ʻO ka hopena i loaʻa iā mākou he honua āpau a koi wale i ka hoʻohana ʻana iā Oracle. Ua lohe au ua hoihoi nā papahana Sportmaster i ka hoʻāʻo maʻalahi a e hele paha mākou iā lākou.

haʻina

E hōʻuluʻulu kākou. Ma ka papahana ʻōnaehana kūpaʻa ma Sportmaster, ua hoʻokō mākou i kahi ʻōnaehana hoʻāʻo automated. Hoʻokumu ʻia ia ma ka hopena utPLSQL mai Stephen Feuerstein. Ma kahi o utPLSQL aia nā code autotest a me nā modules kākau ponoʻī: hoʻomaka module, data generation module a me nā mea ʻē aʻe. Hoʻomaka ʻia nā autotests i kēlā me kēia lā a, ʻo ka mea nui, hana lākou a pono. Manaʻo mākou ua hoʻomaka mākou e hoʻokuʻu i nā polokalamu ʻoi aku ka maikaʻi. I ka manawa like, ʻo ka hopena o ka hopena o ke ao holoʻokoʻa a hiki ke hoʻohana manuahi ʻia i kekahi papahana kahi e pono ai e hoʻonohonoho i ka hoʻāʻo automated ma ka Oracle DBMS.

P.S. ʻAʻole kikoʻī loa kēia ʻatikala: nui nā kikokikona a ʻaʻohe kumu ʻenehana. Inā hoihoi nui ke kumuhana, a laila ua mākaukau mākou e hoʻomau a hoʻi mai me ka hoʻomau, kahi e haʻi aku ai mākou iā ʻoe i nā mea i loli i nā mahina ʻeono i hala a hāʻawi i nā hiʻohiʻona code.

E kākau i nā manaʻo inā loaʻa nā manaʻo e pono e hoʻoikaika ʻia i ka wā e hiki mai ana, a i ʻole nā ​​nīnau e pono ai ka hōʻike.

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

E kākau hou aku mākou e pili ana i kēia?

  • ʻAe, maopopo

  • Mahalo ʻole

12 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 4.

Source: www.habr.com

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