Bài đăng

Đang hiển thị bài đăng từ 2019

Tự động hoá kiểm thử với Appium và Serenity BDD

I. Curriculum A. Appium Fundamentals An introduction to automated web testing with  Appium Implementing your first scenario Appium Essentials Appium Locators:  Xpath ... Mobile Element Forms Writing Good Mobile Tests Page Objects / Screenplay Pattern Others ( Based on the question of students) B. Mobile Testing with Serenity BDD Introduction to Mobile Testing with Serenity Setting up your environment Building Serenity projects in  Maven Implementing your first scenario Introduction to  Gherkin  Essentials Using Serenity Steps Using Serenity Page Objects Handling wait conditions in Serenity Executing Javascript Others ( Based on the question of students) C. Learn about Behaviour Driven Development (BDD) Introduction to  BDD How does BDD work? BDD and the Three Amigos Writing robust step definition method Writing high quality scenarios Advanced Gherkin - data tables, scenario outlines, and more Others ( Based on the question of students) C. Demonstr

Bài 7 Các cách để tìm kiếm đối tượng (element) trên trang web

Hình ảnh
Như trong bài 6. Trước khi ta tương tác với một đối tượng nào đó thì phải tìm được đối tượng đó.  Vậy có bao nhiêu cách để tìm kiếm một đối tượng Xem video này để có cái nhìn trực quan hơn.

Bài 6 Kịch bản đầu tiên

Hình ảnh
OK. Giờ là lúc bắt đầu công cuộc viết code và tìm hiểu. Chúng ta sẽ sử dụng trang tìm kiếm   https://duckduckgo.com/   để viết một kịch bản đơn giản. Nội dung kịch bản đơn giản là tìm kiếm một từ khóa nào đó và kiểm tra xem title của trang web đó có hiển thị đúng như mong đợi không ? Sau đây là phần kịch bản package com.todomvc.features.webdriver; import net.serenitybdd.core.annotations.findby.By; import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; public class WhenLookingForAPetStore { @Test public void should_find_pet_stores() { WebDriver driver = new FirefoxDriver(); (1) driver.get("https://duckduckgo.com/"); (2) WebElement input = driver.findElement(By.id("search_form_input_homepage")); (3) input.sendKeys(&q

Bài 5 Chỉnh sửa dự án mẫu thành dự án trống (empty project)

Hình ảnh
Sau khi kết thúc bài 4. Mình nghĩ các bạn đã có được mẫu dự án cần thiết để bắt đầu. Nhưng bắt đầu như thế nào đây Nếu như các bạn không có setup thành công thì cũng ko cần phải lo lắng. Chỉ việc clone hoặc download tại đây selenium-angularjs Bạn có thể xóa những gì trong đó.  - Bạn xóa hết các file java đi. Điều cốt lõi của việc dùng serenity-junit-archetype là để lấy cấu hình dự án mà nó setup. Còn phần code mẫu, chúng ta bỏ đi. Đúng với chuẩn của maven thì cấu trúc dự án sẽ có 3 modules chính ( tuyệt đối không xóa) src/main/java :                Nơi để viết core cho ứng dụng src/test/java :                Nơi viết kịch bản test cho phần core của ứng dụng (Unit Test) hoặc các loại hình test khác như UI test src/test/resource :               Nơi để chứa các file dữ liệu, config..... Tiếp theo là mục package. Ta sẽ nhìn thấy cấu trúc thư mục theo giá trị groupId như đề cập ở bài 4. Tốt nhất là ko nên xóa cái root package này bởi vì đây là phần mà Junit sẽ tìm các

Bài 4 Tạo và quản lý dự án Automation Test với serenity-maven

Trong bài hướng dẫn này mình sẽ hướng dẫn lại nhưng là sẽ tập trung luôn vào việc dùng archetype của serenity Về cơ bản các bước là như nhau. Chúng ta chỉ cần thay đổi lại giá trị filter Sau khi bật console / cmd lên di chuyển vào thư mục eclipse-workspace ( thư mục default được tạo bởi eclipse editor) bạn hãy gõ lệnh trên. mvn archetype:generate -Dfilter=serenity Trên màn hình lúc này sẽ liệt kê toàn bộ các archetype ( mẫu dự án). Sẽ có khoảng 6 dự án mẫu. Chọn số 5 rồi ấn Enter. Ứng với mẫu dự án sử dụng selenium2 và Junit với mô hình Page Object mode. Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): Tiếp đó màn hình sẽ liệt kê toàn bộ version của archetype này, theo mặc định nó sẽ tự động lựa chọn version mới nhất. Nếu ko có gì bạn cứ để thế rồi ấn enter tiếp Tiếp đó maven sẽ yêu cầu bạn cung cấp các thông tin theo tiêu chuẩn của một dự án mà maven quản lý như groupID ,  artifactId và version   Mình sẽ giải thíc

Bài 3: Những điều hiểu biết về công cụ quản lý dự án có tên Maven

Tình huống: Khi bắt đầu một dự án trong giai đoạn hiện này thật hiếm khi ta thấy đội phát triển (dev team) nào lại code từ đầu mọi thứ, nghĩa là mọi thứ bắt đầu từ con số 0. Bắt đầu từ những dòng code đầu tiên. Không ai tốn thời gian để ngồi thiết kế lại cái bánh xe bò trong khi nó đã có. Nếu dự án của bạn có một số chức năng như A, B, C, D.... nhưng thật may mắn ở đâu đó đã có những đoạn mã xử lý một số công đoạn nào đó trong chức năng A của bạn thì thật ko dại gì ngồi mà viết lại nó. Việc của bạn chỉ đơn giản là tải gói tài nguyên ( resource) đó về và dùng. Không có gì để nói nếu như số resource trong dự án bạn dùng ko nhiều. Khi nhận source code ( mã nguồn) từ thành viên khác bạn phải ngồi setup đúng với các resource mà người trước đã dùng. Tốn thời gian để tìm và tải các gói jar ( một dạng thư viện được đóng gói có chứa chức năng nhất định mà bạn cần) sau đó setting up chúng vào class path để biên dịch và chạy chương trình. Bạn nghĩ thế nào nếu số lượng các file jar đó

Bài 2: Cài đặt môi trường và công tác chuẩn bị

Yêu cầu về cài đặt môi trường trên máy tính 1. Java 2. Maven 3. Git 4. Tạo tài khoản trên github.com ( Để review code sau mỗi lần hoàn thành bài tập) 5. Trình soạn thảo để viết code. Tùy vào hệ điều hành máy tính mà bạn đang dùng, chúng ta có thể tiến hành cài đặt bằng tay hoặc sự dụng các trình quản lý package  Đối với Mac OS là  Homebrew . Sau đó sử dụng lệnh để cài tự động như với ví dụ cài maven dưới đây: Hướng dẫn cài maven với brew ( Tham khảo thêm : installing brew ) brew install maven Tương tự như vậy với các package cần cài khác. Search google với từ khóa How to install XXX with brew Đối với Windows là Chocolate . Sau đó sử dụng để cài tự động như với ví dụ cài maven dưới đây. Xem video để biết thêm chi tiết choco install maven Mọi vấn đề cần support xin liên hệ skype: vu.the.linh

Bài 1: Tự Động Hóa Trong kiểm thử Phần mềm là gì ?

Hình ảnh
Trong câu hỏi trên có 3 vấn đề mà chúng ta cần làm rõ. 1. Tự Động Hóa 2. Phầm Mềm 3. Kiểm Thử Chúng ta sẽ đi làm rõ từng khái niệm một trước khi học về nó 1. Tự Động Hóa Tự Động Hóa là việc sử dụng máy móc để thay thế cho sức lao động con người. Nó phát triển mạnh mẽ ở kỷ nguyên thứ 3 của ngành công nghiệp, đặc biệt là sau khi máy tính xuất hiện. Vậy làm sao để  máy móc/máy tính có thể làm việc thay cho con người ? Đó là con người phải có khả năng "giao tiếp" được với máy tính( computer ). Vậy làm sao để "nói chuyện" hay "giao tiếp" được với nó? Phải hiểu được ngôn ngữ của nó. Cũng giống như bạn muốn nói chuyện với người ngoại quốc bạn phải hiểu và nói được ngôn ngữ của họ. Máy tính cũng vậy, Nó có ngôn ngữ của nó. Việc bây giờ là bạn phải học ngôn ngữ của máy tính Vậy máy tính sử dụng ngôn ngữ nào ? Ngôn ngữ máy là ngôn ngữ assembly . Thường khi nói tới học ngôn ngữ là bạn nghĩ phải học "bảng chữ cái", cú pháp.... vậ

Tự động hoá kiểm thử với WebDriver/RestAssured(Rest API) và Serenity BDD

Nguyên tắc cơ bản của WebDriver  Giới thiệu về kiểm tra web tự động với WebDriver Các yếu tố cần thiết cho WebDriver - WebDriver Essentials Các cách định vị một đối tượng trên web - WebDriver Locators Các thành phần cấu tạo nên một trang web - Web Element Forms  Làm thế nào để  viết một kịch bản tốt - Writing Good Web Tests Part  Giới thiệu mô hình đối tượng trang - WebDriver Page Objects Kiểm thử web với  Serenity BDD - Web Testing with Serenity BDD Giới thiệu về Kiểm tra web với Serenity BDD  Thiết lập dự án của bạn. Thử nghiệm Serenity BDD đầu tiên của bạn Cách thiết lập Driver Cấu trúc thử nghiệm của bạn theo từng bước Finders and locators Xử lý các điều kiện chờ. Cross-browser testing. Làm sao để tiết kiệm thời gian chạy kịch bản và cách chạy test song song. Cách chạy kịch bản theo context. Cách tạo report tổng hợp từ nhiều context khác nhau. Cách thức sử dụng data provider. Tags là gì  và cách thức sử dụng tags. Retry là gì và làm sao để chạy l