JavaRush /Java блогы /Random-KK /Әңгімелесу тесті қалай ашық бастапқы кітапханаға айналды
Roman Beekeeper
Деңгей

Әңгімелесу тесті қалай ашық бастапқы кітапханаға айналды

Топта жарияланған
Барлығына сәлем, JavaRush қауымдастығы! Өзім туралы аздап: Мен 2016 жылдың көктемінен бастап Java бағдарламалық жасақтамасының инженері болып жұмыс істеймін. Мен мұнда келіп, оқу кезінде шеше алмаған мәселелерді шешкенді ұнатамын. Бүгін мен сізге кітапхана туралы айтып беремін - Суреттерді салыстыру . Бұл GitHub сайтында жалпыға қолжетімді ашық бастапқы кітапхана . Әңгімелесу тестінің тапсырмасы ашық бастапқы кітапханаға қалай айналды - 1Бұл мақаланың мақсаты - ашық бастапқы өнімді жасау уақытты босқа өткізу емес екенін жеткізу, жоқ! Бұл барлық даму процесін бақылауда болған кезде, әрбір егжей-тегжейге тереңірек үңілу қажет болғанда, әртүрлі жағынан алынған бай тәжірибе. Open Source - бұл сізді қоршаған әлем. Мен қалжыңдамаймын, бұл кітапхана болған кезде мен АҚШ, Үндістан, Қытай, Мысыр, Ресей, Германия, Украина, Швеция, Жаңа Зеландия, Норвегия сияқты түрлі елдердің адамдарымен араластым. Яғни, бұл бірлескен дамудың нақты тәжірибесі, ымыраға келу, codeты тексеру және т.б. Бұл кіріспе болды, енді ретімен бастайық:

Сынақ. 2017 жылдың тамыз айының басы

Мұның бәрі компанияның бірінде сұхбат алғанымнан басталды, онда бірінші қадам тест тапсырмасын жазу болды. Тапсырма көлемі бірдей екі суретті салыстырып, олардың арасындағы айырмашылықтарды тауып, оларды топтастыру және айналасына тіктөртбұрыш салу болатын code жазу болды. Бірінші сурет бар:
Әңгімелесу тестінің тапсырмасы ашық бастапқы кітапханаға қалай айналды - 2
Екінші сурет бар:
Әңгімелесу тестінің тапсырмасы ашық бастапқы кітапханаға қалай айналды - 3
Айырмашылықтарды тауып, төменде көрсетілгендей дөңгелектеу керек болды:
Әңгімелесу тестінің тапсырмасы ашық бастапқы кітапханаға қалай айналды - 4
Көріп отырғаныңыздай, қызыл үшбұрышпен қоршалған Пайдаланушы аты өрісінде айырмашылық бар. Тапсырманың толығырақ сипаттамасы . Мен мұны тек функционалдық тұрғыдан дұрыс емес, сонымен қатар ұятқа қалдырмас үшін әдемі етіп жасағым келеді деп шештім. Мұны істеу үшін мен оны GitHub сайтында жоба ретінде жариялаймын деп шештім . Мен көптен бері GitHub-ды зерттеп, онымен жұмыс істеу тәжірибесін алғым келеді. Жылдам қарап шыққаннан кейін code сапасын талдау, тесттермен codeты қамтуды генерациялау және т.б. үшін үшінші тарап қызметтерін қосу жақсы болатынын білдім. Келесі құралдар қосылды:
  • Codacy - code сапасы. Бұл шынымен назар аударуға тұрарлық.

  • Travis CI – жобаны құрастыратын, сынақтарды жүргізетін және жобаның сәтті жасалғанын көрсететін CI (үздіксіз интеграция) құралы. Мысалы, егер сынақтардың бірі жаңа өзгерістер нәтижесінде өтпесе, онда ол жобаны құрастыру сәтсіз болды деп хабарлайды және оны қызыл түске бояйды.

  • Комбинезондар – codeтың қанша пайызы сынақтармен қамтылғанын көрсететін құрал.

  • BetterCode Hub - code сапасын талдауға арналған басқа құрал. Сізге ненің жаман екенін айтып қана қоймай, неге екенін сипаттайтын және ол туралы білім алуға болатын кітапқа сілтеме беретін өте пайдалы нәрсе.

Осы қызметтердің әрқайсысында codeты қамту жобасы сияқты деректер нәтижелері бар жеке белгі бар. Және бұл белгіні жобаның негізгі сипаттамасында – README файлында қосуға болады. Тапсырма дайын болды - мен оны қарауға жібердім. Қарап шыққаннан кейін, мен жаңа жадтан бірден әр түсініктеме үшін Github шығарылымын жасадым , ол маған осы жобаны жақсартуға көмектеседі. Жұмыс берушіден жақсарту тапсырмасы болмады, сондықтан мен жобаны біраз уақытқа ұмытып кеттім ...

Кітапхана жолы. 2018 жылдың шілдесі

Логотип

Бір кезде мен адамдар менің жобама жиі келетінін және бұл күн сайын болатынын білдім. Мені бұған таң қалдырды, одан да қатты таң қалдырды, бір жылдай уақыт өткен соң МӘСІЛ құрылды, онда белгілі бір графикалық дизайнер менің жобама логотип жасауды ұсынып жатқаны жазылған. Олар мұны Opensource өнімдері үшін жасағанды ​​жақсы көретінін және мұны мүлдем тегін жасайтынын айтады. Бірлесе бастадық. Бірнеше нұсқалар ұсынылды, бірақ соңында біз бұған тоқтадық:
Әңгімелесу тестінің тапсырмасы ашық бастапқы кітапханаға қалай айналды - 5
Мен ол кезде әлі жас едім және ашық көздер қауымдастығымен таныс емес едім, мұндай ұсыныстың фактісі мен үшін жабайы болды және мен сұрадым: ол неге бұлай істеп жатыр? Ол былай деп жауап берді: "Ой, мен ашық бастапқы жобаларға үлес қосқанды жақсы көремін. Өмірлік мақсаттардың бір түрі..." ( мәселенің өзі осында ). Әртүрлі адамдар сізді ашық бастапқы жобалар арқылы тауып, осындай қызықты нәрселерді ұсынатыны қандай керемет екенін сол кезде сезіндім!

Бірінші жақ ақауы

Мен Қытайдан келген белгілі бір әзірлеуші ​​​​мен үшін мәселе жасағанын байқадым , онда ол кітапхана жұмысында ақау тапқанын, егер сіз үлкен кескіндерді пайдалансаңыз, StackOverflowError аласыз деп сипаттады . Ер адам өз пайдасына шешіп, қате тапты. Ал мен оны жай таппадым. және ол туралы жазды. Бұл кітапхананың дамуындағы жаңа қадам. Оның үстіне, менде нақты шешім болмады. Белгілі бір сәтте Ресейден келген сынақшылардың бірі шешімді ұсынды. Бірақ ол шикі болды және дұрыс жасалмады, мен оны қабылдамадым. Ал Maven Central кітапханасын шығару уақыты келгенде, бұл кемшілікті шешу керек болды, мен онымен бірге шығарғым келмеді. Сонымен қатар, мен ешқашан түзетпеген тағы бір ақау болды және ол көптеген қолайсыздықтар әкелді.

Пәрмен жолын пайдалану. Күз 2018

Дамудың келесі кезеңі кітапхананы пәрмен жолы арқылы пайдаланғысы келетін шведпен (Ренато Атайдес) байланыс болды және бұл үшін кейбір өзгерістер мен толықтырулар енгізу қажет болды. Мен бұған тағы таң қалдым және таң қалдым. Графикалық дизайнер маған жазғаннан кейін, менің таңданысым біршама аз болды, бірақ бәрібір өте жоғары болды. Біреуге менің codeым шынымен керек деген ой мені керемет сезімге бөледі. Қажетті өзгерістерді енгізіп, codeексті дайындады. Мен codeты шолуды жүргіздім, яғни өзгерістерді қарадым, өзгертілген пікірлер болды және өзгерістер кітапханада болды. Мен бұл өзгерістерді v2.0 нұсқасы ретінде белгіледім.Келесі қадам кітапхананы Maven Central – орталық репозиторийге қосу болды, ол жерден кез келген жоба үшін жүктеп алып, оны тәуелділік ретінде пайдалануға болады. Ол кезде мен мұны қалай жасауға болатынын білмедім, тіпті қашықтан да, сондықтан мен бос емес екенімді айтып, жобаны орнатуға қажетті барлық қадамдарды орындауды сұрадым. Бірақ бұл жеткіліксіз болып шықты және ең қызығы Maven Central-мен байланыс орнату болды. Бұл мен бірінші рет жасай алмаған жабайы азап, мен тек 15 сәуірде жобаны Maven Central сайтында жариялай алдым. Бұл оңай болған жоқ, бірақ басқалар айтқандай, «өз Java codeын жариялағысы келетіндердің бәрі осыдан өтеді». Кітапхананы жарияламас бұрын мен ұзақ уақыт бойы орын алған ақаулармен не істеу керектігін және қалай істеу керектігін таптым және жаңа нұсқасын шығардым v2.0.2 , онда маған көмектескендердің барлығына алғысымды білдіріп, не және қалай істегенімді сипаттадым. .

Maven Central сайтында жариялау. 2019 жылдың көктемі

Кітапхананы дұрыс басып шығару үшін нұсқаларды жасауды және нұсқаларды қалай дұрыс орнату керектігін жақсы түсіну керек. Мен осы схеманы ұстанамын:
  • XX.YY.BBBB , мұндағы XX алдыңғысымен үйлеспейтін өзгерістерді қажет ететін негізгі нұсқа жаңартуы (мысалы, әдістерде қайтарылатын нәтижені өзгерту);
  • YY - кішігірім жаңарту - BBBB мәнін өзгертпейтін ішкі өзгерту немесе кеңейту - бұл түзетілген ақаулар.
  • Мысалы, 2.0.2 нұсқасы негізгі нұсқаның 2 екенін, шағын жаңартулар болмағанын және ақаулар үшін екі жаңарту бар екенін білдіреді.
Содан кейін groupId және artifactId қалай дұрыс орнату керектігін анықтау маңызды болды . Оларды бір рет таңдап, әрі қарай пайдалану керек болды. Және олар code сақталатын пакетті құрайды. Болды: ua.comparison.image Қазір: com.github.romankh3.image.comparison Және бұл жақсырақ, өйткені бұл GitHub жобасы екенін және оны romankh3 лақап аты бар адамнан табуға болатынын бәрі біледі. Осының барлығын орындаған кезде мен v2.1.0 жаңа нұсқасын шығардым .

Шведтермен байланыс. 2019 жылдың мамыры

Мен кітапхананы жариялағаннан кейін тағы бір швед (Мика Китёлайнен) маған электрондық хат жіберіп, досынан кітапханама өзгертулер енгізуін өтінді. Осының өзі маған өте қажет екенін, тез арада орындасақ, қуанатынын айтады. Әрине, мен қажетті өзгерістерге қарсы болған жоқпын. Ол тіктөртбұрышты сызатын сызық қалыңдығы конфигурациясын қосуды ұсынды. Көру қабілеті нашар адамдар үшін бұл пайдалы өзгеріс болады. Кодты дайындады . Тағы бірнеше өзгертулер қосып, мен v2.2.0 нұсқасын шығардым

Неміспен қарым-қатынас. 2019 жылдың мамыры

Осыдан кейін бір неміс оны тестілеу үшін пайдаланғысы келетінін, бірақ оның функционалдығы жетіспейтінін айтқан мәселе жасады. Ол өте қызықты көптеген ұсыныстар жасады, ол салыстыру нәтижесінде алынған нәтижемен ғана алынған суретті қайтарудың орнына деректер жинағын қайтаруды ұсынды: салыстырылған нәрсе, нәтиже (қажет болса) және оның күйі MATCH, MISMATCH, SIZE_MISMATCH болады. Тіпті өзгерістер енгізді. Бірақ олар бұрынғы codeты мүлде есепке алмаған және асығыс жасалған. Мен олардан бас тарттым және өз қалауымша орындауды ұсындым. Осыған қарамастан, ол көбірек жауап берді және мен мұны өзім жасап, жаңа нұсқаны шығарамын деп шештім. Сонымен қатар, Мика Китёлайнен тағы бір қызықты функцияны ұсынды - салыстыруға қосылмайтын аймақтарды қосу. Бұл нақты жағдай. Мұның бәрі v3.0.0 нұсқасында шығарылды

Нақты жобада қолданыңыз

Мамыр айының соңында Киевтен автоматика тестері маған хат жазды, ол кітапханаға қызығушылық танытып, оны ақша әкелетін нақты жобада пайдаланғысы келеді. Бұл серпіліс болды! Оны пет-жобада бір жерде пайдалану бір нәрсе, бірақ оны нақты жобада пайдалану мүлдем басқа мәселе. Біз бұл не және қалай жұмыс істейтінін талқыладық. Қолданба өте қызықты: олардың қосымшасында басып шығарылған чектер бар және чектердің белгілі бір үлгі бойынша жасалғанын және ол өзгермейтінін тексеру қажет болды. Бірақ күн мен уақыт сияқты бөлімдер үнемі өзгеріп тұратын және оларды елемеу керек болатын мәселе болды. Біз кейбір аймақтарды елемеу үшін функционалдылықты әлдеқашан қосқан болатынбыз, бірақ ол әлі де нақты пайдалану үшін өте шикі болып шықты және біз әлі де бірнеше апта бойы бірге жемісті жұмыс істедік. Нәтиже v3.1.1 нұсқасының шығарылымы болды

Тауашаны табу

Осыдан кейін мен кітапхананың нағыз тауашасы оны сынақтарда қолдану екенін түсіндім. Бұл үшін мен тестерлерге арналған қандай да бір форум тауып, кері байланыс алу және атақты арттыру үшін олар туралы жазуды шештім. Мен орыс тілді форумды тауып, сол жерде мақала жарияладым: Суреттерді тестілеуді ұйымдастыру - ұқсас екі суретті салыстыру . Онда мен code пен функционалдылық туралы нақты кері байланыс алдым, оны қолдандым және жаңа нұсқасын шығардым v3.2.0 , содан кейін v.3.3.0 .

Қазір

Қазіргі уақытта кітапханада Github-та 60 жұлдыз және 33 шанышқы бар. Менің ойымша, бұл өте жақсы, өйткені мен оны автоматизаторларға арналған форумдағы мақаладан басқа ешқандай жолмен насихаттаған жоқпын. Соңына дейін оқығандарға рахмет. Бұл шын мәнінде мен күткеннен де ұзақ мақала болып шықты. Maven Central-ға кітапхананы қалай жариялау керектігі туралы мақала. Егер сізде қосатын нәрсе болса, жазыңыз! Кітапхананы жақсарту үшін ұсынатын бірдеңе болса, жазыңыз! Мен бәрін оқимын және оған уақыт бөлемін. Мақаланы ұнатқан және оны пайдалы деп тапқан кез келген адам оны бағалап, түсініктемелерде жазыңыз. Сондай-ақ, менің github тіркелгіме жазылыңыз romankh3 Басқа мақалаларымды да қараңыз:
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION