SDET (Software Development Engineer in Test) პოზიციისთვის, რომელიც ფოკუსირებულია Java, Selenium, TestNG-ზე,
ინტერვიუს კითხვები შეიძლება მოიცავდეს თემების ფართო სპექტრს საბაზისოდან მოწინავე კონცეფციებამდე.
აქ მოცემულია კითხვები, რომლებიც მოიცავს ამ სფეროებს, რაც რა თქმა უნდა ვერ უზრუნველყოფს ყოვლისმომცველ მიმოხილვას პოტენციური ინტერვიუს მომზადებისთვის მაგრამ ნაწილს მაინც დაფარავს აუცილებლად:
JAVA
1) რა არის ჯავას ძირითადი მახასიათებლები?
შეგვიძლია გამოვყოთ რამდიმე მახასიათებელი:
* ჯავას კოდი მუშაობს ნებისმიერ მოწყობილობაზე რომელსაც აქვს JVM (ჯავას ვირტუალური მანქანა). ანუ ჯავას აქვს მიღწეული ასე ვთქვათ პლატთფორმის დამოუკიდებლობა JMV წყალობით. რაც საშუალებას იძლევა ნებისმიერ მოწყობილიბაზე მუშაობის, რომელიც აღჭურვილია JVM ით რაც იძულებულს ხდის რომ ნებისმიერი კოდის გაშვების წინ მოხდეს მისი “დაბილდვა” და შემდგომ გაშვება.
* ობიექტზე ორიენტირება – ჯავა ში ყველაფერი არის ობიექტი რაც ხელს უწყობს კლასების და ობიექტების გამოყენებას.
* მეხსიერების მაღალი დონის მენეჯმენტი, გამონაკლისების მართვა.
2) OOP როლი ჯავაში
ობიექტზე ორიენტირებული პროგრამირების (OOP) პრინციპები ჯავაში მოიცავს აბსტრაქციას, ინკაფსულაციას, მემკვიდრეობას და პოლიმორფიზმს, რაც ხელს უწყობს კოდის ხელახლა (მრავალჯერადად, სახეცვლილების გარეშე) გამოყენებას, მასშტაბურობას.
3) რა სხვაობაა ==
და equals()
შორის?
==
ამოწმებს მითითების თანასწორობას, რაც იმას ნიშნავს, რომ ამოწმებს, მიუთითებს თუ არა ორი მნიშვნელობა მეხსიერებაში ერთსა და იმავე ობიექტზე.
equals()
ამოწმებს შინაარსის თანასწორობას, რაც იმას ნიშნავს, რომ აფასებს, რომ ორი ობიექტის მნიშვნელობები ერთნაირია.
5) როგორ მუშაობს გამონაკლისების მართვა ჯავაში?
ჯავა იყენებს try-catch ბლოკებს გამონაკლისების დასამუშავებლად. გამონაკლისია ქმედება, რომლებიც არღვევს კოდის ნორმალურ მსვლელობას, try-catch კი ვიყენებთ ასეთი პროცესის “დასაჭერად” და შესაბამისი ქმედების განსახორციელებლად.
6) რა განსხვავებაა ჯავაში final, finally
შორის?
final
შეიძლება იყოს ცვლადი, მეთოდი ან კლასი, რომლის შეცვლა, გადაფარვა ან მემკვიდრეობა შეუძლებელია.
finally
არის try-catch ის განყოფილება რომელიც ყველაფრის მიუხედავად მაინც ეშვება.
SELENIUM
1) რა არის სელენიუმი და რა არის მისი განმასხვავებელი კომპონენტები?
Selenium არის ინსტრუმენტების ნაკრები ვებ ბრაუზერების ავტომატიზაციისთვის, რომელიც შედგება Selenium WebDriver, Selenium Grid და Selenium IDE.
2) როგორ ხდება ელემენტის ამოღება, რა საშუალებები გვაქვს ?
Selenium გთავაზობთ სხვადასხვა სტრატეგიებს ელემენტების ადგილმდებარეობის იდენტიფიცირებისთვის, როგორიცაა ID, name, XPath, CSS სელექტორი, კლასი, თეგი, ბმული და ტექსტი.
3) რა ტიპის wait ები არსებობს?
სელენიუმი მხარს უჭერს Implicit და Explicit მაგრამ ასევე არსებობს მესამე ტიპიც Fluent რომლის უპირატესობაა მეტი მოქნილობა (შესაძლებელია წინასწარ განსაზღვრება თუ რამხელა შუალედით გააკეთოს მიმართვები ელემინტის მოძებნისას), ასევე უნდა აღინიშნოს რომ Implicit გამოყენება ითვება მოძველებულ მეთოდად selenium 4 ვერსიიდან.
4) როგორ ვემუშავებით native popup ტიპის ფანჯრებს?
Selenium WebDriver აქვს შესაბამისი მეთოდი Alert
რომლის გამოყენებითაც შესაძლებელია მარტივად ვემუშავოთ popup ფანჯრებს (ტექსტის შეყვანა, დათანხმებ/უარყოფა)
5) რა არის POM (page object model) და რა ბენეფიტები აქვს?
POM არის design pattern და ის ხელს უწყობს კოდის ხელახლა გამოყენებას და ამცირებს კოდის დუბლირებას.
6) რა სახის განსხვავებები გვაქვს სელენიუმში გამონაკლისებთან მუშაობის დროს?
Selenium WebDriver ახორციელებს სხვადასხვა გამონაკლისს, რათა მიუთითოს შეცდომები კოდის შესრულების დროს, როგორიცაა მაგ. NoSuchElementException, TimeoutException და WebDriverException.
7) როგორ შეგვიძლია screenshoot გადაღება?
სელენიუმ ვებ დრაივერს აქვს შესაბამისი მეთოდი `TakesScreenshot`
8) როგორ შეგვიძლია ვემუშავოთ რამდენიმე აქტიურ ფანჯარას?
სელენიუმ ვებ დრაივერს აქვს შესაბამისი მეთოდი `switchTo()`
TestNG
1) რა არის TestNG და რა არის მისი ძირითადი მახასიათებლები?
testNG არის ფრეიმვორქი რომელიც ამარტივებს ტესტირებას, რომელსაც გააჩნია ძირითადი მახასიათებლები და მოიცავს ანოტაციებს, უფრო მეტად მოქნილს ხდის ტესტების კონფიგურაციას, ანხორციელებს data driven testing მხარდაჭერას, პარამეტრიზაციას.
2) ახსენით როგორ არის შესაძლებელი TestNG გამოყენებით ტესტ ქეისების დაჯგუფება?
TestNG საშუალებას გაძლევთ დააჯგუფოთ რამდენიმე ტესტის მეთოდი, @Test ანოტაციაში group ატრიბუტის გამოყენებით, რაც საშუალებას გაძლევთ შერჩევით გავუშვათ ტესტები.
3) როგორ ახდენთ ტესტების პარამეტრიზაციას TestNG-ში?
TestNG მხარს უჭერს ტესტების პარამეტრიზაციას @Parameters ანოტაციით ან @DataProvider ანოტაციით, რაც საშუალებას აძლევს ტესტის მეთოდის მრავალჯერ გაშვებას მონაცემთა სხვადასხვა ნაკრებით.
4) რა მნიშვნელობა აქვს ანოტაციებს და რომელ მათგანს იცნობთ TestNG-ში?
ანოტაციები TestNG-ში განსაზღვრავს მეტამონაცემებს ტესტის მეთოდებისთვის, როგორიცაა @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeClass, @AfterClass, @BeforeMethod, @AfterMethod და @Test, კარნახობს როდის და როგორ ჩატარდება თითოეული ტესტი.
5) როგორ შეგვიძლია დავაგენიროთ რეპორტი TestNG-ში?
TestNG ავტომატურად აგენერირებს დეტალურ HTML რეპორტს ტესტირების შესახებ.
6) როგორ შეგიძლიათ გამოიყენოთ TestNG, data-driven ტესტირებისთვის?
TestNG მხარს უჭერს მონაცემებზე დაფუძნებულ ტესტირებას @DataProvider ანოტაციის გამოყენებით, რომელიც ეხმარება ტესტის მეთოდის მრავალჯერ გაშვებას მონაცემთა სხვადასხვა ნაკრებით.
7) რა არის @Test ანოტაციის მიზანი TestNG-ში?
@Test ანოტაცია მიუთითებს, რომ მეთოდი ტესტის მეთოდია. ეს ანოტაცია უზრუნველყოფს ტესტის კონფიგურაციის ატრიბუტებს, როგორიცაა ჯგუფების, დამოკიდებულებების და მონაცემთა პროვაიდერების მითითება.
8) როგორ ასრულებთ პარალელურ ტესტირებას TestNG-ში?
TestNG–ს შეუძლია ტესტების პარალელურად შესრულება, რაც ამცირებს ტესტის შესრულებისთვის საჭირო დროს. ამის კონფიგურირება შესაძლებელია TestNG XML ფაილში ატრიბუტების გამოყენებით, როგორიცაა parallel და thread-count
ზოგადი ტესტირების ცნებები
1) რა განსხვავებაა თეთრი ყუთისა და შავი ყუთის ტესტირებას შორის?
თეთრი ყუთის ტესტირება – კომპიუტერული პროგრამის ტესტირების მეთოდი, რომლის დროსაც ტესტირების პროცესი მიმდინარეობს პროგრამული უზრუნველყოფის შიგა სტრუქტურის დონეზე. „თეთრი ყუთის“ ტესტირება მოითხოვს პროგრამის შიგა სტრუქტურის, პროგრამული კოდის ცოდნას. ძირითადად, „თეთრი ყუთის” ტესტირებას ახორციელებენ დეველოპერ/პროგრამისტები, რადგან, როგორც აღვნიშნეთ, მის დროს აპლიკაციის შემოწმება ხდება პროგრამული კოდის დონეზე მსგავსი ტიპის ტესტირება დაფუძნებულია პროგრმული კოდის ცოდნაზე, კომპონენტებსა და მათ შორის კავშირებზე, ციკლებზე და ა.შ.
—
შავი ყუთის ტესტირება – ტესტირების მეთოდია, რომლის დროსაც ხდება აპლიკაციის ფუნქციონალის ტესტირება შიგა სტრუქტურის გამოკვლევის გარეშე. ამ დროს პროგრამული კოდის ან არქიტექტურის ცოდნა არაა საჭირო. „შავი ყუთის” ტიპის ტესტირებისას ტესტერი ამოწმებს თუ რა გააკეთა პროგრამამ და არ აინტერესებს თუ როგორ მიიღო შედეგი
2) ახსენით ტესტირების სხვადასხვა დონეები (Unit, Integration, System, Acceptance)
Unit: ცალკეული კომპონენტების ან კოდის ნაწილების ფუნქციონალურობის ტესტირება.
Integration: კომბინირებული კომპონენტების ტესტირება მათი ურთიერთქმედების შესაფასებლად.
System : სრული და სრულად ინტეგრირებული პროგრამული პროდუქტის ტესტირება.
მიღების ტესტირება: პროგრამული უზრუნველყოფის ტესტირება კლიენტის ან საბოლოო მომხმარებლების მიერ, რათა დარწმუნდეს, რომ იგი აკმაყოფილებს მოთხოვნებს.
3) რა მნიშვნელობა აქვს ტესტის გეგმას და რას მოიცავს იგი?
ტესტის გეგმა არის დოკუმენტი, რომელიც დეტალურად ასახავს ტესტირების აქტივობების ფარგლებს, მიდგომას, რესურსებს და განრიგს. იგი ასახავს ტესტის მიზნებს, ტესტების დაწყებისა და შეწყვეტის კრიტერიუმებს და მოსალოდნელ შედეგებს.
4) რა არის “კარგი” ტესტის ძირითადი პრინციპები?
კარგი ტესტის შემთხვევა არის ნათელი, ლაკონური, ყოვლისმომცველი და მოიცავს დადებით და უარყოფით სცენარებს. ის უნდა იყოს დამოუკიდებელი და ხელახლა გამოყენებადი.
5) ახსენით ტესტის ავტომატიზაციის ფრეიმვორქის კონცეფცია.
ტესტის ავტომატიზაციის ფრეიმვორქი არის სახელმძღვანელო მითითებების, კოდირების სტანდარტების, კონცეფციების, პროცესების, პრაქტიკისა და ხელსაწყოების ერთობლიობა, რომლებიც მხარს უჭერენ პროგრამული პროდუქტის ავტომატიზირებულ ტესტირებას.
6) როგორ ხელმძვანელობთ ტესტ ქეისების პრიორიტეტების განსაზღვრისას?
პრიორიტეტების განსაზღვრისთვის ვიყენებთ ისეთი ფაქტორებს, როგორიცაა ბიზნესის გავლენა, კრიტიკულობა, გამოყენების სიხშირე, რისკი და ავტომატიზაციისთვის დახარჯული დროის განსაზღვრა.
7) როგორ განსაზღვრავთ ან მიყვებით ტესტირების ავტომატიზაციის უახლეს ტენდენციებს?
ინდუსტრიის სიახლეების გაცნობით, ფორუმებსა და კონფერენციებში მონაწილეობით , კურსების გავლით და ახალი ინსტრუმენტების თუ ტექნიკის ექსპერიმენტებით.