JavaRush /Блоги Java /Random-TG /Супориши тестӣ барои кор, биёед онро фаҳмем..
timurnav
Сатҳи

Супориши тестӣ барои кор, биёед онро фаҳмем..

Дар гурӯҳ нашр шудааст
Дустон, салом ба хама. Ман мехоҳам бо шумо таҷрибаи худро оид ба ҳалли вазифаи тестӣ барои вазифаи таҳиягари Java дар як ширкати русӣ мубодила кунам. Ман дарҳол мегӯям, ки иҷрои вазифаи асосии супориш чандон душвор нест, аммо чун ҳамеша, тафсилот ва чизҳои хурд муҳиманд, ки ба ман барои сари вақт пешниҳод кардани он монеъ шуданд; онҳо ҳеҷ гоҳ дар бораи супориш ҷавоб надоданд - ҷои холии онҳо вақте ки ман онро ба онҳо фиристодам, аллакай пур шуда буд. Ман ба шумо тавсия медиҳам, ки вазифаро бубинед, то бубинед, ки оё ман ҳама чизеро, ки аз ман талаб карда шуда буд, иҷро кардам. Ва барои онҳое, ки дар бораи чӣ гуна сохтани он тасаввурот надоранд, ман дар бораи он ки чӣ тавр бо он мубориза бурдам, оби зиёд илова мекунам. Агар касе ба ин манфиатдор бошад, ба гурба хуш омадед. Ман дарҳол мегӯям, ки ман тамоми ҳалли инҷоро нашр намекунам, аммо барои шурӯъкунандагон тавзеҳоти зиёде хоҳад буд, агар касе ба хондани баромадҳои ман таваҷҷӯҳ надошта бошад, ин аст лоиҳа дар github . Ман аз он оғоз мекунам. матни худи вазифа.
Супориши тестии №1
Тавсифи: API Server (JSON HTTP API) Асбобҳои таҳия: Framework Java : Play Framework 2.4 (ё олӣ) ё Spring boot 1.2.3 (ё олӣ) Пойгоҳи додаҳо: Протоколи MySQL : HTTP, порт 80 Функсия (дархостҳо):
  1. Боркунак.
    • Мо файлро (тасвири аватари JPG) ба server интиқол медиҳем.
    • Мо тасвирро дар директория дар server захира мекунем.
    • Ҷавоби server URI дохorи тасвир аст.
  2. Илова кардани корбари нав.
    • Мо маълумоти шахсии корбарро ба server интиқол медиҳем (URI-и тасвир, номи корбар, почтаи электронӣ ва ғайра).
    • Мо маълумотро дар базаи маълумот захира мекунем.
    • Ҷавоби server ID ягонаи корбари нав аст.
  3. Гирифтани маълумот дар бораи истифодабаранда.
    • Мо идентификатори беназири корбарро ба server интиқол медиҳем.
    • Хондани маълумот аз базаи маълумот.
    • Ҷавоби server маълумоти шахсии корбар аст (нигаред ба боло).
  4. Тағир додани ҳолати корбар (Онлайн, Оффлайн).
    • Мо ID-и беназири корбар ва мақоми навро (Онлайн, Оффлайн) ба server интиқол медиҳем.
    • Тағир додани ҳолати корбар.
    • Ҷавоби server - ID ягонаи корбар, ҳолати нав ва қаблӣ.
    Эзоҳ: Сервер як API/базаи додаҳоро дархост мекунад. Азбаски ин як супориши соддакардашудаи тестӣ аст, зарур аст, ки “таббача”-ро бо дастрасии тақлидшуда ва таъхири 5-10 сония иҷро кард.
  5. Омори server.
    • Мо параметрҳоро ба server интиқол медиҳем: 1. Ҳолати муштарӣ (онлайн, офлайн ё ғоиб), 2. ID-и беназири (мӯҳри вақт) дархост (мумкин нест)
    • Ҷавоби server рӯйхати корбарон бо статусҳо ва тасвирҳои URI, инчунин ID-и беназири (тамгаи вақт) дархост мебошад.
    Эзоҳ: Агар дархост дорои параметрҳо бошад, server бояд посухи худро аз рӯи онҳо филтр кунад. Агар дархост идентификатсияи ягонаи (тамгаи вақт) дархостро (қаблан гирифта шуда) дошта бошад, server бояд танҳо корбаронеро баргардонад, ки ҳолати онҳо пас аз (бо мурури замон) ин ID (тамгаи вақт) беназир тағйир ёфтааст.
Талаботи ҳатмӣ:
- Истирохат. - Ҳама маълумот дар формати JSON. - Сервери API бояд бо назардошти он тарҳрезӣ шавад, ки дархостҳои 3 ва 5 афзалияти баланд доранд (нисбат ба дархостҳои 1, 2, 4) ва бояд ҳарчи зудтар анҷом дода шаванд. - коркарди хато.
Талаботи ихтиёрӣ (матлуб):
- Ҳуҷҷати code. - Меъмории serverи API бояд барои сарборӣ ва миқёси баланд тарҳрезӣ шавад. - Санҷишҳо.
Натиҷаи санҷиш:
- натиљаи супориши тестї бояд дар бойгонї ва дастурњои муфассал оид ба љорї намудани он пешнињод карда шавад. Тавсия дода мешавад, ки Dockerfile барои сохтани контейнери Docker барои вазифаи санҷишӣ замима кунед. Ба github.com зеркашӣ кардан мумкин аст. - Бояд ҳуҷҷатҳои мухтасари API-и сохташударо дар бар гирад (рӯйхати дархостҳо, параметрҳои дархост, форматҳои дархост, форматҳои посух ва ғайра). - маълумот дар бораи вақти барои иҷрои супориши тестӣ сарфшуда дар заминаи: тарҳрезӣ, барномасозӣ, ҳуҷҷатгузорӣ ва ғ. Лутфан таваҷҷӯҳ намоед, ки ин супориши тестӣ танҳо барои арзёбии дониш ва маҳорат пешбинӣ шудааст ва ҳадафи эҷоди маҳсулоти тайёр (API) нест, бинобар ин ба соддагардонӣ бо тавзеҳот ва сабабҳо иҷозат дода мешавад.
барномасозони бодиққат ва ботаҷриба метавонанд фасли ояндаро гузаред, дар ин ҷо ман бо матни худи вазифа кор хоҳам кард. "Сарлавҳаи" вазифа дар фаҳмиш ҳеҷ мушкиле ба вуҷуд намеорад, бинобар ин ман танҳо мегӯям, ки интихоби ман ба Spring Boot афтод, аммо на аз он сабаб, ки ман аллакай бо он коре карда будам, балки барои он ки ман аллакай лоиҳаи воқеиро бо истифода аз Баҳор (аммо Boot дар он ҷо набуд, зеро ман онро аз соддагии он мефаҳмам). Аз рӯи функсияҳои server: 1) Зеркашии файл. Дар ин ҷо аслан ҳеҷ чизи мураккаб нест, ман танҳо фаҳмидам, ки тасвирҳо дар server чӣ гуна нигоҳ дошта мешаванд, маълум шуд, ки роҳи аз ҳама мувофиқ ҷойгир кардани онҳо дар феҳристи махсус аст. Мо дар зер татбиқи мушаххасро дида мебароем. 2) Илова кардани корбари нав, як амалиёти оддӣ, агар шумо ягон бор замимаҳои CRUD сохта бошед, пас ӯ маро дастгирӣ мекунад, агар не, шумо ҳама чизро дар зер хоҳед дид. 3) Гирифтани маълумот дар бораи истифодабаранда. савол нест - ҳама чиз равшан аст. 4) Тағйир додани мақоми корбар. ду нуктаи аввали супориш чун руз равшан аст, аммо дархости беруна чи мешавад??? Инро бидуни 100 грамм фаҳмидан ғайриимкон аст, ҳатто ҳоло ман 100% боварӣ надорам, ки оё ман дуруст фаҳмидам. Тафсилот дар зер. 5) Омори server. Ин ҳам ҷолиб аст. Нуқтаи аввал татбиқи усулро бо вариантҳои гуногуни параметрҳо пешниҳод мекунад, ҳоло маълум нест, ки ин корро чӣ гуна бояд кард, бо назардошти он, ки ин бояд усули назораткунанда бошад. нуқтаи дуюм аз ҳамаи корбароне мепурсад, ки мақоми онҳо пас аз лаҳзае тағйир ёфтааст, ба назар равшан аст, аммо нозукиҳо вуҷуд доранд.
Сар кардани кор
Оҳ, ман ин ибораро дар вақти кор дар ин вазифа чанд маротиба хонда будам! Агар шумо ягон бор кӯшиш карда бошед, ки чӣ гуна лоиҳаро дар фасли баҳор таъсис диҳед, аммо бо баъзе сабабҳо шумо ҳеҷ гоҳ Spring Boot-ро надидаед, табрик мекунам, шумо аз он чизе ки ман дар зер менависам, шод хоҳед шуд. Ман дар ҷое хонда будам, ки барномасозон миқдори хеле зиёди codeро аз лоиҳа ба лоиҳа интиқол медоданд, ин рамзи шаблон аст - танзимот барои пайвастшавӣ ба пойгоҳи додаҳо, харитасозии сервлет ва ғайра ва ғайра, то масалан, миқдори рамзи шаблон барои кор бо Мо барои пойгоҳи додаҳо JPA/Hibernate-ро истифода мебарем, онҳо баъзе аз қолабҳоро пинҳон мекунанд, аммо барои конфигуратсияи онҳо, шумо бояд дубора файли xml ё синфҳои конфигуратсияро нависед. ва агар шумо лоиҳаи хурд дошта бошед, пас маълум мешавад, ки шумо codeи камтар наменависед, балки ҳатто баръакс. Минбаъд мо кор бо JPA дар фасли баҳорро ба анҷом мерасонем; лоиҳаҳои зиёде мавҷуданд, аммо қулайтаринаш, албатта, маълумоти баҳорӣ мебошад. Ин як лоиҳаи хеле калон аст, ки метавонад бо ҳама чизи имконпазир кор кунад, аз ҷумла JPA ва NoSQL ва як қатор лоиҳаҳои гуногун, бениҳоят ҷодугарӣ аст, мо онро дар лоиҳаи худ истифода хоҳем кард. Бо истифода аз Spring, мо қариб аз танзимоти пайвасти пойгоҳи додаҳо халос мешавем, Spring ҳама чизро барои мо мекунад, мо танҳо бояд дар шарҳҳои зарурӣ дар бораи транзаксия, кэш ва дар ҳолатҳои махсус google (ба дигарон нигаред) баъзе танзимоти дигарро дар конфигуратсияи контекст нигоҳ дорем. Аммо дар айни замон, аксари таҳиягарони навкор комилан тасаввуроте надоранд, ки чӣ гуна лоиҳаро дар фасли баҳор эҷод кунанд. Ҳеҷ кас пурра намедонад, ки чӣ гуна онро барои иҷро кардани лоиҳа танзим кунад ва натиҷаро дар браузер тавассути истиноди аз localhost:8080/* оғоз кунад. Ва он гоҳ Boot Spring ба расм меояд! Беҳтар аст, ки дар бораи Spring Boot бо як мисоли мушаххас сӯҳбат кунед! Биёед бо холӣ оғоз кунем. Барои эҷоди лоиҳаи Spring Boot, таҳиягарони Spring барои сохтани қолибҳо "конструктор" пайдо карданд. Шумо метавонед онро дар вебсайти онҳо истифода баред, аммо иҷрои он дар IDE дӯстдоштаи мо, Intellij IDEA хеле осонтар аст. Ва ҳамин тавр: File->New->Project Дар равзана ба ҷадвали Spring Initializr гузаред, jdk бояд дар он насб карда шавад ва URL https://start.spring.io, пайвасти интернетро тафтиш кунед, пас ба шумо лозим меояд барои интихоби ном ва баъд технологияҳое, ки мо истифода мебарем, дар марҳилаи аввал ба мо танҳо WEB лозим аст - дар паҳлӯи он аломат гузоред ва сипас лоиҳа эҷод карда мешавад. Барои он ки Maven ҳама вобастагиҳоро кашад, мо бояд ҷадвали Maven-ро дар идея кушоем ва тугмаи навсозиро клик кунем. Мо як қолаби замимаи омодаро гирифтем, ки дар он тамоми танзимоти иртиботи муштарӣ ва server мавҷуд аст. Барои гирифтани таассуроти аввал, биёед синфи контроллерро эҷод кунем (шояд ҳама мо дар бораи MVC шунидаем). Дар ҳама замимаҳои Spring, контроллерҳо тарҳи хеле содда доранд - ин синфест, ки бо шарҳи @Controller ишора шудааст (префиксҳо имконпазиранд, масалан, @RestController), ин синф барои коркарди дархостҳои воридотӣ масъул аст. Барои он ки контроллер дархостро барои ягон суроға эътироф кунад, шумо бояд ин суроғаро бо усули контроллер харита кунед. import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "/hello") public class DemoController { @RequestMapping(method = RequestMethod.GET) public String halloWorld() { return "Hello World!"; } @RequestMapping(value = "/{name}", method = RequestMethod.GET) public String halloName(@PathVariable("name") String name) { return "Hello, " + name + "!"; } } Биёед бифаҳмем, ки дар ин ҷо чӣ рӯй медиҳад. @RestController . маҳз шарҳе, ки ман дар боло навиштаам. Мо контролери боқимондаро истифода мебарем, зеро мо мехоҳем дарҳол натиҷаро бубинем ва намехоҳем саҳифаҳои .jsp нависем (вой), барои мо фавран дидани натиҷаро дар браузер ҳамчун сатр осонтар хоҳад кард. @RequestMapping танҳо як суроға аст. Префикси суроғаи умумӣ хоҳад буд: localhost:8080. Тавре ки мо мебинем, тамоми синф дар суроғаи /hello овезон аст , ин маънои онро дорад, ки ҳамаи усулҳои дохor ин синф префикси localhost:8080/hello доранд. Минбаъд усули якуми синф аст, ки дар харитасозии худ усули протоколи Http нишон дода шудааст - дархости GET (дар бораи усулҳои протоколи Http барои худ хонед) Ин ҳама чӣ маъно дорад? бо пешниҳоди дархости GET ба суроғаи localhost:8080/hello, мо ҷавобро дар шакли сатри “Салом Ҷаҳон!” мегирем, Биёед онро тафтиш кунем! Дар синфи DemoApplication як тавзеҳи олиҷаноб мавҷуд аст, ки метавон гуфт, ки тамоми контексти баҳорро яккаса оғоз мекунад - @SpringBootApplication. Усули асосии ин синф ҷодугарӣ мешавад, он танҳо тамоми ҷодуи дар SpringApplication пинҳоншударо оғоз мекунад, агар шумо ба менюи контекстии ин синф занг занед, вариантҳо дар хати Run пайдо мешаванд, ман тавсия медиҳам, ки онро барвақт бо аломати сабз иҷро кунед. консол зеботар хоҳад шуд ва дар оянда хондани гузоришҳо мустақиман аз ӯ осонтар хоҳад шуд. Биёед барномаро оғоз кунем. вақте ки баромади консол қатъ мешавад, шумо бояд дар консол бубинед
2015-09-02 09:25:36.895 INFO 5844 --- [асосии] sbcetTomcatEmbeddedServletContainer: Tomcat дар порт(ҳо) оғоз шуд: 8080 (http) 2015-09-02 09:25:44INFO- demo.DemoApplication: DemoApplication дар **** сония оғоз шуд (JVM барои 15.501 кор мекунад)
ки "****" давомнокии оғози барнома аст :) баъд аз он, дар ҳама гуна браузер (ё curl ё ҳар чизе ки шумо истифода мебаред?) шумо бояд суроғаеро, ки усули контроллер ба он харита шудааст, нависед.
localhost: 8080 / салом
Браузер бояд каноникро нишон диҳад
Салом Ҷаҳон!
Ин як барномаи веб барои шумост! Агар шумо дидед, ки дар контроллер усули дигар мавҷуд аст, он харитасозии суроғаи худро дорад; ҷойнишин ба суроғаи ҷорӣ илова карда мешавад. Ки ба усули баҳор ҳамчун параметр мегузарад. Фарз кардан душвор нест, ки шарҳи @PathVariable барои ин масъул аст. Пас аз рӯи дархост
localhost: 8080/салом/Номи шумо
браузер нишон медиҳад
Салом, номи шумо!
Мо асосҳои Boot Spring Boot-ро ҷудо кардем. Минбаъд, мо базаи маълумотро замима мекунем, аммо ин дар паёми оянда хоҳад буд. Ташаккур ба ҳама.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION