Screenplay và Page Object Model là 2 patterns giành cho Automation Test. Dạo vừa mới đây, screenplay nổi lên như rượu cồn, đề nghị bản thân đú trover, viết 1 bài nhằm bao gồm hầu như Điểm lưu ý của mô hình này.

Bạn đang xem: Screenplay là gì

Bạn đang xem: Screenplay là gì

Nội dung bài xích viết

II. Mô hình của Screenplay, so sánh với Page Object.III Để cần sử dụng screenplay hiệu quả

I. Screenplay Pattern là gì?

Screenplay, giờ đồng hồ anh Có nghĩa là kịch bản, nên không ít người dân tốt nói phét “sử dụng screenplay bao gồm nghĩa mình là đơn vị biên soạn kịch“.

Nó là 1 design pattern giao hàng đến automation test, rất có thể vận dụng mang đến 2 màn chơi API cùng UI. Nguồn nơi bắt đầu của chính nó tự chưng John Ferguson Smart, một bạn chuyên đi dạy về agile, tập trung vào BDD.

Bác ý có 1 framework tên là serenity bdd, nó tư vấn 3 cách làm việc khác nhau:

Page ObjectCucumberScreenplay

Vậy đề nghị bạn chớ nhầm lẫn screenplay là serenity cùng ngược trở lại. Screenplay là 1 trong những design pattern bộc lộ 1 cách viết kiểm tra. Còn serenity bdd là 1 trong những framework mang lại Automation Test.

Giờ đây screenplay sẽ xuất hiện trên 3 framework khác nhau

II. Mô hình của Screenplay, đối chiếu cùng với Page Object.


*

Hình bản thân trường đoản cú vẽ lại đến gồm màu xanh lá cây :v

Quý khách hàng như thế nào gọi được giờ anh thì hoàn toàn có thể hiểu chỉ dẫn cùng reviews về screenplay ở chỗ này.

Mô hình Page Object:


*

1. Tất cả xoay xung quanh Actor

Trong quy mô này, trung trung ương của chính nó là Actor. Vì sao nó lại gồm actor??? Actor là đại diện thay mặt cho 1 người dùng thật, nó bắt đầu từ story trong agile. Và này cũng là vấn đề biệt lập chủ quản giữa Screenplay với Page Object. Actor sẽ là tín đồ đứng ra làm các vấn đề, điều này dễ nắm bắt rộng là câu hỏi call method từ bỏ pageA rồi pageB.

Xem thêm: Idc Là Gì ? Ý Nghĩa Của Từ Idc Idc Là Viết Tắt Của Từ Gì

Ví dụ:


*

copy image from https://www.justinmind.com/blog/user-story-examples/

Code mẫu copy từ trang gốc:

Steps private PlaceholderText thePlaceholderText; private DisplayedItems theDisplayedItems = new DisplayedItems(); Test public void should_be_able_to_add_a_todo_item() givenThat(james).wasAbleTo(OpenTheApplication.onTheHomePage()); when(james).attemptsTo(AddATodoItem.called("Buy some milk")); then(james).should(seeThat(theDisplayedItems, hasItem("Buy some milk"))); }Actor has an ability (có thể thực hiện browser, hoàn toàn có thể thực hiện api)james.can(BrowseTheWeb.with(hisBrowser));//thực tế là khởi tạo webdriverActor vị tasks (task này nhìn dưới góc nhìn business)(james).wasAbleTo(OpenTheApplication.onTheHomePage())(james).attemptsTo(AddATodoItem.called("Buy some milk"))//thực tế là Gọi những method nhằm thực hiện action lên web applicationActor ask question(james).should(seeThat(theDisplayedItems, hasItem("Buy some milk")));//Thực hóa học là compare actual với expectedVề bản chất 2 thằng phần nhiều tương đương nhau thôi, nhưng lại cơ mà Screenplay tạo thành mang lại nó 1 layer abstraction để nhìn test bên dưới khía cạnh business, cố gắng vị đính thêm chặt vào UI, các bạn nào nếu dùng cucumber cũng nhận ra điểm giống như.

2. Khác biệt đến từ Task

Task dưới góc nhìn business để giúp cho họ giữ nguyên được test giả dụ như UI biến đổi, thực ra thì bản thân thấy nó cũng ko hơn gì method của Page Object. Điểm nó tốt hơn, sẽ là Task này là 1 interface extends tự interface Performable, nó định nghĩa biện pháp làm việc bình thường mang đến toàn bộ các task mập nhỏ bé.

Task này rất có thể cất 1 hoặc nhiều task khác.
*

Khi quan sát vào task, bạn chỉ nhận thấy business và chỉ còn lúc nào đi đến dòng task cấp độ sau cuối, các bạn sẽ thấy được interaction, đó là code selenium thúc đẩy với browser (tất nhiên là nó cũng rất được bọc bên ngoài bởi code khác).
*

3. Viết kiểm tra khôn xiết giống như câu văn

Viết code như thể viết văn uống, với những người không giống cho nên ưu thế, với mình thì nó là điểm yếu kém vcđ, nó luôn khiến cho bản thân yêu cầu suy nghĩ cho ngữ pháp giờ đồng hồ anh mỗi một khi viết code với buộc phải hi sinh java coding convention =)))) Còn chúng ta thì sao, hãy phản hồi bên dưới nhé.Testpublic void should_be_able_to_add_a_todo_item() givenThat(james).wasAbleTo(OpenTheApplication.onTheHomePage()); when(james).attemptsTo(AddATodoItem.called("Buy some milk")); then(james).should(seeThat(theDisplayedItems, hasItem("Buy some milk")));

III Để sử dụng screenplay hiệu quả

1. Về mind-set

Team bạn đề nghị làm theo phương pháp BDD, còn nếu không thì tín đồ tím lịm đó là bạn viết demo. :v

2. Về kỹ thuật

Java core (cực có thể chắn)Quý khách hàng nên đọc và biết phương pháp sử dụng Interface: marker interface với functional interface (lambda expression) và cả interface thông thường.Dường như là Generics, Annotationquý khách phải có tác dụng quen thuộc cùng với dạng hình đẻ class new như lợn con, bởi screenplay tách nhỏ từng vật dụng, yêu cầu viết rất nhiều class. Nếu dễ dàng viết một quãng code 3 mẫu selenium mtại 1 trang web như thế nào kia thì bên này bạn bắt buộc gồm đến khoảng chừng 3 class. Không nói bạn cũng có thể hình dong số lượng chiếc code cấp khoảng chừng vài lần.

IV. Tổng kết

Nếu các bạn thấy tuyệt hoặc thiếu hiểu biết gì, chớ hổ thẹn nsát đến nội dung bài viết 1 like. :))) Vì nhằm viết được bài bác này, người sáng tác phải làm cho song loại dự án công trình dùng screenplay và phát âm code framework hôm sớm. Nếu bạn muốn tác giả so với code của framework serenity, hãy vướng lại 1 bình luận, người sáng tác đã viết dần (giả dụ rảnh).This entry was posted in Screenplay pattern & tagged Page Object Model, screenplay, serenity bdd by Giang Nguyen. Bookmark the permalink.