ტესტირების ავტომატიზაციის დადებითი და უარყოფითი მხარეები
- რატომ არის მნიშვნელოვანი ტესტირების ავტომატიზაცია?
- რა სარგებელი მოაქვს ტესტირების ავტომატიზაციას?
- ტესტირების ავტომატიზაციის ნაკლოვანებები
- რა არ უნდა დაავტომატიზირო?
რატომ არის მნიშვნელოვანი ტესტირების ავტომატიზაცია?
ცხადია, ტესტირების ავტომატიზაციით შეუძლებელია ტესტერების ჩანაცვლება, რადგან აუცილებელია ტესტირების სხვადასხვა აქტივობის შესრულება ხარისხის უზრუნველყოფისათვის. მაგრამ ამავდროულად, დღეს აუცილებელია მისი ინტეგრაცია პროგრამული უზრინველყოფის დეველოპმენტის სასიცოცხლო ციკლში, რათა უზრუნველყოფილი იყოს დეველოპმენტის სწრაფი ტემპი.
გარდა ამისა, ეჯაილ და დევოპს მეთოდოლოგიებს გააჩნიათ დამოკიდებულება ტესტირების ავტომატიზაციაზე. ისეთი პრაქტიკა, როგორიცაა უწყვეტი ინტეგრაცია (CI) და მიწოდება (CD), მოითხოვენ დაავტომატიზებულ ტესტირების სცენარებს, რომელთა შესრულება სწრაფად და საიმედოდ არის შესაძლებელი. ტესტირების ავტომატიზაციის გარეშე ძალიან რთულია მოკლე ვადებში სასურველი ხარისხის უზრუნველყოფა; ასეთ დროს ხარისხი მხოლოდ უზომოდ დიდი ძალისხმევის შედეგად თუ მიიღწევა, რომლის დროსაც გარკვეული ტიპის რისკების არსებობა საკმაოდ მაღალია.
თუმცა მნიშვნელოვანია, კარგად გვქონდეს გააზრებული, კონკრეტულად რა სარგებლობის მოტანა შეუძლია ტესტირების ავტომატიზაციას.
რა სარგებელი მოაქვს ტესტირების ავტომატიზაციას?
ტესტირების ავტომატიზაციის სარგებელი საკმაოდ ბევრია, როგორც ტესტერებისთვის, ისე დეველოპერებისათვის.
ტესტირების ავტომატიზაციის სარგებელი დეველოპერებისთვის
როდესაც ტესტირების ავტომატიზაციაზე დეველოპერების კონეტქსტში ვსაუბრიბთ, ეს გულისხმობს იუნიტ ტესტირებას, კომპონენტების ტესტირებას და ინტეგრაციის ტესტირებას.
დღეისათვის ტესტირებაზე დაფუძნებული დეველოპმენტი (TDD) დამკვიდრებული პრაქტიკაა, თუმცა ყველა შემთხვევაში ეს ასე არაა. ამის მიზეზი შეიძლება თავად დეველოპერი იყოს ან ის ფინანსური თუ დროითი რესრურსი რაც პროექტისთვისაა განკუთვნილი. თუმცა, რაც არ უნდა იყოს მიზეზი, ტესტირებაზე დაფუძნებული დეველოპმენტი შესაძლებელს ქმნის უფრო უსაფრთხო დეველოპმენტის პროცესს, როგორც ახალი პროექტის შემთხვევაში, ისე არსებულ პროექტში ცვლილებების შეტანისას. ორივე შემთხვევაში ის გვაზღვევს შეცდომებისგან.
ასე, რომ ცალსახად შეიძლება ითქვას, რომ ავტომატური ტესტები წარმოადგენს უსაფრთხოების ღვედს. როდესაც ყოველი ახალი ანაწყობის შემოწმება ხდება კოდის დონეზე მაქსიმალურად დაფარული ტესტებით, დეველოპერს შეუძლია დარწმუნებული იყოს, რომ ანაწყობში ყველაფერი რიგზეა.
ტესტირების ავტომატიზაციის სარგებელი ტესტერებისთვის
რეგრესიის ან სმოუქ ტესტირების დროს ტესტერები იყენებენ არსებულ ტესტ ქეისებსა და სცენარებს და მათი გამოყენებით ნაბიჯ-ნაბიჯ ამოწმებენ აპლიკაციასა თუ API-ის. როდესაც ეს პროცესი მანუალურად სრულდება, საკმაოდ დიდი დროითი რესრურსი იხარჯება.
შესაბამისად, იმისათვის, რომ დაზოგონ დრო, კომპანიები აქტიურად ცდილობენ დაავტომატიზირონ მანუალური რეგრესიული ტესტები. შედეგად ადამიანური ჩარევის გარეშე ხდება მათი შესრულება.
ეს ხაზგასმით წარმოაჩენს ტესტირების ავტომატიზაციის ორ მნიშვნელოვან სარგებელს:
- ის ათავისუფლებს ტესტერის რესურსს, რაც მას საშუალებას აძლევს მეტად იყოს ფოკუსირებული მაღალი ღირებულების მქონე სხვა ტესტირების აქტივობების შესრულებაზე, რომელიც ვერ დაავტომატიზირდება (მაგ.: აღმოჩენითი ტესტირება).
- გვაზღვევს ნაბიჯების გამორჩენისგან, რაც ადამიანური ფაქტორის გამო მანუალური ტესტირებისას შეიძლება მოხდეს.
მაშინ, როდესაც დეველოპმენტის ტემპი მაღალია, ტესტირების ავტომატიზაცია აუცილებელია. როდესაც გვსურს ეჯაილ და დევოპს მეთოდოლოგიების გამოყენება დეველოპმენტის პროცესში, ის უდიდეს როლს თამაშობს. თუ ტესტირების ყველა ეტაპი მანუალურად სრულდება, სასურველ წარმადობას ვერ მივაღწევთ.
კიდევ ერთი მიზეზი, რის გამოც მნიშვნელოვანია ტესტირების ავტომატიზაციის დანერგვა, ისაა, რომ დეველოპერებს შესაძლებლობა ეძლევათ მყისიერად მიიღონ ინფორმაცია ხარვეზების შესახებ. რაც თავის მხრივ დროისა და ფინანსების დაზოგვაში ეხმარება ორგანიზაციას.
თუმცა, მნიშვნელოვანია გვახსოვდეს, რომ როდესაც ვსაუბრობთ ფინანსების დაზოგვაზე, არ იგულისხმება ავტომატური ტესტების შენარჩუნებაზე რესურსის ეკონომია.
გარდა ზემოხსენებული რამდენიმე სარგებლისა, ტესტირების ავტომატიზაციას კიდევ ბევრი სარგებელი აქვს. ესენია:
- პროგრამული უზრუნველყოფის ახალი ვერსიის მყისიერი ვერიფიკაცია.
- ტესტერებისთვის დროის გამოთავისუფლება აღმოჩენითი ტესტირებისთვის.
- განმეორებადი ტესტების ავტომატური შესრულება ადამიანური ფაქტორით გამოწვეული რისკების გარეშე (დაღლილობა, თვალის მიჩვევა, ხარვეზის ვეღარ შემჩნევა და სხვა).
- მრავალფეროვანი მონაცემების გამოყენება ტესტირებისას.
- ზუსტი შეფასების შესაძლებლობა.
- ნაკლები ცრუ ხარვეზი ადამიანური შეცდომების გამო.
- ტესტირების მაღალი დაფარვა.
- ვერსიის უფრო სწრაფი რელიზი.
- დეველოპერების სწრაფი ინფორმირება ხარვეზების შესახებ.
- შესაძლებლობა გაიტესტოს ყველა ანაწყობი დეველოპმენტის სხვადასხვა ეტაპზე.
- დროის დაზოგვა.
მიუხედავად იმისა, რომ ამდენი დადებითი მხარე აქვს ტესტირების ავტომატიზაციას, აუცილებელია მედლის მეორე მხარის ნახვა, რათა შესაძლებელი იყოს პროცესის სწორი დაგეგმვა და ტესტირების ავტომატიზაციის ნაკლოვანებების გამო მისი სათანადოდ განხორციელება.
ტესტირების ავტომატიზაციის ნაკლოვანებები
ტესტირების ავტომატიზაცია არის პროგრამული უზრუნველყოფის დეველოპმენტი, რასაც იგივე ტიპის ძალისხმევა სჭირდება, როგორიც სხვა ტიპის დეველოპმენტ პროექტების წარმატებით წარმართვას.
ტესტირების ავტომატიზაციის მისაღწევად უნდა შექმნა პროგრამული უზრუნველყოფა, რომელიც სხვა პროგრამულ უზრუნველყოფას შეამოწმებს. როგორც პროგრამის გამართულობის შენარჩუნებას სჭირდება ძალისხმევა, მსგავსად ჭირდება ავტომატიზაციასაც. ამ პროცესში აუცილებლად არის გასათვალისწინებელი იგივე, რაც სხვა პროექტების შემთხვევაში.
ამავდროულად, ტესტირების ავტომატიზაცია, შესაძლოა უფრო კომპლექსური იყოს, ვიდრე ნებისმიერი სხვა დეველოპმენტ პროექტი. შესაბამისად საუკეთესო პრაქტიკების გამოყენება კრიტიკულად მნიშვნელოვანია.
ტესტირების ავტომატიზაცია არის დეველოპმენტი
ტესტირების ავტომატიზაციისთვის აუცილებელია პროგრამირება. შესაბამისად მას ჭირდება ისეთივე ძალისხმევა, როგორც ნებისმიერ სხვა დეველოპმენტ პროექტს.
მისი დეველოპმენტისას ისევე შეიძლება წარმოიშვას, პრობლემები, როგორც სხვა პროექტების შემთხვევაში. არასათანადო რესურსის გამოყოფის შემთხვევაში (კვალიფიკაცია, დრო), არსებობს რისკი, რომ ის ვერ შეძლებს მიზნის მიღწევას. ამიტომ მნიშვნელოვანია, პროცესის სწორად დაგეგმვა და საუკეთესო პრაქტიკების გამოყენება.
თუ ზემოხსენებულის გათვალისწინება არ მოხდება, ავტომატიზაციის პროექტი მარცხისთვის იქნება განწირული.
ტესტირების ავტომატიზაციის სხვა პრობლემური მხარეები
გარდა ზემოხსენებულისა ავტომატიზაციის პროცესისთვის ხელისშემშლელ ფაქტორებს წარმოადგენს:
- არა რეალური მიზნების დასახვა.
- რწმენა იმისა, რომ ავტომატიზაცია ბევრ ახალ ხარვეზს აღმოაჩენს.
- უსაფრთხოების მცდარი განცდა.
- ავტომატიზაციისთვის გამოყოფილი დროის არასწორი განსაზღვრა.
- დიდი, ყოვლის მომცველი ტესტირების სცენარების ავტომატიზაცია, რომლის მხარდაჭერა დიდ რესურსთან იქნება დაკავშირებული და ასევე, რთული იქნება მათი ანალიზი ხარვეზების შემთხვევაში.
- მხოლოდ მომხმარებლის ინტერფეისის ტესტების ავტომატიზაცია.
- არასტაბილური/უკონტროლო ტესტირების გარემო.
- თვალის დახუჭვა ჩავარდნილ ტესტებზე.
- ტესტირებისთვის საჭირო მონაცემებისა და მისი სტრატეგიის არ ქონა.
- DRY პრინციპის არ გამოყენება.
- დეველოპერების მხრიდან ტესტირების ავტომატიზაციის არასათანადო მხარდაჭერა (ტესტირებადი კოდის არ დაწერა).
- არასათანადო სინქრონიზაცია გუნდებს შორის.
- არა კითხვადი ტესტების შექმნა.
- ღირებულების არ მქონე ტესტების ავტომატიზაცია.
- სატესტო მონაცემების კოდის დონეზე განსაზღვრა.
- პასუხისმგებლობის მხოლოდ ტესტირების ავტომატიზაციის ინჟინერზე განაწილებით.
- მოლოდინი იმისა, რომ ტესტირების ავტომატიზაცია ჩაანაცვლებს მანუალურ ტესტირებას.
- არასწორი ტექნოლოგიის შერჩევა ავტომატიზაციისათვის.
ეს სია წარმოადგენს კონკრეტულ მიზეზებს იმისა, თუ რატომ არ მუშაობს ტესტირების ავტომატიზაცია.
რომელი ტესტ ქეისები უნდა დაავტომატიზირდეს?
რომელი ტესტ ქეისები უნდა დაავტომატიზირდეს? - ეს არის ერთ-ერთი მნიშვნელოვანი კითხვა, რომელზე პასუხიც დიდწილად განსაზღვრავს ტესტირების ავტომატიზაციის პროექტის წარმატებას.
ცალსახად უნდა აღინიშნოს, რომ არ უნდა ცადო ყველაფრის ავტომატიზაცია. ამის მიზეზი, ისაა რომ ყველაფერი არ არის ავტომატიზირებადი. როდესაც გეგმავ, რა უნდა დაავტომატიზირო მხედველობაში მიიღე ქვემოთ მოცემული სია:
- ტესტები, რომლებიც წინასწარაა განსაზღვრული და მისი შესრულების პროცესში გამორიცხულია შემთხვევითობით გამოწვეული ცვლილებები.
- ტესტები, რომლებიც არ მოითხოვენ დამატებით ადამიანურ ინტერაქციას.
- ტესტები, რომელთა შესრულებაც ერთზე მეტჯერაა საჭირო.
- ნებისმიერი მანუალური პორცესი, რომელიც დროს დაზოგავს (არაა აუცილებელი, მაინცდამაინც ტესტირების პროცესი იყოს. მაგალითად ტესტირებისთვის საჭირო მონაცემების შეტანა ბაზაში ან სასურველი ტიპის მომხმარებლის რეგისტრაცია სისტემაში).
- ტესტები, რომლებიც სისტემის ყველაზე ღირებულ ნაწილს ეხება.
- ტესტები, რომელიც სისტემის ყველაზე მაღალ რისკიან ნაწილს ეხება.
- ტესტები, რომლებიც სისტემის კრიტიკულ ნაწილს ეხება.
- იუნიტ ტესტები.
- ტესტები, რომელთა შესრულებაც სხვადასხვა სატესტო მონაცემითაა აუცილებელი.
- ტესტები, რომელთა შესრულებაც მანუალურად რთულია.
- ტესტები, რომლებიც სხვადასხვა ანაწყობსა და პლატფორმაზე უნდა გაეშვას.
- ტესტები, რომელთა გამოყენება დატვირთვის ან სტრეს ტესტირებისთვის შეიძლება გამოდგეს.
რაც უფრო მეტად განმეორებადია ტესტი, მით უფრო კარგი კანდიდატია ავტომატიზაციისთვის. თუმცა მხედველობაში აუცილებელია კონტექსტის გათვალისწინება.
არ დაგავიწყდეს, რომ ავტომატიზაციის ერთ-ერთი მიზანი დროის დაზოგვაა. შესაბამისად, ავტომატიზაციის პროექტში, აუცილებლად უნდა მოხდეს ისეთი პროცესების ავტომატიზაცია, რომელიც მაინცდამაინც ტესტირების პროცესს არ წარმოადგენს. ეს შეიძლება იყოს ისეთი აქტოვობა, რომლის ავტომატიზაციაც, შრომატევად პროცესს დროში შეამცირებს და მთელი დეველოპმენტ პროცესის წარმადობაზე მოახდენს დადებით გავლენას (მაგალითად, ასეთი შეიძლება იყოს სატესტო გარემოს მომზადება სხვადასხვა სცენარისთვის, რომელსაც მანუალურად შესაძლოა დიდი დრო ჭირდებოდეს ან კომპლექსუური ამოცანა იყოს).
რა არ უნდა დაავტომატიზირო?
გამონაკლისები ყოველთვის არსებობს, ამიტომ არ უნდა გინდოდეს შემდეგი ტიპის სცენარების ავტომატიზაცია:
- ერთჯერადი ტესტები.
- Ad hoc ტესტები.
- ტესტები, რომლებსაც ვერ ექნება წინასწარ განსაზღვრული შედეგები.
- გამოყენებადობის ტესტები.
- არატესტირებადი აპლიკაცია.