การเป็นเฟรมเวิร์กโอเพ่นซอร์สทำให้ "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 นี้เป็นอย่างไรสำหรับคุณ แจ้งให้เราทราบในส่วนความคิดเห็นด้านล่าง ขอให้มีความสุขในการทดสอบ!