Кіріспе

Веб-қосымшаларға арналған сынақ жүйесі

Selenium – браузерді автоматтандыруды қолдауға бағытталған құралдар мен кітапханалар жиынтығын қамтитын ашық кодты жоба. Ол көптеген қазіргі веб-браузерлерде функционалдық тесттерді жасау үшін қайта ойнату құралын ұсынады, тест скриптілерін жазу тілін (Selenium IDE) үйренудің қажеті жоқ. Сонымен қатар, ол JavaScript (Node.js), C#, Groovy, Java, Perl, PHP, Python, Ruby және Scala сияқты көптеген танымал бағдарламалау тілдерінде тесттерді жазуға арналған арнайы тілді (Selenese) ұсынады. Selenium Windows, Linux және macOS жүйелерінде жұмыс істейді. Бұл Apache License 2.0 лицензиясы бойынша жарияланған ашық кодты бағдарламалық қамтамасыз ету. Selenium – веб-қосымшалар үшін ашық кодты автоматтандыру фреймворкі, тестілеушілер мен әзірлеушілерге браузермен өзара әрекеттесуді автоматтандыруға және функционалдық тестілеуді жүргізуге мүмкіндік береді. WebDriver сияқты әмбебап құралдармен жабдықталған Selenium әртүрлі бағдарламалау тілдерін қолдайды және браузерлер аралық тестілеуді жеңілдетеді, бұл оны тиімді және кеңейтілген веб-автоматизация үшін тамаша таңдауға айналдырады.

Тарих

Селенді алғаш 2004 жылы Джейсон Хаггинс ThoughtWorks компаниясындағы ішкі құрал ретінде әзірледі. Кейін Хэггинске ThoughtWorks-тегі басқа бағдарламашылар мен тестерлер қосылды, сосын Пол Хамман командаға қосылып, кейін "Selenium Remote Control" (RC) болып аталған екінші жұмыс режимін дамытуды басқарды. Сол жылы бұл құрал ашық кодқа айналды. 2005 жылы Дэн Фабулич пен Нельсон Спраул (Пэт Лайтбодидің көмегімен) Selenium RC-ді ең танымал болған түріне айналдыратын түзетулер жинағын қабылдау туралы ұсыныс жасады. Сол кездесуде Selenium жобасын басқару комитет жүзеге асыратын болды, ал Хэггинс пен Хаммант ThoughtWorks өкілдері болып тағайындалды. 2007 жылы Хаггинс Google компаниясына жұмысқа орналасты. Дженифер Беван сияқты басқалармен бірге ол Selenium RC-ді дамыту және тұрақтандыру жұмыстарын жалғастырды. Осы уақытта Саймон Стюарт ThoughtWorks-те WebDriver деп аталатын, браузерді автоматтандыруға арналған жақсырақ құралды жасады. 2009 жылы Google Test Automation конференциясындағы әзірлеушілердің кездесуінен кейін екі жобаны біріктіруге және жаңа жобаны Selenium WebDriver немесе Selenium 2.0 деп атауға келісім берілді. 2008 жылы Филипп Ханригу (сол кезде ThoughtWorks-те жұмыс істеген) "Selenium Grid" құралын жасады, ол бірнеше Selenium тесттерін бір уақытта жергілікті немесе қашық жүйелерде іске қосуға мүмкіндік беретін хабты қамтамасыз етеді, соның арқасында тесттің орындалу уақыты қысқартылады. Grid, Selenium RC үшін Google-дің ішкі/жеке бұлттық қызметіне ұқсас мүмкіндікті ашық код ретінде ұсынды. Пат Лайтбоди бұрын "HostedQA" үшін жеке бұлтты жасаған еді, оны кейін Gomez, Inc. компаниясына сатты. Selenium атауы Хаггинстің электрондық поштасындағы әзілінен пайда болды, онда ол Mercury деген бәсекелесін сынап-серекпен улануды селенді қабылдау арқылы емдеуге болатыны туралы мазақтап жазған. Электрондық хатты алған басқа адамдар осы атауды қабылдап, оны пайдаланды.

Құралымдары

Селен веб-қосымшалардың тесттік автоматтандыруын дамытуға көмектесетін бірнеше компоненттерден құралған, олардың әрқайсысы белгілі бір функцияны атқарады.

Селен IDE

Selenium IDE – Selenium тесттері үшін толыққанды интеграцияланған даму ортасы (IDE). Ол Firefox қосымшасы және Chrome кеңейтуі ретінде жүзеге асырылады. Ол функционалдық тесттерді жазуға, өңдеуге және түзетуге мүмкіндік береді. Бұрын ол Selenium Recorder деп белгілі болған. Selenium IDE бастапқыда Shinya Kasatani жасаған және 2006 жылы Selenium жобасына табыс еткен. Selenium IDE 2018 жылдан бастап белсенді түрде күтіліп келеді. Скрипттер автоматты түрде жазылуы мүмкін, сондай-ақ қолмен өңдеуге болады, автотолтыру қолдауын және командаларды жылдам жылжыту мүмкіндігін ұсынады. Скрипттер Selenium-нің арнайы тест скрипті тілі – Selenese-де жазылады. Selenese браузерде әрекеттерді орындау (сілтемеге басу, опцияны таңдау) және нәтижесінде алынған беттерден деректерді алу үшін командаларды ұсынады. Selenese веб-қосымшаларды сынау үшін қолданылатын Selenium командаларын құрастыру тілі ретінде қызмет етеді. Бұл командалар, пайдаланушы интерфейсі элементтерінің HTML тегтеріне бейімделіп, олардың бар екенін тексеруге көмектеседі. Олар Selenium-ға орындалуға тиіс нақты әрекеттерді немесе операцияларды түсінуге бағыттайды.

Selenium клиенті API-і

Селен тілінде тест жазудың орнына, тесттерді әртүрлі бағдарламалау тілдерінде де жазуға болады. Бұл тесттер Selenium клиент API-дегі әдістерді шақыру арқылы Selenium-мен байланысады. Қазіргі таңда Selenium Java, C#, Ruby, JavaScript, R және Python тілдері үшін клиент API-ларын ұсынады.

Селенді қашықтан басқару

Selenium Remote Control (RC) - Java-да жазылған сервер, ол HTTP арқылы браузерге командаларды қабылдайды. RC кез келген бағдарламалау тілінде веб-қосымшаға автоматтандырылған тесттерді жазуға мүмкіндік береді, бұл Selenium-ды қолданыстағы бірлік тесттерінің жүйелеріне жақсы интеграциялауға мүмкіндік береді. Тесттерді жазуды жеңілдету үшін Selenium жобасы қазіргі уақытта PHP, Python, Ruby, .NET, Perl және Java үшін клиенттік драйверлерді ұсынады. Java драйверін JavaScript-пен де (Rhino қозғалтқышы арқылы) пайдалануға болады. HTML тест жағдайын іске қосу үшін Selenium RC серверінің бір данасы қажет, яғни порт әр параллель орындалу үшін әртүрлі болуы керек. Дегенмен, Java/PHP тест жағдайы үшін тек бір Selenium RC данасы үздіксіз жұмыс істеуі керек. Selenium Remote Control – бұл Пол Хаммант жобалаған, ал Джейсон Selenium-ның серіктесі ретінде танымал Driven Selenium немесе Selenium B-нің қайта құрылымдалуы. Бастапқы нұсқада Java, .NET, Python немесе Ruby тест тілінен қарастырылып отырған браузер үшін тікелей процесс іске қосылды. Сым протоколы (өз уақытында "Selenese" деп аталды) әр тілге аударғанда қайта іске асырылды. Дан Фабулих пен Нельсон Спраульдің (Пэт Лайтбодидің көмегімен) қайта құрылымдауынан кейін, басқарушы тест скрипті мен браузердің арасында аралық демон процесі пайда болды. Бұл қашықтан браузерлерді басқару мүмкіндігін және кодтың әр жолын тілдердің үнемі өсіп келе жатқан жиынтығына аудару қажеттілігін азайтты. Selenium Remote Control 2006 жылы Driven Selenium код желісін толыққанды алмастырды. "Driven"/"B" және "RC" браузер үлгісі сұрау/жауап болды, кейіннен ол Comet деп аталды. Selenium RC ұзақ жылдар бойы Selenium жобасының флагмандық тест жүйесі ретінде қызмет етті. Сонымен қатар, Selenium RC – бұл пайдаланушыларға өздерінің сүйікті бағдарламалау тілін пайдалануға мүмкіндік берген алғашқы және ең маңызды автоматтандырылған веб-тестілеу құралы. Selenium 2-нің шығуымен Selenium RC ресми түрде Selenium WebDriver пайдасына тоқтатылды.

Selenium WebDriver (Селений WebДрайвері)

Selenium WebDriver – браузерлерде бір-бірімен алмастырылып жұмыс істейтін нұсқауларды жазуға арналған интерфейс. Ол Selenium RC-нің жалғасы. Selenium WebDriver командаларды (Selenese немесе Клиент API арқылы жіберілген) қабылдайды және оларды браузерге жібереді. Бұл браузерге командаларды жіберіп, нәтижелерді алатын браузерге арналған драйвер арқылы іске асырылады. Көптеген браузер драйверлері браузер қосымшасын (мысалы, Firefox, Google Chrome, Internet Explorer, Safari немесе Microsoft Edge) іске қосып, оған қол жеткізеді; сонымен қатар, бассыз браузер HtmlUnit-ты пайдаланып браузерді симуляциялайтын HtmlUnit браузер драйвері де бар. Selenium 1-де тесттерді орындау үшін Selenium сервері қажет болғаннан өзгеше, Selenium WebDriver тесттерді орындау үшін арнайы серверді қажет етпейді. Оның орнына WebDriver тікелей браузер экземплярын іске қосып, оны басқарады. Дегенмен, Selenium Grid-ті WebDriver-мен бірге алыс жүйелерде тесттерді орындау үшін пайдалануға болады (төменде қараңыз). Мүмкіндігі шектес болса, WebDriver браузерді басқару үшін браузерге негізделген JavaScript командаларының орнына операциялық жүйе деңгейіндегі мүмкіндіктерді пайдаланады. Бұл жақын арадағы және JavaScript командалары арасындағы айырмашылықтарды, соның ішінде қауіпсіздік шектеулеріне байланысты туындайтын мәселелерді болдырмайды. 2012 жылдың басында WebDriver-ді ойлап тапқан Саймон Стюарт (сол кезде Google-де жұмыс істеген) және Mozilla-дан Дэвид Бернс WebDriver-ді интернет стандартына айналдыру үшін W3C-мен келіссөздер жүргізді. 2012 жылдың шілдесінде жұмыс жобасы жарияланды, ал 2018 жылдың маусым айында ұсыным қабылданды. Selenium WebDriver (Selenium 2.0) толыққанды іске асырылған және JavaScript (Node.js), Python, Ruby, Java, Kotlin және C# тілдерінде қолдау табады. 2021 жылға қарай Selenium 4 шығарылымға дайын үміткер болып табылады.

Селен желісі

Selenium Grid – бұл сервер, ол қашықтағы машиналарда іске қосылған веб-браузерлерді тесттерде пайдалануға мүмкіндік береді. Selenium Grid-де бір сервер орталық хаб ретінде жұмыс істейді. Тесттер хабқа байланысып, браузер инстанцияларына қол жеткізеді. Хаб браузер инстанцияларына (WebDriver түйіндері) қол жеткізуді қамтамасыз ететін серверлер тізімін сақтайды және тесттерге осы инстанцияларды пайдалануға рұқсат береді. Selenium Grid бірнеше машинада тесттерді параллель түрде орындауға және әртүрлі браузер нұсқалары мен конфигурацияларын орталықтан басқаруға мүмкіндік береді (әрбір жеке тестте емес). Тесттерді қашықтағы браузер инстанцияларында іске қосу, тест жүктемесін бірнеше машинаға бөлуге және әртүрлі платформалар мен операциялық жүйелерде жұмыс істейтін браузерлерде тесттерді орындауға пайдалы. Соңғысы, әсіресе, барлық қолданылатын браузерлерді бір платформада іске қосу мүмкін болмаған жағдайларда маңызды.