Từ Kỷ băng hà đến Avengers sử dụng Appium

Bài học từ cách tiếp cận Robot diều

Hãy để tôi bắt đầu ở đây với một cái móc nhàm chán: kinh nghiệm cá nhân của tôi trong việc thử nghiệm một ứng dụng theo cách thủ công. Khi phát triển sản phẩm bao gồm phân phối theo bit và miếng, nó trở nên đơn điệu cho một thành viên nhóm QA thực hiện các hành động tương tự lặp đi lặp lại. Mỗi lần tôi phải kiểm tra một cái gì đó, tôi cần một người dùng mới và vì vậy tôi phải đăng ký một người dùng mới theo cách thủ công. Nó khác nhàm chán hơn âm thanh.

Đây là nơi tự động hóa đi vào hình ảnh. Điều gì sẽ xảy ra nếu chúng ta dành thời gian để viết một mã sẽ làm tất cả công việc nhàm chán này cho chúng ta? Điều gì nếu nó cũng làm công việc này chính xác?

Nhóm QA tại Kite đã tiến hành khá nhiều hoạt động R & D để tìm ra các công cụ phù hợp. Chúng tôi quyết định Appium, vì nó:

  1. Là nguồn mở
  2. Doesn đòi hỏi mã nguồn
  3. Doesn không cần bất kỳ thiết bị
  4. Có hàng tấn vật liệu hỗ trợ dễ dàng có sẵn

Appium có thể, bất kể, cảm thấy như khoa học tên lửa đối với hầu hết chúng ta. Tuy nhiên, nếu bạn làm theo một cách tiếp cận phù hợp, nó có thể tận dụng tối đa khả năng của nó.

Trong bài đăng này, tôi sẽ nhấn mạnh những nhược điểm của cách tiếp cận cổ điển đối với Appium và cách tiếp cận Robot của chúng tôi tại Kite làm cho Appium trở thành một trải nghiệm tương đối rắc rối. Chúng tôi đã sử dụng phương pháp Robot trên ứng dụng đầu tiên của Kite, Kite Cash. Nó đã được đưa ra cho mục đích thử nghiệm và được tổ chức một cách hữu cơ vào một mạng lưới gồm hơn 100.000 người dùng ở hơn 1.100 thành phố.

Phương pháp cổ điển

Nói chung, một cách tiếp cận cổ điển làm cho mã được liên kết chặt chẽ, không thể duy trì được, làm tăng sự dư thừa, làm cho việc tái cấu trúc trở nên khó khăn và không thể mở rộng được.

Với những hạn chế trong tâm trí, hãy để chương trình tiếp cận Appium như một câu chuyện.

Kịch bản cổ điển

Xem xét màn hình đăng nhập với tên người dùng, màn hình mật khẩu và nút đăng nhập. Nếu tôi nhập thông tin xác thực chính xác và nhấp vào ‘Đăng nhập, thì tôi sẽ có thể đăng nhập và xem màn hình tiếp theo.

Trong khi nghĩ về một bài kiểm tra, chúng tôi hỏi những câu hỏi sau: Chúng tôi muốn đạt được điều gì? và chúng ta sẽ đạt được nó như thế nào? Cách tiếp cận trước đây của chúng tôi kết hợp chặt chẽ cặp này là gì và như thế nào. Tuy nhiên, nếu cặp này được giữ cùng nhau, điều đó gây khó khăn cho QA trong việc duy trì và mở rộng các tập lệnh. Vấn đề là, chắc chắn, các yêu cầu kinh doanh thay đổi và chúng tôi phải đi và thay đổi thử nghiệm của chúng tôi do khớp nối này. Dưới đây là một ví dụ:

Những gì cần đạt được: chuyển tên người dùng / mật khẩu chính xác sẽ đưa người dùng đến màn hình bảng điều khiển.

  • Nhập tên người dùng khác hulk@sperman.com
  • Nhập mật khẩu vào HS @ 1235
  • Nhấn nút ‘Đăng nhập vào nút
  • Xác minh màn hình bảng điều khiển được hiển thị

Hãy xem xét mã:

Hãy cùng xem những gì vấn đề tồn tại trong phương pháp này:

  1. Có một mức độ sao chép mã cao, làm giảm hiệu năng tự động hóa.
  2. Các mã trên không thể đọc được. Trong các công ty phát triển nhanh như Kite (và nhiều công ty khác), các thành viên mới luôn tham gia các nhóm riêng lẻ. Một thành viên mới đã giành được hiểu mã này và mục đích của nó nếu họ tham gia sau khi mã được viết.
  3. Chúng tôi đã giành được sự thoải mái trong việc quản lý loại mã này trong tương lai gần, khi quy trình làm việc của ứng dụng tăng lên.
  4. Bất kỳ thay đổi UI mới nào được kết hợp đều khó đưa vào loại mã này, bởi vì rất nhiều phép tái cấu trúc - tại nhiều điểm - cần phải diễn ra để nó hoạt động trở lại.

Rõ ràng, cách tiếp cận cổ điển có thể trông dễ dàng, nhưng ngay khi các tính năng trong một ứng dụng tăng lên, việc quản lý mã này trở nên đau đầu.

Phương pháp tiếp cận robot

Điều gì xảy ra nếu chúng ta theo một cách tiếp cận mà chúng ta chỉ tập trung vào những gì chúng ta muốn đạt được? và không Làm thế nào để chúng ta muốn đạt được nó? Sau đó chúng tôi sẽ tạo các lớp khác nhau cho Làm thế nào và Cái gì. Bằng cách này, cả hai loại như thế nào và loại nào sẽ độc lập với nhau.

Mẫu thử nghiệm Robot tương tự như Mô hình Đối tượng Trang được sử dụng rộng rãi, là mẫu thiết kế có nghĩa là để tạo kho lưu trữ đối tượng cho các thành phần UI cho nền tảng dựa trên web.

Hiện tại, chúng tôi dựa vào một người dùng thủ công để thực hiện các hành động. Điều gì sẽ xảy ra nếu robot làm tất cả những điều này cho chúng ta? Theo cách tiếp cận của Robot, chúng tôi biết rằng màn hình cho phép chúng tôi nhập tên người dùng / mật khẩu mà không liên quan đến việc những giá trị này sẽ đi đâu.

Kịch bản robot

Robot tồn tại trên UsernamePasswordScreenBot, vượt qua các giá trị trong trường tên người dùng / mật khẩu và nhấp vào ‘Đăng nhập. Bây giờ, màn hình thay đổi và robot này chỉ có quyền kiểm soát đối với lớp UsernamePasswordScreenBot. Từ đây, một bot khác sẽ sử dụng resultScreenBot để thực hiện các hành động tiếp theo trên màn hình tiếp theo.

Nói cách khác, tạo một robot trên mỗi màn hình và nó sẽ thực hiện các hành động cần thiết.

Ngồi lại, thư giãn và để robot làm việc cho bạn.

Mã này giải thích những gì chúng ta muốn, nghĩa là, để có thể nhập tên người dùng và mật khẩu sẽ đăng nhập người dùng.

So sánh

Hãy để Lí so sánh các số liệu và thay đổi hiệu suất trong phương pháp cổ điển và phương pháp Robot:

  1. Sao chép mã được giảm thiểu, vì chúng tôi đặt ID phần tử trong một lớp và sử dụng cùng một lớp mỗi lần.
  2. Khả năng đọc mã đã được cải thiện, vì một thành viên mới tham gia nhóm có thể hiểu mã này đang làm gì trực quan hơn.
  3. Việc quản lý mã như vậy và thích ứng với các thay đổi UI giờ đây trở nên dễ dàng hơn. Thay đổi mã ở một nơi và thay đổi này phản ánh chính nó ở mọi nơi. Xem xét một ví dụ: trong luồng đăng nhập, ID của một thành phần thay đổi hoặc trường mới được thêm vào. Theo cách tiếp cận cổ điển, chúng tôi phải thực hiện thay đổi tại mỗi điểm mà chúng tôi đang đăng nhập người dùng. Trong phương pháp Robot, chúng tôi sẽ chỉ thêm hoặc chỉnh sửa các thành phần trong lớp UsernamePasswordScreenBot và gọi trực tiếp từ đó.

Phạm vi thử nghiệm robot

Lúc đầu, chúng tôi có thể nghĩ rằng các bot không đủ thông minh để hoàn thành bài kiểm tra Sanity hoặc bao gồm các luồng âm. Tuy nhiên, các bot của bạn sẽ thực hiện kiểm tra tiêu cực, Sanity và hồi quy thông qua mã như mã bên dưới - cho bạn thêm một vài phút ấp ủ để dành thời gian nghỉ trưa. Đối với điều này, chúng ta cần tạo ra các phương thức khác nhau và truyền nội dung.

Đoạn mã trên cho thấy cách bạn có thể tạo các phương thức cho tất cả các loại dữ liệu bạn muốn truyền trong một lớp. Phương pháp cổ điển tập trung vào những gì cần đạt được và làm thế nào để đạt được hoàn toàn. Chúng ta cần loại bỏ điều này Thành phần cách thức để làm cho mọi thứ đơn giản hơn.

Tiết kiệm thời gian và nâng cao năng lực

Chúng tôi đã tiết kiệm một lượng thời gian đáng chú ý và tăng khả năng của mình bằng cách chuyển sang phương pháp Robot.

  1. Bảo hiểm thử nghiệm của chúng tôi đã tăng so với thử nghiệm thủ công.
  2. Chúng tôi đã giảm thời gian hoàn thành một Sanity từ cả ngày xuống còn 5 phút10.
  3. Chúng tôi đã giảm 50% thời gian tạo tập lệnh và đã giải quyết được vấn đề về khả năng mở rộng.
  4. Với cách tiếp cận tập lệnh, chúng ta có thể tạo một bộ hồi quy giúp cho việc kiểm tra đơn giản và chính xác hơn.

Phần kết luận

Ở một công ty khởi nghiệp như Kite, tôi đã linh hoạt thử những điều mới và đầu tư thời gian vào nghiên cứu - vì điều đó mà tôi đã có thể đưa ra một cách tiếp cận mới để sử dụng Appium. Tôi bắt gặp các thực hành tốt hơn mỗi ngày nhờ vào đội ngũ hỗ trợ cao mà tôi làm việc tại Kite. Thông qua trao đổi mở, chúng tôi đã có thể đổi mới theo cách làm cho công việc của chúng tôi hiệu quả hơn, hiệu quả và vui vẻ hơn. Nếu nơi làm việc của bạn hỗ trợ nó, tôi khuyến khích bạn tổ chức các buổi chia sẻ kiến ​​thức và thiết lập giờ dành riêng mỗi tuần để thử nghiệm các kỹ thuật mới; Đó là cách hiệu quả nhất để phát triển các chiến lược dài hạn để giữ cho các nhóm của bạn chặt chẽ và không ngừng đổi mới.