Test Automation Principles – Vậy nó là những gì?

Đầu năm mới mình chúc các bạn có 1 năm thật nhiều sức khỏe cũng như có nhiều thành công trong công việc nha!


Principles là cái gì?

Đó giờ mọi người chắc cũng đều biết tester mình có 7 cái principles, code thì có SOLID principles, vậy bạn nào làm nhiều về automation có bao giờ các bạn thử suy nghĩ xem liệu với test automation thì mình sẽ có những principles nào ko?

=)) mày đang nói c** gì thế automation thì là automation thôi làm c** gì mà đẻ ra cái principles hay pineapple gì đó!!

Trước khi bắt đầu thì tạm coi thử định nghĩa principle tí nào. Theo như bạn Wikipedia thì bạn đó định nghĩa về principle có nghĩa là “principle is a concept or value that is a guide for behavior or evaluation.”, và nhờ có chị google thì mình hiểu được câu đó có nghĩa là “nguyên tắc là một khái niệm hoặc giá trị mà nó sẽ là những chỉ dẫn cho hành vi hoặc dùng cho việc đánh giá.”. Dễ hiểu mà đúng không =)))

Vậy thì sau 1 khoảng thời gian lăn lộn với test automation và đọc qua vài quyển bí kíp cũng như điển tịch liên quan tới nó thì mình đã chiêm cmn nghiệm ra cho bản thân mình những principles được mình sử dụng khi làm việc với những dự án có sử dụng automation. Đó là lý do mà mình đặt mông lên ghế, và cặm cuội viết bài blog này để chia sẻ với mọi người, hy vọng những gì mình đọc được và trải nghiệm được sẽ giúp ích mọi người cũng như mình mong sẽ nhận lại được những góp ý của mọi người 😀 Dông dài đủ rồi vô phần chính thôi nào!!!


TEST – Test automation principles

Mình gói gọn cái mớ principles của mình chỉ với 1 chữ TEST. Có vẻ đơn giản nhỉ vậy cùng tìm hiểu thử nó đại diện cho những gì nào =))

  • Think about test design and test it first
  • Extra tool to support test
  • Speed, stability, and reliability in your test automation
  • To automate or not to automate

Think about test design and test it first

Nguyên tắc thứ 1: Phải luôn nghĩ về việc thiết kế test case cũng như hãy thực hiện việc test sản phẩm/tính năng trước tiên.

Chắc mọi người cũng đang tò mò không hiểu vì sao đang nói về automation mà mình lại nói về thiết kế test case cũng như phải thực hiện việc test sản phẩm trước tiên. Đầu tiên thì mình muốn nhấn mạnh automation ko có nghĩa là đang automate test. Các bạn hãy thử tự trả lời những câu hỏi sau thì sẽ có câu trả lời cho mình “Ai là người tạo ra script cho automation?, “Những test script automation đó được viết dựa vào đâu?”, “Làm sao để tạo ra những thứ để automation có thể dựa vào đó để viết thành test script?”.

Việc mình làm automation mà mình ko biết rõ nên viết như thế nào, cần phải kiểm tra những điểm gì trong đó, cũng như không rõ liệu mình đã cover đủ hết các điểm quan trọng chưa thì sẽ rất nguy hiểm do nó sẽ không mang lại giá trị cao cho dự án của mình.

Vậy thì việc phải test sản phẩm hay tính năng trước tiên thì nó có ý nghĩa gì?

Việc test sản phẩm đầu tiên thì nó sẽ giúp bạn cho dự án cũng như những thành viên khác thấy được lợi ích cũng như giá trị của 1 tester mang tới, cũng như khi các bạn test thì quá trình này sẽ giúp các bạn hiểu rõ là test case nào mình có thể dùng automation để check lại ở những lần sau cũng như bổ sung thêm những test case mà các bạn nghĩ là vẫn còn đang thiếu.

Extra tool to support test

Nguyên tắc thứ 2Test automation chỉ là 1 phương pháp sử dụng những công cụ khác nhau để giúp đỡ các bạn trong việc thực hiện test sản phẩm.

Nguyên tắc này chỉ muốn nhấn mạnh việc các bạn có thể nghĩ 1 cách rộng hơn việc mình có thể sử dụng những tool automation thể giúp đỡ trong việc test sản phẩm. Bạn có thể dùng nó để tạo sẵn những precondition data, bạn có thể dùng nó để capture browser console.log khi các bạn test feature, bạn có thể sử dụng nó để thay thế cho việc ad-hoc testing (tool support ad-hoc testing)

Speed, stability, and reliability in your test automation

Nguyên tắc thứ 3Test automation phải được thực thi 1 cách nhanh nhất, ổn định nhất và có độ tin cậy cao nhất

Chắc ai từng làm automation đều từng trải qua cảm giác “Ủa cái automation run xong báo failed mà ko biết nó có bug thiệt ko ta?”,“Automation run gì lâu quá vậy chạy nighly build rồi mà vẫn chưa có kết quả”, “Ủa cái này bữa hôm qua mới run pass mà sao nay nó bị error ko run được nữa rồi?”. Nguyên tắc này mình sử dụng để giúp cho mình cũng như mọi thành viên trong team đều cảm thấy tự tin về kết quả của test automation mỗi lần nó thực thi cũng như lúc này automation sẽ mang lại ROI nhiều nhất.

SPEED: test automation cần phải run lẹ nhất có thể, thời buổi bây giờ để CI/CD thì buộc việc run test automation không thể nào kéo dài trong 8h hay thậm chí 3h-4h cũng là quá lâu. Vậy để các bạn luôn có được tiêu chí này thì các bạn cần coi thử nguyên tắc FIRST. Ngoài ra thì các bạn cũng luôn cần phải coi cách mình execute automation đã tối ưu chưa, liệu có cách nào reduce được time khi execute ko (tách ra nhiều suite, run parallel nhiều suite, etc.)

STABILITY: test automation cần phải chạy thật ổn định. nếu bạn nào đang làm automation thì chắc hay nghe cái thuật ngữ flaky test (đây là 1 thuật ngữ để ám chỉ những test script automation bị tình trạng lúc run pass lúc run fail). Hãy tưởng tượng nếu các bạn đang có automation trong project và trong đó phần lớn các test scripts đều bị tình trạng flakiness 😦 Lúc này rõ ràng các bạn sẽ ko hề cảm thấy tự tin về kết quả mà automation mang lại. Vậy để giúp cho test automation giảm tình trạng test script bị flaky thì các bạn có thể tham khảo những link sau:

RELIABILITY: test automation cần phải có độ tin cậy cao nhất, độ tin cậy ở đây có nghĩa là ngoài việc test automation có tỉ lệ flaky test thấp thì test automation còn phải đảm bảo việc verify chính xác busniess logic mà test đang thực hiện. Mình từng gặp rất nhiều trường hợp các bạn viết 1 test script rất nhiều actions bên trong nhưng mà tìm mãi ko thấy các bạn có 1 chỗ nào thực hiện việc verify những business logic của test script đó (hay nếu bạn nào làm automation thì sẽ hiểu là test của mình ko hề có assert action bên trong). Vậy để đảm bảo độ tin cậy thì các bạn nên sử dụng kỹ thuật break-test (đây là kỹ thuật bạn sẽ inject những fail data vô production và dùng chính test script của mình để kiểm tra test script khi run có bị failed ko) để kiểm tra lại độ tin cậy của test script.

To automate or not to automate

Nguyên tắc thứ 4Test automation phải được chọn lựa kỹ càng những test cases có thể được automate.

Nguyên tắc này muốn nhấn mạnh 1 điều là không phải mọi thứ mình đều có thể automate, như các bạn biết nếu mình đặt mục tiêu automate mọi test cases thì sẽ dẫn tới việc test automation của mình sẽ trở nên rất cồng kềnh, nó sẽ kéo theo việc thực thi test sẽ chậm, thời gian phân tích và maintain sẽ nhiều hơn và theo thời gian về sau thì những lợi ích của test automation mang lại sẽ giảm dần và thay vào đó các bạn có thể sẽ tốn 1 lượng lớn công sức chỉ để duy trì và phân tích nó. Vậy làm sao bạn biết khi nào nên automate và khi nào không. Hãy hỏi những câu hỏi “System hiện tại có ổn để automate?”, “Feature đó mình mình đã test nó đủ chưa?”, và nếu bạn quyết định automate thì bạn có thể sử dụng ACC model của google ( Attributes-Components-Capabilities) để generate ra bản đồi risk và từ đó có thể tập trung biết rõ là automate phần nào và ko nên automate phần nào.


Chốt kèo!

=)) Ngoài lề là mình cũng ko tính viết phần này đâu, nhưng mà do thằng em trai đọc bài mình chửi quá, kiểu viết bài gì mà đưa lên đỉnh nhưng ko chịu giúp người ta hạ cánh gì cả nên mình thêm phần nhỏ xíu này.

Qua bài viết trên thì mình hy vọng các bạn sẽ luôn suy nghĩ thử những điều trên trong quá trình làm việc với automation. Tuy nó chỉ là những điều mình đúc kết ra được từ bản thân khi làm việc cũng như sau khi đọc qua vài quyển sách về automation nhưng chí ít nó cũng có thể là kim chỉ nam cho các bạn đang mới bắt đầu bước vô con đường làm việc với test automation 😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s