การเป็นเฟรมเวิร์กโอเพ่นซอร์สทำให้ "Selenium" สามารถทำงานร่วมกับเฟรมเวิร์กการทดสอบอัตโนมัติหลายเฟรมสำหรับภาษาการเขียนโปรแกรมที่แตกต่างกัน และหากเราพูดถึงการทดสอบอัตโนมัติด้วย Selenium และ JavaScript จะมีเฟรมเวิร์กเฉพาะที่ไม่เคยพลาดที่จะเป็นที่สนใจและนั่นคือ Nightwatch.js. นี่คือเหตุผลที่ฉันตัดสินใจสร้างบทช่วยสอน Nightwatch.js สำหรับผู้เริ่มต้น
ในบล็อกโพสต์นี้ เราจะเจาะลึกลงไปในบทช่วยสอน Nightwatch.js ทีละขั้นตอนเพื่อทำการทดสอบด้วย Selenium และ JavaScript สำหรับ การทดสอบเบราว์เซอร์อัตโนมัติ เราจะสำรวจวิธีที่เราสามารถติดตั้งและตั้งค่า Nightwatch.js และดูรายละเอียดเกี่ยวกับการกำหนดค่าและโครงสร้างไฟล์และโฟลเดอร์ที่สำคัญ หลังจากนั้น เราจะดูที่การดำเนินการสคริปต์ทดสอบอัตโนมัติบทช่วยสอน Nightwatch.js แรกของเรา และปัญหาบางประการที่เราอาจพบ พร้อมด้วยวิธีแก้ปัญหา มาเริ่มบทช่วยสอน Nightwatch.js สำหรับผู้เริ่มต้นด้วยการแนะนำเบื้องต้นกันดีกว่า
หากคุณยังใหม่กับ Selenium และสงสัยว่ามันคืออะไร เราขอแนะนำให้อ่านคำแนะนำของเรา — Selenium คืออะไร
Nightwatch.js บทช่วยสอน 101: Nightwatch.js คืออะไร
Nightwatch.js ขับเคลื่อนโดย Node.js เป็นเฟรมเวิร์กการทดสอบอัตโนมัติแบบโอเพ่นซอร์สที่มีจุดมุ่งหมายเพื่อมอบโซลูชัน E2E (ต้นจนจบ) ที่สมบูรณ์เพื่อทำการทดสอบอัตโนมัติด้วย Selenium Javascript สำหรับแอปพลิเคชันบนเว็บ แอปพลิเคชันเบราว์เซอร์ และเว็บไซต์ เฟรมเวิร์ก Nightwatch.js อาศัย Selenium และมีคำสั่งและการยืนยันหลายอย่างภายในเฟรมเวิร์ก Nightwatch.js เพื่อดำเนินการกับองค์ประกอบ DOM โดยจะใช้ W3C WebDriver API หรือ Selenium WebDriver อันทรงพลังภายใน และลดความยุ่งยากในการเขียน การทดสอบอัตโนมัติใน Node.js และตั้งค่าสำหรับการบูรณาการอย่างต่อเนื่องได้อย่างง่ายดาย
คุณใช้ Playwright เพื่อการทดสอบอัตโนมัติหรือไม่ รันสคริปต์ทดสอบ Playwright ของคุณทันทีบนเบราว์เซอร์/ระบบปฏิบัติการมากกว่า 50 รายการโดยใช้ระบบคลาวด์ LambdaTest ลงทะเบียนฟรี: https://www.lambdatest.com/playwright-testing
บทช่วยสอน Nightwatch.js 101: ทำไม Nightwatch.js ถึงได้รับความนิยม?
ก่อนที่เราจะเจาะลึกการรันสคริปต์ทดสอบในบทช่วยสอน Nightwatch.js สำหรับผู้เริ่มต้น สิ่งสำคัญคือต้องเข้าใจเหตุผลเบื้องหลังความนิยมของ Nightwatch.js Nightwatch.js อำนวยความสะดวกในการทดสอบเบราว์เซอร์ที่ทำงานแบบ end-to-end ในสภาพแวดล้อม node.js ล้วนๆ ซึ่งช่วยให้สามารถทดสอบแอปพลิเคชันเว็บที่เป็นอิสระจากซอฟต์แวร์ของบุคคลที่สาม วัตถุประสงค์หลักของเฟรมเวิร์กการทดสอบอัตโนมัติน้ำหนักเบาและแข็งแกร่ง เช่น Nightwatch.js คือการเปิดใช้งานโซลูชันครบวงจรเพียงตัวเดียวสำหรับการทดสอบแอปพลิเคชัน เนื่องจาก Nightwatch.js สร้างขึ้นบน Node.js จึงมีข้อได้เปรียบที่สำคัญเหนือ Selenium อื่นๆ การทดสอบเบราว์เซอร์อัตโนมัติที่ขับเคลื่อนโดย Nightwatch.js ช่วยลดปัจจัยการพึ่งพาซอฟต์แวร์ของบุคคลที่สาม ซึ่งส่งผลให้ข้อมูลในส่วนประกอบต่างๆ ของระบบมีความหลากหลายดีขึ้น
Nightwatch.js สำหรับการทดสอบซีลีเนียม ให้คุณสมบัติพิเศษดังต่อไปนี้:
➝ ในตัว Test Runner: มาพร้อมกับชุดตัวรันการทดสอบบรรทัดคำสั่งในตัวพร้อมการสนับสนุน Grunt สำหรับการดำเนินการทดสอบอัตโนมัติ
➝ กลยุทธ์การทดสอบ: มีคุณลักษณะในการดำเนินการทดสอบอย่างมีประสิทธิภาพและสามารถทำได้หลายวิธี เช่น แบบขนาน ตามลำดับหรือเป็นกลุ่ม และแท็ก
➝ บริการคลาวด์: การสนับสนุนที่ดีสำหรับการทดสอบข้ามเบราว์เซอร์ด้วย Selenium JavaScript โดยการผสานรวมกับผู้ให้บริการทดสอบ Selenium บนคลาวด์ เช่น LambdaTest
➝ เซิร์ฟเวอร์ซีลีเนียม: ความสามารถในการควบคุมเซิร์ฟเวอร์ซีลีเนียมแบบสแตนด์อโลนโดยอัตโนมัติด้วยการรายงาน JUnit XML ในตัว
➝ การยืนยัน, CSS และ XPath: คำสั่งและการยืนยันหลายรายการสำหรับการดำเนินการ DOM, ตัวเลือก CSS และ XPath และสามารถใช้เพื่อระบุองค์ประกอบบนเพจ สิ่งนี้ทำให้เฟรมเวิร์ก Nightwatch.js มีความยืดหยุ่นและขยายได้ง่าย โดยเฉพาะอย่างยิ่งในขณะที่ใช้คำสั่งและการยืนยันเฉพาะแอปพลิเคชัน
➝ การบูรณาการอย่างต่อเนื่อง: ให้การสนับสนุนที่ดีสำหรับการบูรณาการอย่างต่อเนื่อง และด้วยเหตุนี้จึงสามารถใช้เพื่อบูรณาการการทดสอบกับระบบประมวลผลการสร้างอย่างต่อเนื่อง เช่น Jenkins, TeamCity ฯลฯ และช่วยเหลือนักพัฒนาในการสร้างและการทดสอบซอฟต์แวร์อย่างต่อเนื่อง .
นอกเหนือจากคุณสมบัติข้างต้นทั้งหมดที่มีให้แล้ว ยังเป็นที่นิยมเนื่องจากมีไวยากรณ์ที่สะอาดและใช้งานง่าย ทำให้ง่ายต่อการเขียนการทดสอบอย่างมีประสิทธิภาพและรวดเร็วโดยการใช้ Node.js เท่านั้น ตัวเลือก CSS และ ตัวระบุตำแหน่ง XPath ในซีลีเนียม .
Nightwatch.js บทช่วยสอน 101: Nightwatch.js ทำงานอย่างไร
Nightwatch สื่อสารผ่านโปรโตคอล Restful API ที่กำหนดโดย W3C WebDriver API ต้องการ HTTP API ที่สงบพร้อมกับเซิร์ฟเวอร์ Selenium JavaScript WebDriver
ในการดำเนินการใดๆ เช่น คำสั่งหรือการยืนยัน โดยปกติแล้ว Nightwatch จะต้องส่งคำขออย่างน้อยสองครั้ง มันทำงานดังนี้:
- คำขอแรกค้นหาองค์ประกอบที่ต้องการด้วยนิพจน์ XPath หรือตัวเลือก CSS ที่กำหนด
- คำขอที่สองรับองค์ประกอบและดำเนินการตามจริงของคำสั่งหรือการยืนยัน
บทช่วยสอนการทดสอบที่ครอบคลุมตั้งแต่ต้นจนจบซึ่งครอบคลุมว่าการทดสอบ E2E คืออะไร ความสำคัญ ประโยชน์ และวิธีการดำเนินการพร้อมตัวอย่างแบบเรียลไทม์: https://www.lambdatest.com/learning-hub /การทดสอบจากต้นทางถึงปลายทาง
Nightwatch.js บทช่วยสอน 101: การติดตั้งและข้อกำหนดเบื้องต้นสำหรับการรัน
มีข้อกำหนดเบื้องต้นบางประการที่จำเป็นในการเริ่มต้นใช้งานบทช่วยสอน Nightwatch.js นี้สำหรับการทดสอบกับ Selenium และ JavaScript
- Node.js: โมดูล Nightwatch.js ถูกสร้างขึ้นบน Node.js ซึ่งบ่งบอกว่าจำเป็นต้องติดตั้ง Node.js บนระบบ
- Node Package Manager (npm): เมื่อติดตั้ง Node.js แล้ว ตัวจัดการแพ็คเกจของโหนด เช่น npm สามารถใช้ประโยชน์เพื่อติดตั้งแพ็คเกจซึ่งเป็นระบบนิเวศที่ใหญ่ที่สุดของแพ็คเกจได้
ตอนนี้ เพื่อติดตั้ง เวอร์ชันล่าสุดโดยใช้เครื่องมือบรรทัดคำสั่ง npm คำสั่งด้านล่างจะถูกดำเนินการ (ในที่นี้ 'g' มีไว้สำหรับการติดตั้งทั่วโลก):
$ npm install -g nightwatch
คำสั่งด้านล่างจะวางไฟล์ปฏิบัติการ Nightwatch.js ('–save-dev') ในโฟลเดอร์ ./node_modules/.bin ของเรา
$ npm install --save-dev nightwatch
- Java — SDK: Selenium ต้องใช้ Java สำหรับเซิร์ฟเวอร์ Selenium ระยะไกล เนื่องจาก Nightwatch.js อาศัย Selenium WebDriver API และยังต้องใช้ Selenium WebDriver Server อีกด้วย ดังนั้นจึงจำเป็นต้องติดตั้ง Java Development Kit (JDK 7+) บนระบบและกำหนดค่าสภาพแวดล้อม JAVA
- เซิร์ฟเวอร์ Selenium:ต้องใช้แพ็คเกจเซิร์ฟเวอร์ Selenium แบบสแตนด์อโลน JAR ซึ่งสามารถดาวน์โหลดได้จากหน้าดาวน์โหลด Selenium เมื่อดาวน์โหลดแล้ว จะต้องวางไว้ในโฟลเดอร์ bin ของโปรเจ็กต์ และสามารถเริ่มเซิร์ฟเวอร์ซีลีเนียมได้โดยใช้คำสั่ง:
selenium-server-standalone-{version}.jar
ไดรเวอร์ Chrome: สุดท้ายนี้ ต้องใช้ไดรเวอร์ Chrome ซึ่งเป็นเซิร์ฟเวอร์แบบสแตนด์อโลนที่ใช้โปรโตคอล Wire W3C Web Driver สำหรับ Chromium ไฟล์ปฏิบัติการนี้จะต้องอยู่ในโฟลเดอร์ bin เดียวกันด้วย
$ npm install --save-dev chromedriver</pre>
Nightwatch.js บทช่วยสอน 101: การกำหนดค่าและการตั้งค่า Nightwatch.js
หลังจากที่เราได้กล่าวถึงรายละเอียดพื้นฐานแล้ว ก็ถึงเวลาเจาะลึกการทดสอบ Nightwatch.js ด้วย Selenium และ JavaScript ผ่านบทช่วยสอน Nightwatch.js สำหรับผู้เริ่มต้น Nightwatch.js นำเสนอตัวดำเนินการทดสอบในตัวซึ่งคาดว่าจะส่งไฟล์การกำหนดค่า JSON ไฟล์การกำหนดค่าเริ่มต้นคือ nightwatch.json ซึ่งควรจะอยู่ในไดเรกทอรีรากของโครงการ นอกจากนี้ ยังสามารถใช้ไฟล์การกำหนดค่า nightwatch.conf.js ได้ด้วย และจะถูกโหลดจากไดเรกทอรีรากของโปรเจ็กต์สำหรับการทดสอบ Nightwatch.js
หมายเหตุ: หากมีไฟล์การกำหนดค่าทั้งสองไฟล์อยู่ในไดเร็กทอรี nightwatch.conf.js จะมีความสำคัญมากกว่า เนื่องจากช่วยให้เรามีความยืดหยุ่นมากขึ้นเล็กน้อยและสามารถแสดงความคิดเห็นในไฟล์ได้
คุณยังสามารถประกาศรายละเอียดการทดสอบเฉพาะภายใต้ไฟล์การกำหนดค่านี้สำหรับการทดสอบ Nightwatch.js เช่น สภาพแวดล้อมการทดสอบ การตั้งค่าเฉพาะของ Selenium ฯลฯ นี่คือลักษณะของไฟล์การกำหนดค่า nightwatch.json สำหรับการทดสอบกับ Selenium และ จาวาสคริปต์
{ "src_folders" : ["tests"], "output_folder" : "reports", "custom_commands_path" : "", "custom_assertions_path" : "", "page_objects_path" : "", "globals_path" : "", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : true, "server_path" : "node_modules/selenium-standalone/.selenium/selenium-server/", "log_path" : "./reports", "host": "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.gecko.driver" : "", "webdriver.edge.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : false, "path" : "" }, "desiredCapabilities": { "browserName": "firefox", "marionette": true, "javascriptEnabled": true, "acceptSslCerts": true } }, "chrome" : { "desiredCapabilities": { "browserName": "chrome" } }, "edge" : { "desiredCapabilities": { "browserName": "MicrosoftEdge" } } } }
ให้เราดูโครงสร้างของไฟล์คอนฟิกูเรชัน nightwatch.json อย่างใกล้ชิด
- src_folders: นี่คือไดเร็กทอรีที่ระบุตำแหน่งที่มีชุดทดสอบ
- output_folder: นี่คือไดเร็กทอรีระบุตำแหน่งที่มีและบันทึกรายงานการทดสอบ เช่น ไฟล์รายงาน JUnit, รายงาน XML, บันทึกการทดสอบ, บันทึกซีลีเนียม, ภาพหน้าจอ, บันทึกวิดีโอ, บันทึกเครือข่าย ฯลฯ
- globals_path: สิ่งนี้ระบุเส้นทางของไฟล์ที่พารามิเตอร์ส่วนกลางทั้งหมดที่ใช้ในชุดทดสอบได้รับการเตรียมใช้งาน สิ่งเหล่านี้จะถูกโหลดและนำเสนอต่อการทดสอบในฐานะคุณสมบัติส่วนกลาง และยังสามารถแก้ไขได้ภายในสภาพแวดล้อม test_settings
- test_workers: คุณสมบัตินี้กำหนดว่าเราต้องการเรียกใช้ชุดการทดสอบแบบขนานหรือไม่ หากเปิดใช้งานถูกตั้งค่าเป็นจริง แสดงว่าอนุญาตให้ใช้การทำงานแบบขนานสำหรับกลยุทธ์การทดสอบ
- page_objects_path: สิ่งนี้ระบุตำแหน่งที่ควรโหลดไฟล์อ็อบเจ็กต์ของเพจ
- ซีลีเนียม: ประกอบด้วยข้อมูลและการปรับแต่งทั้งหมดที่เกี่ยวข้องกับการกำหนดค่าเซิร์ฟเวอร์ซีลีเนียม นอกจากนี้ยังมี server_path และ webdriver.chrome.driver ซึ่งระบุเส้นทางไปยังเซิร์ฟเวอร์ซีลีเนียมและไดรเวอร์ Chrome ตามลำดับ นอกจากนี้ หากพารามิเตอร์ start_process ถูกตั้งค่าเป็น true จะชี้ให้เซิร์ฟเวอร์ Selenium เริ่มต้นโดยอัตโนมัติ
- test_settings: ประกอบด้วยข้อมูลสำคัญทั้งหมดที่เกี่ยวข้องกับการทดสอบและตัวเลือกในการกำหนดค่า ช่วยให้เราสามารถกำหนดและปรับแต่งสภาพแวดล้อมการทดสอบได้
ลองใช้ Selenium Grid ออนไลน์นี้เพื่อเรียกใช้สคริปต์การทดสอบอัตโนมัติของเบราว์เซอร์ โครงสร้างพื้นฐานคลาวด์ของเรามีสภาพแวดล้อมเดสก์ท็อปและมือถือมากกว่า 3,000 รายการ ทดลองใช้ฟรี: https://www.lambdatest.com/selenium-automation
บทช่วยสอน Nightwatch.js 101: การดำเนินการสคริปต์แรกในการตั้งค่า Selenium WebDriver ในเครื่อง
เราจะเริ่มการทดสอบอัตโนมัติในบทช่วยสอน Nightwatch.js สำหรับผู้เริ่มต้น พร้อมตัวอย่างที่สคริปต์ทดสอบที่เราจะดำเนินการจะค้นหา Nightwatch.js บน Google จากนั้นตรวจสอบเอกสาร Nightwatch.js บนเว็บไซต์
module.exports = { 'NW test on Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google') .assert.visible('input[type=text]') .setValue('input[type=text]', 'Nightwatch JS') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('ol#rso li:first-child', 'Nightwatch.js | Node.js powered End-to-End testing framework') .end() } }
เรามีอิสระที่จะแก้ไขไฟล์การกำหนดค่า nightwatch.json และไฟล์โมดูลส่วนกลาง เช่น nightwatch.globals.js ตามความต้องการของเรา แต่ควรมีลักษณะคล้ายกับไฟล์ด้านล่าง .
{ "src_folders" : ["./tests"], "output_folder" : "./reports", "globals_path" : "nightwatch.globals.js", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : true, "server_path" : "./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.141.59.jar", "log_path" : "nw/logs", "host" : "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "./node_modules/chromedriver/bin/chromedriver", "webdriver.ie.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://google.com", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : true, "path" : "" }, "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } }, "french" : { "launch_url" : "http://google.fr", "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }
สิ่งสำคัญคือต้องเพิ่มส่วนด้านล่างในไฟล์ package.json เพื่อดำเนินการโฟลเดอร์การทดสอบสำหรับการทดสอบบทช่วยสอน Nightwatch.js
scripts": { "test": "./node_modules/.bin/nightwatch -e firefox,edge,safari test" },
สิ่งสุดท้ายที่เราต้องทำคือทำการทดสอบ Nightwatch.js จากไดเร็กทอรีฐานของโปรเจ็กต์โดยใช้คำสั่ง:
npm test
คำสั่งนี้พร้อมตรวจสอบการทดสอบและการขึ้นต่อกัน จากนั้นรันชุดทดสอบ ซึ่งจะเปิด Chrome จากนั้นจึงเปิดสตริงการค้นหาที่กำหนดให้กับ Google ด้านล่างนี้คือภาพหน้าจอของการดำเนินการทดสอบ Nightwatch.js ที่แสดงผลการค้นหาบน Google
บทช่วยสอน Nightwatch.js 101: การทดสอบแบบขนานกับ Nightwatch.js โดยใช้ Local Selenium WebDriver
เราได้ทำการกำหนดค่าเพื่อดำเนินการทดสอบ Nightwatch.js แบบขนานโดยเปิดใช้งาน test_workers ให้เป็นจริง ดังนั้นเราจึงจำเป็นต้องเพิ่มการทดสอบใหม่หนึ่งครั้งในโฟลเดอร์การทดสอบ และเฟรมเวิร์ก Nightwatch.js จะดำเนินการทดสอบทั้งสองแบบพร้อมกัน
การทดสอบครั้งที่สองจะค้นหา Node.js บน Google และตรวจสอบเอกสาร Node.js
module.exports = { 'NJS test on Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google') .assert.visible('input[type=text]') .setValue('input[type=text]', 'node.js') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('ol#rso li:first-child', 'Node.js') .end() } }
ตอนนี้เราจะสังเกตว่าการทดสอบสองรายการที่แตกต่างกันจะดำเนินการพร้อมกันในเบราว์เซอร์ Chrome สองรายการ ด้านล่างนี้คือภาพหน้าจอของการดำเนินการทดสอบที่แสดงผลการค้นหาบน Google
บทช่วยสอน Nightwatch.js 101: ความท้าทายเกี่ยวกับการตั้งค่าโครงสร้างโครงสร้างพื้นฐานสำหรับการทดสอบอัตโนมัติ
Selenium เป็นผู้นำตลาดในการทดสอบระบบอัตโนมัติของเว็บโดยให้การสนับสนุนที่ยอดเยี่ยมสำหรับกรอบการทดสอบและการทดสอบเบราว์เซอร์อัตโนมัติ ในทางตรงกันข้าม มีจุดบกพร่องบางประการที่ผู้ทดสอบระบบอัตโนมัติอาจพบขณะใช้ประโยชน์จาก "การทดสอบ Selenium JavaScript" โดยใช้โครงสร้างพื้นฐาน Selenium ภายในองค์กร
ทดสอบความครอบคลุมระหว่างการทดสอบข้ามเบราว์เซอร์
เมื่อเรา "ทำการทดสอบข้ามเบราว์เซอร์" ในการตั้งค่าแอปพลิเคชันเว็บที่โฮสต์ภายในองค์กร เรามีแนวโน้มที่จะขจัดปัญหาใดๆ เกี่ยวกับอินเทอร์เฟซผู้ใช้ และสามารถทำการเปลี่ยนแปลงบางอย่างได้หากจำเป็น จากนั้นจึงย้ายรหัสในการตั้งค่าจริงสำหรับการรับส่งข้อมูลเว็บ . ทั้งหมดนี้เป็นเรื่องปกติ แต่ข้อกังวลประการหนึ่งที่เกิดขึ้นก็คือความครอบคลุมของการทดสอบ สาเหตุหลักมาจากการทดสอบสามารถทำได้บนเบราว์เซอร์ที่ติดตั้งภายในระบบเท่านั้น ไม่จำเป็นต้องทำการทดสอบบนเบราว์เซอร์ที่สำคัญทั้งหมดเพื่อให้ "การทดสอบข้ามเบราว์เซอร์" ประสบความสำเร็จ บางครั้ง การทดสอบเบราว์เซอร์เก่าหรือเบราว์เซอร์เวอร์ชันเก่าบางเวอร์ชันก็จำเป็นสำหรับผู้ใช้และระบบปฏิบัติการบางกลุ่มด้วย ดังนั้น คุณจึงต้องทดสอบเบราว์เซอร์และระบบปฏิบัติการที่ผสมผสานกัน ซึ่งไม่สามารถทำได้ด้วยโครงสร้างพื้นฐาน Selenium ภายในเครื่อง
ต้นทุนที่เกิดขึ้นระหว่างการตั้งค่าโครงสร้างพื้นฐานท้องถิ่น
มีค่าใช้จ่ายด้านโครงสร้างพื้นฐานเสมอเมื่อทำการทดสอบอัตโนมัติบางอย่างและเมื่อมีการตั้งค่าซีลีเนียมภายในเครื่อง
- ไม่จำเป็นต้องกำหนดค่าสภาพแวดล้อมการทดสอบแยกต่างหากเพื่อดำเนินการกรณีทดสอบทั้งหมด
- ต้องใช้อุปกรณ์ประเภทต่างๆ เช่น เดสก์ท็อป อุปกรณ์เคลื่อนที่ แท็บเล็ต ฯลฯ และควรเป็นส่วนหนึ่งของกลยุทธ์การทดสอบ
- การตั้งค่าห้องปฏิบัติการอุปกรณ์ที่มีอุปกรณ์ที่จำเป็นทั้งหมดสามารถลงทุนได้ แต่นี่ไม่ใช่ทางเลือกที่ดีสำหรับสตาร์ทอัพหรือองค์กรขนาดเล็ก เนื่องจากอาจละเว้นจากการลงทุนจำนวนมากในตอนแรก
- เนื่องจากการทดสอบอัตโนมัติอาจมีจำนวนเพิ่มขึ้นในระหว่างขั้นตอนการทดสอบ ดังนั้นจึงต้องการให้ระบบสามารถปรับขนาดได้เพียงพอที่จะรองรับสถานการณ์นี้
อีกทางหนึ่ง สามารถใช้เครื่องเสมือนหรือเครื่องจำลองเพื่อทำการทดสอบอัตโนมัติในการตั้งค่าภายในเครื่องสำหรับแอปพลิเคชันเว็บที่โฮสต์ได้ แต่สิ่งเหล่านี้จำเป็นต้องมีการบำรุงรักษาที่เหมาะสมอีกครั้ง ส่งผลกระทบต่อประสิทธิภาพของระบบ และใช้เวลานาน
เหตุใด Selenium Grid บนระบบคลาวด์จึงเป็นทางเลือกที่ดี
เมื่อพูดถึงการทดสอบเบราว์เซอร์อัตโนมัติ Selenium Grid บนคลาวด์ถือเป็นตัวเลือกที่ดี โครงสร้างพื้นฐานบนคลาวด์จะช่วยให้คุณเข้าถึงเบราว์เซอร์ + ระบบปฏิบัติการหลายร้อยชุดที่โฮสต์บนเซิร์ฟเวอร์คลาวด์ของผู้ให้บริการ ด้วยวิธีนี้ คุณจะไม่ต้องกังวลกับการบำรุงรักษา Selenium Grid ของคุณในขณะที่ทำการทดสอบโดยมีเวลาหยุดทำงานเป็นศูนย์ ข้อดีอีกประการหนึ่งของการใช้การทดสอบคลาวด์ก็คือ มีสภาพแวดล้อมที่ปรับเปลี่ยนได้ซึ่งตั้งค่าไว้ด้วยเฟรมเวิร์กแล้ว เพื่อให้ผู้ใช้สามารถดำเนินการทดสอบโดยใช้เฟรมเวิร์กใดก็ได้ที่ตนเลือกตามความต้องการ
นอกจากนี้ คลาวด์การทดสอบยังปรับขนาดได้สูงและให้สิทธิพิเศษแก่เราในการใช้โครงสร้างพื้นฐานตามความจำเป็นเพื่อทำการทดสอบแบบขนานหรือพร้อมกันจำนวนเท่าใดก็ได้ ดังนั้น เมื่อใช้กลยุทธ์การทดสอบบนคลาวด์ คุณเพียงแค่ต้องแก้ไขสคริปต์ทดสอบของคุณ แต่การตั้งค่าโครงสร้างพื้นฐานที่ใช้ในการดำเนินการทดสอบยังคงเหมือนเดิม
คุณควรเลือกซีลีเนียมกริดบนคลาวด์แบบใด
LambdaTest ได้รับความไว้วางใจจากบริษัท 100,000 แห่งทั่วโลกในฐานะผู้ให้บริการ Selenium Grid ออนไลน์ ที่เชื่อถือได้ เพื่อตอบสนองความต้องการในการทดสอบข้ามเบราว์เซอร์ เมื่อใช้ LambdaTest คุณสามารถทำการทดสอบเบราว์เซอร์อัตโนมัติทั้งสองรายการด้วย Selenium Grid บนระบบคลาวด์ที่มีเบราว์เซอร์จริงมากกว่า 3,000 รายการสำหรับทั้งสอง อุปกรณ์เคลื่อนที่และเดสก์ท็อปเพื่อช่วยให้คุณได้รับการทดสอบที่ครอบคลุมสูงสุดในระหว่างการทดสอบเบราว์เซอร์อัตโนมัติ
Selenium Grid ของเราช่วยให้คุณสามารถรันสคริปต์ทดสอบอัตโนมัติใน Selenium บนแพลตฟอร์มการเขียนโปรแกรมต่างๆ เช่น Java, JavaScript, PHP, Python, Ruby, C# และภาษาอื่นๆ ที่ให้การเชื่อมโยงกับ Selenium
คุณยังสามารถเลือกที่จะผสานรวมกับเครื่องมือ CI/CD ที่หลากหลาย เช่น Jenkins, Travis CI และอื่นๆ อีกมากมายสำหรับ "การทดสอบอย่างต่อเนื่องใน DevOps"
คุณยังสามารถใช้ประโยชน์จากการทดสอบอัตโนมัติ "การทดสอบแบบขนานกับ Selenium" ร่วมกับ Selenium API แบบเปิดของเราเพื่อช่วยคุณแยกรายงานการทดสอบการดำเนินการสคริปต์ Selenium ของคุณผ่าน LambdaTest ได้อย่างง่ายดาย ให้เราลองดำเนินการกรณีทดสอบข้างต้นโดยใช้ WebDriver ระยะไกลสำหรับ LambdaTest Selenium Grid
บทช่วยสอน Nightwatch.js 101: รันสคริปต์ Nightwatch.js โดยใช้ Remote Selenium Grid
การดำเนินการสคริปต์ทดสอบบน LambdaTest Selenium Grid ด้วย Nightwatch.js ค่อนข้างเรียบง่ายและตรงไปตรงมา และจะเป็นจุดสนใจของส่วนอื่นๆ ในบทช่วยสอน Nightwatch.js สำหรับการทดสอบอัตโนมัติด้วย Selenium และ JavaScript เราสามารถใช้สคริปต์ทดสอบในเครื่องและไฟล์การกำหนดค่าที่มีอยู่โดยการเปลี่ยนโค้ดสองสามบรรทัด ในการเริ่มต้นก่อนอื่นเราจะต้องเรียกใช้ Selenium webdriver ระยะไกลแทนไดรเวอร์เว็บเบราว์เซอร์ในเครื่องก่อนหน้าของเรา นอกจากนี้ เนื่องจากตอนนี้เราใช้ไดรเวอร์เว็บระยะไกลกับ LambdaTest เราจึงมีความยืดหยุ่นในการกำหนดสภาพแวดล้อมของเบราว์เซอร์ที่เราจะต้องการดำเนินการทดสอบของเรา เราสามารถทำได้โดยส่งรายละเอียดเบราว์เซอร์และสภาพแวดล้อมไปยังตาราง LambdaTest Selenium ผ่านคลาสความสามารถที่ต้องการ LambdaTest มอบ Capabilities Generator ให้เราเพื่อเลือกและส่งรายละเอียดเบราว์เซอร์และข้อกำหนดสภาพแวดล้อมพร้อมชุดค่าผสมต่างๆ ให้เลือก
ดังนั้น ในกรณีของเรา คลาสที่ต้องการในไฟล์การกำหนดค่า nightwatch.json สำหรับบทช่วยสอน Nightwatch.js จะมีลักษณะคล้ายกันด้านล่าง:
"desiredCapabilities": { "build" : "Nightwatch-Selenium-Test", "name" : "Nightwatch-Selenium-Test", "platform" : "Windows 10", "browserName" : "Firefox", "version" : "71.0", "selenium_version" : "3.4.0", "geoLocation" : "IN" }
ต่อไป เรายังต้องสร้างโทเค็นคีย์การเข้าถึงซึ่งเป็นเหมือนคีย์ลับเพื่อเชื่อมต่อกับแพลตฟอร์มของเราและดำเนินการบทช่วยสอน Nightwatch.js บน LambdaTest รหัสการเข้าถึงนี้ไม่ซ้ำกันและสามารถคัดลอกหรือสร้างใหม่ได้จากส่วนโปรไฟล์ของบัญชีของเรา
หรืออีกทางหนึ่ง เรายังสามารถรับรหัสการเข้าถึง ชื่อผู้ใช้ และรายละเอียดฮับจาก "แดชบอร์ดระบบอัตโนมัติ" ได้เช่นกัน
ด้านล่างนี้คือไฟล์ nightwatch.conf.js ที่เราต้องประกาศการกำหนดค่าผู้ใช้สำหรับคีย์การเข้าถึง ชื่อผู้ใช้ โฮสต์ และพอร์ตสำหรับการทดสอบ
module.exports = (function(settings) { console.log(settings["test_settings"]["default"]["username"]) if (process.env.LT_USERNAME) { settings["test_settings"]["default"]["username"] = process.env.LT_USERNAME; } if (process.env.LT_ACCESS_KEY) { settings["test_settings"]["default"]["access_key"] = process.env.LT_ACCESS_KEY; } if (process.env.SELENIUM_HOST) { settings.selenium.host = process.env.SELENIUM_HOST; } if (process.env.SELENIUM_PORT) { settings.selenium.host = process.env.SELENIUM_PORT; } return settings; })(require('./nightwatch.json'));
ในตอนนี้ เนื่องจากเราใช้ LambdaTest เราจึงต้องการใช้ประโยชน์จากมันและดำเนินการทดสอบบนเบราว์เซอร์และระบบปฏิบัติการต่างๆ ที่นี่ เราจะใช้เบราว์เซอร์ที่แตกต่างกันสามเบราว์เซอร์ ได้แก่ Microsoft Edge, Mozilla Firefox และ Apple Safari และระบบปฏิบัติการ เช่น Windows 10 และ macOS 10.13
ดังนั้นหลังจากทำการเปลี่ยนแปลงที่จำเป็นแล้ว ไฟล์การกำหนดค่าขั้นสุดท้ายของเราจะมีลักษณะดังนี้
{ "src_folders" : ["./tests"], "output_folder" : "./reports", "globals_path" : "nightwatch.globals.js", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : false, "server_path" : "", "log_path" : "", "host" : "hub.lambdatest.com", "port" : 80, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.ie.driver" : "", "webdriver.firefox.profile" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://google.com", "selenium_port" : 80, "selenium_host" : "https://lambdatest.com", "silent": false, "screenshots" : { "enabled" : true, "path" : "" }, "username" : "irohitgoyal", "access_key" : "123456789", "skip_testcases_on_fail": false, "desiredCapabilities": { "build":"Nightwatch-Selenium--Test", "platform" : "Windows 10", "browserName" : "Chrome", "version" : "78.0", "selenium_version" : "3.13.0", "visual":true, "video":true, "console":true, "geoLocation" : "IN", "chrome.driver" : "78.0", "network":true } }, "chrome": { "desiredCapabilities": { "platform": "Windows 10", "browserName": "chrome", "version": "78.0" } }, "safari" : { "desiredCapabilities": { "platform": "macos 10.13", "browserName": "safari", "version": "11.0" } }, "firefox" : { "desiredCapabilities": { "platform": "win10", "browserName": "firefox", "version": "60" } }, "edge" : { "desiredCapabilities": { "platform": "Windows 10", "browserName": "MicrosoftEdge", "version": "17.0" } }, "french" : { "launch_url" : "http://google.fr", "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }
ตอนนี้ สิ่งสำคัญคือต้องเพิ่มส่วนด้านล่างสำหรับบทช่วยสอน Nightwatch.js ในคลาสสคริปต์เป็นอาร์กิวเมนต์ในไฟล์ package.json เพื่อระบุสภาพแวดล้อมความสามารถที่ต้องการซึ่งเราต้องการให้การทดสอบของเราดำเนินการ
scripts": { "test": "./node_modules/.bin/nightwatch -e firefox,edge,safari test" },
สิ่งสุดท้ายที่เราต้องทำคือดำเนินการทดสอบจากไดเร็กทอรีฐานของโปรเจ็กต์โดยใช้คำสั่ง:npm test
คำสั่งนี้พร้อมตรวจสอบการทดสอบและการขึ้นต่อกัน จากนั้นรันชุดทดสอบสำหรับการทดสอบ Nightwatch.js ซึ่งจะทำการทดสอบของเราและเปิดเบราว์เซอร์ Edge, Firefox และ Safari ในสภาพแวดล้อมที่ระบุ จากนั้นจึงเปิดสตริงการค้นหาของ Google ด้านล่างนี้เรามีภาพหน้าจอที่แสดงโค้ด Nightwatch.js ของเราที่ทำงานบนเบราว์เซอร์ต่างๆ โดยใช้ LambdaTest Selenium Grid
อย่างที่คุณสังเกตเห็น สคริปต์นี้ทำงานคู่ขนานกับเบราว์เซอร์ Mozilla Firefox, Safari, Google Chrome และ Edge ผลลัพธ์จะแสดงบนอินเทอร์เฟซบรรทัดคำสั่งที่เราใช้ในการทดสอบ และจะถูกบันทึกรายละเอียดบนแดชบอร์ดอัตโนมัติ LambdaTest แบบโต้ตอบด้วย แดชบอร์ด LambdaTest จะช่วยให้เรารวบรวมรายละเอียดทั้งหมดของการทดสอบ และเราสามารถดูบันทึกข้อความ ภาพหน้าจอ และการบันทึกวิดีโอทั้งหมดสำหรับการทดสอบ Selenium ทั้งหมดที่เราดำเนินการ
นั่นคือทั้งหมดสำหรับบทช่วยสอน Nightwatch.js นี้
ในบทช่วยสอน Nightwatch.js สำหรับผู้เริ่มต้น เราได้ครอบคลุมแง่มุมต่างๆ ของการทดสอบ Nightwatch.js ด้วย Selenium Javascript ตอนนี้เราชัดเจนเกี่ยวกับวิธีการทดสอบอัตโนมัติแบบครบวงจรด้วย Selenium JavaScript โดยใช้ Nightwatch.js เราทราบถึงข้อกำหนดเบื้องต้นทั้งหมดที่จำเป็นสำหรับการตั้งค่า Nightwatch.js ทำให้ชุดการทดสอบทั้งหมดเป็นอัตโนมัติอย่างรวดเร็วด้วยการกำหนดค่าที่น้อยที่สุด และสามารถอ่านได้และยังอัปเดตได้ง่ายอีกด้วย คุณสมบัติที่ดีที่สุดจากเฟรมเวิร์ก Nightwatch.js คือการทดสอบเคสแบบคู่ขนานที่พิสูจน์แล้วว่าประหยัดเวลาได้ สามารถอ่านผลการทดสอบได้โดยตรงจากเทอร์มินัล และยังจัดเก็บไว้ในโฟลเดอร์เอาต์พุตที่ระบุอีกด้วย
ในระยะเริ่มแรก การนำแนวทางใหม่สำหรับการทดสอบเบราว์เซอร์อัตโนมัติมาใช้กลายเป็นอุปสรรคสำหรับหลายๆ คน แต่การใช้แพลตฟอร์มคลาวด์ เช่น LambdaTest จะทำให้กระบวนการง่ายขึ้น และช่วยให้เราใช้ประโยชน์จากการทดสอบอัตโนมัติของ Selenium ได้อย่างเต็มที่ บทช่วยสอน Nightwatch.js นี้เป็นอย่างไรสำหรับคุณ แจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง ขอให้มีความสุขในการทดสอบ!