Table of Contents
1. Gabatarwa
Canjin dijital da tattalin arzikin API ke motsawa ya dogara ne akan ƙirar ƙananan ayyuka masu sarkakiya waɗanda aka tura a cikin yanayin gaurayawan girgije da gefe. Waɗannan ayyukan, sau da yawa daga masu sayarwa da yawa, ana haɗa su don samar da ƙimar kasuwanci. Misali, kantin sayar da littattafai na kan layi na iya haɗa ƙananan ayyukan kaya, keken siyayya, tabbatar da bashi, da jigilar kaya. Wannan haɗin yana kawo manyan ƙalubale na inganci fiye da daidaiton aiki, gami da gazawar sadarwa, matsalolin tsari na saƙo, sanya sabis, da gazawar katsewar kewayawa.
Gwada waɗannan API-yoyin yana da sarkakiya ta asali saboda faɗin sararin yuwuwar jerin kira da haɗuwar sigogi, wanda ke sa gwaji mai cikakke ya zama mara amfani. Gwajin jagora na gargajiya yana da wahala. Wannan takarda ta gabatar da Autotest Assist, kayan aikin samfurin gwajin bazuwa da aka tsara don sarrafa gwajin API ta hanyar karanta ƙayyadaddun API, cire tsari, da samar da gwaje-gwaje, yayin da kuma ke bayyana matsalolin ƙayyadaddun bayanai.
2. Babban Ƙalubale a cikin Samfurin Gwajin API na Bazuwa
Tsarin samfurin gwajin bazuwa ya ƙunshi zaɓar aikin API $f()$ da sigogin shigar da shi na doka $p_1, ..., p_k$ ba da gangan ba, aiwatar da shi, da lura da sakamako da sakamako. Wannan tsari yana fuskantar ƙalubale masu mahimmanci da yawa.
2.1 Ingantacciyar Shigar da Tsarin Sauti da Ma'ana
Bayan samar da shigarwa masu daidaitaccen tsarin sauti, dole ne mai samarwa ya tabbatar cewa sigogi sun bi sharuɗɗan da ake buƙata kafin API don kiran ya yi nasara. Misali, kiran API na "sayi littafi" $g()$ yana buƙatar ingantaccen nuni zuwa littafin da aka samu daga API na "samun littafi" na baya $f()$.
2.2 Tabbatar da Hali da Matsalar Oracle
Tantance ko kiran API ya yi kamar yadda ake tsammani (matsalar gwajin oracle) ba abu ne mai sauƙi ba a cikin gwajin bazuwa, musamman ga tsarin da ke da yanayi.
2.3 Gyara Kurakurai da Ware Matsala
Dole ne tsarin ya tallafa wa gyara kurakurai lokacin da gwajin da aka samar ba da gangan ba ya bayyana matsala, wanda zai iya zama da wahala saboda yanayin gwaje-gwajen da ba su da ƙayyadaddun ƙayyadaddun bayanai.
2.4 Haɗawa tare da Tsarin Gwajin Koma Baya Mai Jagora
Wata mahimmiyar tambaya ita ce ta yaya za a haɗa wani muhimmin gwaji, wanda aka gano ta hanyar samarwa ba da gangan ba (musamman wanda ya bayyana kuskure), cikin tsarin gwajin koma baya mai jagora mai ƙarfi.
2.5 Ƙididdigar Rufe da Amincewa
Ƙididdigar ɗaukar kari da samarwa ba da gangan ba ya cim ma da kuma tantance ko za a iya amincewa da shi don mayar da tsarin shi kaɗai, ko kuma har yanzu ana buƙatar tsarin gwaji mai jagora.
3. Hanyar Autotest Assist
Autotest Assist yana magance ƙalubalen farko biyu ta hanyar dogaro da ƙayyadaddun API a asali.
3.1 Ƙayyadaddun API a matsayin Tushe
Kayan aikin suna karanta ƙayyadaddun API, wanda dole ne ya ayyana sharuɗɗan kafin da bayan. Wannan ƙayyadaddun yana aiki a matsayin tushen gaskiya guda ɗaya don samar da gwaje-gwaje masu inganci da oracles.
3.2 Cire Tsari da Samfurin Gwaji
Daga ƙayyadaddun bayanai, Autotest Assist yana cire tsarin halayen API, dogaro, da yanayi. Ana amfani da wannan tsarin don motsa samarwar ba da gangan ba na jerin kiran API masu inganci ta fuskar tsarin sauti da ma'ana.
3.3 Bayyana Matsalolin ƙayyadaddun Bayanai
Wani muhimmin fa'ida na wannan hanya shi ne cewa tsarin karantawa da ƙirar ƙayyadaddun bayanai da kansa na iya bayyana rashin fahimta, rashin daidaituwa, ko rashi na ƙuntatawa a cikin ƙayyadaddun bayanai—matsalolin da za su iya haifar da kurakurai na haɗawa.
4. Muhimman Fahimta & Ra'ayi na Mai Bincike
Mahimmin Fahimta
Autotest Assist ba wani kayan aikin sarrafa gwaji kawai ba ne; yana mai tilasta bin ƙayyadaddun bayanai. Ƙimar sa ta gaske tana cikin ɗaukar ƙayyadaddun API ba a matsayin takardu ba, amma a matsayin kwangila mai aiwatarwa. Samfurin bazuwa shine kawai gwajin damuwa don wannan kwangila. Wannan ya yi daidai da canjin falsafar "matsar da hagu" da Cibiyar Injiniyan Software ta Carnegie Mellon ta yi talla, wanda ke jaddada kama lahani a matakin ƙayyadaddun bayanai don rage farashi sosai.
Kwararar Hankali
Hankalin takardar yana da gamsarwa: 1) Sarkakiyar tattalin arzikin API ta ƙi gwajin hannu. 2) Samfurin bazuwa yana da girma amma yana da butulci. 3) Magani: Ƙuntata bazuwa tare da ƙayyadaddun bayanai. 4) Ƙari: Tsarin karanta ƙayyadaddun bayanai ya zama mataki na tabbatarwa. Wannan yayi daidai da nasarar gwaji na tushen tsari a cikin tsarin da ke da mahimmanci na aminci, kamar yadda aka gani a cikin tsarin kamar Fuzzing, inda samarwar shigarwa mai tsari ya fi bazuwa zalla.
Ƙarfi & Kurakurai
Ƙarfi: Mayar da hankali kan ƙalubalen duniya na gaske kamar haɗaɗɗun gwaje-gwaje da gyara kurakurai. Ƙarfafa kan bayyana kurakuran ƙayyadaddun bayanai shine kyakkyawan sake tsara iyakacin kayan aiki a matsayin fasali. Kuskure Mai Muhimmanci: Hanyar gaba ɗaya ta dogara ne akan inganci da iya karanta na'ura na ƙayyadaddun bayanai. A duniyar gaske, kamar yadda aka lura a cikin binciken daga Google's Testing Blog, ƙayyadaddun API sau da yawa ba su cika ba, sun tsufa, ko kuma na yau da kullun. Autotest Assist yana haɗarin zama tsarin "shara a shiga, shara a fita" idan ƙayyadaddun bayanai ba su da kyau, wani sharadi da takardar ta yi ƙasa da gwiwa.
Fahimta Mai Aiki
Ƙungiyoyi bai kamata su tura Autotest Assist shi kaɗai ba. Dole ne fifiko ya zama don fara saka hannun jari a cikin ƙirƙirar ƙayyadaddun API masu tsauri, waɗanda za a iya fassara su da na'ura (misali, ta amfani da OpenAPI tare da cikakkun tsare-tsare da misalai). Wannan kayan aikin ya kamata ya zama mai haɓaka wannan horo. Bugu da ƙari, sakamakonsa ya kamata ya ciyar da tsarin tantancewa inda ake nazarin gwaje-gwajen bazuwa da suka gaza ba kawai don kurakurai a cikin aiwatarwa ba, amma don gibin a cikin ƙayyadaddun bayanai da kansa, yana haifar da zagaye mai kyau na ingantawa.
5. Cikakkun Bayanai na Fasaha & Tsarin Lissafi
Jigon Autotest Assist ya ƙunshi cire tsari daga ƙayyadaddun bayanai. Za mu iya tunanin API $f$ a matsayin aiki tare da sharuɗɗan kafin $Pre_f$ da sharuɗɗan bayan $Post_f$. Yanayin tsarin $S$ ana gyara shi ta hanyar kiran API.
Za a iya cire algorithm ɗin samarwa kamar haka:
- Tsari: Ga kowane API $f_i$, ciro $Pre_{f_i}(S, \vec{p})$ da $Post_{f_i}(S, S', \vec{p}, \vec{r})$ inda $S$ shine yanayin kafin, $S'$ shine yanayin bayan, $\vec{p}$ sigogi ne, kuma $\vec{r}$ sakamako ne.
- Zaɓi: Zaɓi API $f_i$ ba da gangan ba inda $Pre_{f_i}(S_{current}, \vec{p})$ za a iya gamsarwa. Wannan yana buƙatar warware $\vec{p}$ da aka bayar $S_{current}$.
- Samarwa: Samar da ƙayyadaddun ƙimomi don $\vec{p}$ waɗanda suka gamsar da $Pre_{f_i}$.
- Aiwatarwa & Tabbatarwa: Aiwatar da $f_i(\vec{p})$, lura da sabon yanayi $S'_{observed}$ da sakamako $\vec{r}_{observed}$. Tabbatar $Post_{f_i}(S_{current}, S'_{observed}, \vec{p}, \vec{r}_{observed})$ yana riƙe.
- Sake Sabunta Yanayi: Idan yana da inganci, sabunta $S_{current} = S'_{observed}$.
Kalubalen shine warware matsalolin ƙuntatawa a matakai na 2 da 3 cikin inganci, wanda ke da alaƙa da Matsalar Gamsarwa Modulo Theories (SMT).
6. Sakamakon Gwaji & Aiki
Duk da yake abin da aka ciro na PDF bai ƙunshi takamaiman sakamako na ƙididdiga ba, takardar tana nuna ma'auni na aiki waɗanda za su zama mahimmanci don kimantawa:
- Adadin Gano Kuskure: Adadin da tsananin lahani (a cikin aiwatarwa da ƙayyadaddun bayanai) da aka bayyana a kowace raka'a na lokacin gwaji idan aka kwatanta da gwaji mai jagora.
- Adadin Ingantacciyar Jeri: Kashi na jerin kiran API da aka samar ba da gangan ba waɗanda suke da inganci ta fuskar ma'ana (watau sun gamsar da duk sharuɗɗan kafin), suna nuna ingancin tsarin.
- Rufe Sararin Yanayi: Ma'auni akan ɗaukar kari na yanayi daban-daban na tsarin da iyakokin ƙimar sigogi, mai yiwuwa an auna su ta amfani da kayan aikin ɗaukar kari na lamba ko binciken yanayi na al'ada.
- Gano Matsalolin Ƙayyadaddun Bayanai: Bincike mai inganci na nau'ikan rashin fahimta ko kurakuran da aka samu a cikin ƙayyadaddun API yayin lokacin ƙirar tsari.
Zanen sakamako na hasashe zai nuna lanƙwasa mai zurfi na farko don gano kuskure tare da gwajin bazuwa, a ƙarshe ya tsaya, yayin da gwaje-gwajen jagora ke ba da gano abin da ya dace amma ƙasa da ƙima. Hanyar haɗin gwiwar tana samar da mafi girman tarin gano lahani.
7. Tsarin Bincike: Misali Ba na Lamba ba
Yi la'akari da "API na Kantin Littattafai" mai sauƙaƙe tare da ayyuka biyu:
GET /book/{id}: Yana dawo da cikakkun bayanai na littafi. Sharadi kafin: Dole ne littafi mai `{id}` ya wanzu a cikin kaya.POST /cart/{bookId}: Yana ƙara littafi zuwa keken siyayya. Sharadi kafin: Dole ne littafin mai `{bookId}` ya kasance a samu (ya wanzu kuma yana cikin kayayyaki).
Tsarin Aiki na Autotest Assist:
- Cire Tsari: Kayan aikin suna karanta ƙayyadaddun bayanai kuma suna koyon dogaro: `POST /cart` yana buƙatar nasarar kiran `GET /book` da farko (don tabbatar da wanzuwa/samun dama).
- Samfurin Gwaji: Yana yanke shawarar gwada `POST /cart/{bookId}` ba da gangan ba.
- Warware Sigogi: Don gamsar da sharadi kafin, dole ne da farko ya samar da ingantaccen `bookId`. Yana iya yin haka ta ko dai:
a) Kira `GET /book` tare da ID ba da gangan ba har sai ɗayan ya yi nasara (bincike).
b) Amfani da sanannen jerin IDs daga gwajin da ya gabata ko bayanan iri.
Sa'an nan kuma yana amfani da wannan ingantaccen `bookId` don kiran `POST /cart`. - Gano Matsala: Idan ƙayyadaddun bayanai na `POST /cart` kawai ya ambaci "littafi dole ne ya wanzu" amma aiwatarwa kuma tana duba matakin kayayyaki, gwajin bazuwa na iya gaza. Autotest Assist yana alamar wannan a matsayin matsalar ƙayyadaddun bayanai: sharadi kafin a cikin ƙayyadaddun bayanai bai cika ba.
- Haɗaɗɗun Koma Baya: Jerin `[GET /book/valid_id, POST /cart/valid_id]` wanda ya yi nasarar ƙara abu zuwa keken siyayya ana adana shi a matsayin ɗan takara don tsarin gwajin koma baya mai jagora.
8. Aikace-aikacen Gaba & Hanyoyin Bincike
- Ƙirar Ƙayyadaddun Bayanai Mai Haɓaka AI: Haɗa LLMs don fassara harshe na halitta ko ƙayyadaddun bayanai marasa cikawa da ba da shawarar sharuɗɗan kafin da bayan na yau da kullun, rage nauyin ƙirƙirar cikakkun ƙayyadaddun bayanai da farko.
- Samarwa Mai Daidaitawa & Mai Ba da Shawara: Matsawa fiye da bazuwa zalla don amfani da koyo mai ƙarfafawa. Mai samarwa zai koyi waɗanne jerin API da ƙimar sigogi ke da yuwuwar samun sabbin kurakurai ko bincika sararin yanayi da ba a rufe ba, kama da dabarun a cikin fuzzing mai daidaitawa.
- Gwajin Tsakanin Sabis & Haɗawa: Tsawaita tsarin don fahimtar dogaro da kwangiloli tsakanin ƙananan ayyuka daga masu sayarwa daban-daban, samar da gwaje-gwaje don sarkakiyar ayyukan sabis da yawa da yanayin gazawa (misali, tsarin katsewar kewayawa).
- Gwajin Bin Ka'ida & Tsaro: Haɗa manufofin tsaro (misali, iyakokin OAuth, dokokin sirrin bayanai) cikin tsarin don samar da gwaje-gwaje ta atomatik waɗanda ke tabbatar da duka buƙatun bin ka'ida na aiki da waɗanda ba na aiki ba.
- Sa ido & Gwajin API Kai tsaye: Amfani da tsarin guda ɗaya don samar da ƙananan tsarin gwaji mai ci gaba da gudana a kan yanayin samarwa ko mataki don gano koma baya ko karkatar da ƙayyadaddun bayanai a lokacin gaskiya.
9. Nassoshi
- Farchi, E., Prakash, K., & Sokhin, V. (2022). Samfurin Gwajin Bazuwa na Application Programming Interfaces. arXiv preprint arXiv:2207.13143v2.
- Myers, G. J., Sandler, C., & Badgett, T. (2011). Fasahar Gwajin Software. John Wiley & Sons. (Don ka'idojin gwaji na tushe).
- Osterweil, L., et al. (2020). Matsar da Hagu: Tasirin Tattalin Arziki na Gano Lahani da wuri. Jami'ar Carnegie Mellon, Cibiyar Injiniyan Software. (Don binciken fa'ida da farashi na gwaji da wuri).
- Google Testing Blog. (2019). Fuzzing a Sikelin. An samo daga https://testing.googleblog.com/. (Don fahimta mai amfani kan gwajin bazuwa mai girma).
- de Moura, L., & Bjørner, N. (2008). Z3: Mai Warware SMT Mai Inganci. Kayan aiki da Algorithms don Gina da Binciken Tsarin. (Don tushen fasaha a cikin warware ƙuntatawa da aka yi amfani da shi a cikin samar da gwaji).
- OpenAPI Initiative. (2023). Ƙayyadaddun OpenAPI v3.1.0. https://spec.openapis.org/oas/v3.1.0. (Don ma'auni a cikin ƙayyadaddun API masu iya karanta na'ura).