1. Automation test là gì – tại sao chúng ta cần nó?

Hãy tưởng tượng bạn đang test một hệ thống ERP bao gồm 100 form và 1000 reports. Bạn bắt đầu thử nghiệm nó bằng cách mở 1 form trong đó có 50 fields khác nhau. Bạn thử random nhập data cho form này mất tầm khoảng 10-15 phút, sau đó bạn nhấn submit button. Wolla!! Một lỗi xảy ra đó là lỗi ‘unhandled exception’. Bạn cảm thấy rất vui, bạn tự hào và viết steps bug đó rồi gửi sang developer, bạn cảm thấy tự tin và đầy nghị lực trong công việc, bạn tiếp tục test tới cuối ngày và tìm thêm vài bugs nữa. Đó là một ngày suôn sẻ.

Sang ngày tiếp theo developer đã fixed hết những issue, họ release một version mới đã fix toàn bộ bug bạn tìm ra, bạn test lại các form đó với các steps tương tự và bạn thấy rằng các bugs đã được fixed, chất lượng đã được cải thiện.

Và đến ngày thứ ba, developer lại release một version mới hơn, bây giờ bạn lại test lại các form đó để đảm bảo rằng không còn bug lặp lại sảy ra, và tương tự các steps đã test, bạn bắt đầu cảm thấy có một chút gì đó hơi chán công việc tương tự.

Bây giờ hãy tưởng tượng rằng 1 tháng từ khi bắt đầu project tới bây giờ, version mới nhất được release liên tục, và tất cả các lần releasing bạn phải regression test hàng trăm form rất dài hoặc có thể >100 form tương tự.

Bây giờ bạn cảm thấy có phần tức giận, bạn mệt mỏi, bạn bắt đầu giảm dần các steps tương tự, bạn fill dữ liệu vào chỉ khoảng 50% tổng số fields. Nặng lượng của bạn so với ban đầu là không giống, và các steps thực hiện cũng không thể test lại toàn bộ các case cũ trước đó.

Và một ngày sau khi release tới khách hàng, sau một thời gian họ feedback bug tương tự bug cũ đã từng xảy ra trên bất kỳ form nào đó bạn đã test, bạn cảm thấy mất tự tin và cho rằng mình không đủ trình độ làm việc, sau đó Manager sẽ đánh giá khả năng làm việc của bạn.

Câu chuyện trên là nguyên nhân chúng ta nên sử dụng automation testing để cải thiện chất lượng và quản lý thời gian test tốt hơn.

Tôi tin rằng đây là câu chuyện của 90% manual tester – và bạn cũng không phải là người ngoại lệ

Chúng ta là con người, chúng ta không thể làm được tất cả mọi thứ giống nhau với tốc độ, độ chính xác và năng lượng như nhau, và máy móc có thể thay thế chúng ta làm các công việc lặp đi lặp lại với các steps, độ chính xác và năng lượng giống nhau, đó là yêu cầu của automation testing. Bất cứ khi nào, các tình huống như trên phát sinh bạn nên tự động hóa test case của bạn. Test automation is your friend. Nó sẽ giúp bạn tập trung vào những function mới trong khi những function cũ bạn có thể thực hiện automation testing để regression test tránh làm mất thời gian focus vào việc regression testing.

Với Automation testing hệ thống khi run sẽ tự động fill data vào các trường khác nhau và sẽ thông báo cho bạn kết quả test thông qua log, screenshot. Với trường hợp case failure bạn có thể dễ dàng check vị trí test case fail và sửa nó.
Ví dụ một số scenario cần sử dụng automation testing:

  • Test hệ thống cho phép load 100,000 users
  • Test applications trên các browser và hệ điều hành khác nhau

2. Automated Unit Tests

Đối với các testers, họ sẽ thực hiện việc Unit Test theo các test cases đã viết sẵn như: Login sai 3 lần thì account đó có bị lock hay không? Hoặc login xong thì redirect tới đúng Page hoặc Window mong muốn hay không v.v. Còn đối với Developer làm Unit Test có vẻ khác một chút, họ phải thực hiện code Unit Test Script (dùng Nunit hoặc Junit), mục đích để kiểm tra xem các Functions, Modules có thực hiện đúng không?

2. Automated Web Service/ API Tests

API là lớp chuyên xử lý các thao tác người dùng, xử lý và trả về dữ liệu cho data base sau đó lại lấy dữ liệu từ database gửi ngược lại tầng giao diện. API gồm nhiều phương thức nhưng chủ yếu là dùng 2 phương thức:

  • GET: Nhận dữ liệu từ server về và hiển thị
  • POST: Đẩy dữ liệu lên server

Vì vậy, test API một là sàng lọc những dữ liệu không hợp lệ được gửi tới và ‘lọt lưới’ từ tầng giao diện, từ đó sẽ đưa ra thông báo cụ thể. Hai là xử lý các yêu cầu của người dùng để đưa ra kết quả hiển thị cho người dùng xem có đúng như mong đợi không.

Các tool có thể sử dụng automation testing đó là SOAPUI, Runscope, Postman, …

3. Automated GUI Tests

Là một software program dùng để chạy một cách tự động thay thế các thao tác testing bằng tay. Chúng ta thực hiện automation testing bằng cách viết các script code để giả lập việc nhập dữ liệu vào textboxes, chọn một item trong combobox, click vào một checkbox, hoặc click vào button. Và chúng ta cũng phải viết scripts để lấy dữ liệu Output từ một textbox, label, hoặc datagrid… để so sánh với Expected của khách hàng. Chúng ta cũng phải viết các scripts để compare dữ liệu, và đưa ra kết quả là Pass hay Fail. Và cuối cùng chúng ta sẽ để cho script của chúng ta chạy đêm ngày – còn chúng ta sẽ ngồi đọc báo, học thêm sách technical, hoặc học tiếng anh, đi uống trà đá,…

Một số tool testing có thể sử dụng: Selenium, QTP, TestComplete, RanoRex, LoadRunner, …

4. Một số quan niệm sai lầm về Automation Testing

Tôi nghĩ rằng có một số quan niệm sai lầm về automation testing như sau:

Misconception #1. Automation test thay thế manual tester.

Automation testing giúp cho tester có thể test hệ thống một cách nhanh hơn, đáng tin cậy hơn, nhưng nó không bao giờ thay thế được con người.

Hãy suy nghĩ kiểm thử tự động như 1 chiếc xe. Nếu bạn chạy bộ xung quanh khu nhà bạn bạn có thể mất 20phut, nhưng nếu sử dụng xe bạn chỉ mất 2 phút, và người lái chiếc xe đó vẫn chính là bạn, nhưng chiếc xe giúp bạn đạt được mục tiêu nhanh hơn, hơn nữa là tất cả năng lượng của bạn được tiết kiệm bởi vì bạn không phải chạy bộ và bạn có thể dùng năng lượng đó cho công việc khác quan trọng hơn.

Tương tự automation testing bạn sử dụng nó để regression testing điều này sẽ làm tiết kiệm thời gian và năng lượng của bạn cho function mới quan trọng hơn.

Misconception #2. Tất cả mọi thứ đều có thể test tự động

Nếu bạn thử Automated 100% test case của bạn, có thể bạn có khả năng làm được, nhưng nếu tất cả mọi thứ là tự động thì con người sẽ làm gì?

Trên thực tế thì bạn không thể tự động test 100% test case của bạn, sẽ bị miss một số scenario bởi vì luôn có những scenario rất khó để thực hiện tự động hơn là test bằng tay. Ví dụ: Một người dùng sẽ input data, người dùng thứ 2 sẽ approver data, người dùng thứ 3 sẽ view data…

Những scenario này có thể test tự động nhưng nó mất rất nhiều thời gian và tốn effort của bạn để tạo frame test tự động cho những case đó, vì vậy nó sẽ dễ dàng hơn cho bạn khi sử dụng test bằng tay.

Do vậy mà bạn không nên test tự động tất cả mọi thứ. Chỉ automated những scenario quan trọng và mất nhiều thời gian test bằng tay.

Misconception #3. Tự động hóa chỉ liên quan đến việc record và playback.

Tự động không chỉ để dùng record và playback. Một kỹ sư tinh tế họ không thường hay sử dụng playback and record ở tất cả các feature. Record và playback thường được sử dụng để generate ra script các steps và sử dụng nó để lấy ý tưởng viết scripts chạy tool như thế nào.

Bạn cần phải biết một chút kiến thức lập trình nếu bạn muốn tạo scripts tự động test hoàn hảo cho một application. Hãy học lập trình, đừng trốn tránh, nó sẽ cho bạn một thử nghiệm tuyệt vời 😀

5. Kết luận

Automation testing được giải thích đơn giản như trên nhưng nó không hề đơn giản để làm. Có những thách thức, rủi ro và những trở ngại. Có rất nhiều cách kiểm tra tự động có thể sai, nhưng nếu tất cả đều đúng thì đó là lợi ích rất lớn.

Nguồn: https://viblo.asia/huong.quynh/posts/3OEqGjakM9bL