testcase_template.gif

  • Khi một tester quyết định viết một test case với chất lượng tốt và muốn cải thiện hiệu quả các test case đã viết, có một vài điểm quan trọng giúp tester có thể đạt được những mục tiêu này.
  • Đầu tiên họ cần chuẩn bị cho mình tâm lý và dữ liệu test một cách chuyên nghiệp cộng với một số điểm quan trọng cần thiết cho sự thành công của tester trong ngày công nghệ IT, nó được coi như ‘Inputs’ cho một tester trước khi viết test case .
  • Tiếp theo họ cần phải hiểu chi tiết requirement các số liệu liên quan tới dự án được sử dụng như công cụ đánh giá hiệu suất của tester trong phần lớn các giai đoạn của mô hình kiểm thử, đó coi như là xử lý ‘Outputs’ cho một tester sau khi hoàn thành xong test case.
  • Cuối cùng tester cần biết như thế nào là report bug, issue, thế nào là test report để các bên liên quan của project để các bên liên quan có thể hiểu được tình hình của dự án tới thời điểm hiện tại.

1. Prepare yourself###

  • Viết test case là một kỹ thuật, nó không chỉ đơn thuần là một công việc phải làm hoặc một nhiệm vụ bắt buộc. Một phân đoạn của phần mềm có thể được design và phát triển sẽ là vô ích hoặc không đủ điều kiện để release cho đến khi người phát triển và tester có cách tiếp cận test hiệu quả và pass qua tất cả các scenario cho chức năng đó.

  • Niềm đam mê với thái độ tích cực yếu tố này hết sức quan trọng mà một người tester tốt nên có. Niềm đam mê thúc đẩy khả năng xây dựng/ đóng góp cho team, làm việc với niềm đam mê và thái độ tích cực mang lại năng suất tuyệt vời trong tất cả các công việc không ngoại trừ việc viết test case. Điều này có nghĩa là việc viết test case là sự kết hợp của việc nghiên cứu chuẩn bị data test chuyên nghiệp và thái độ làm việc của người tester để được kết quả như mong đợi.

  • Positive and negative test cases là một phần trong khi viết test case, khi thực hiện viết một test case thì tester nên có một tư duy logic chắc chắn về hệ thống cần test, ngoài ra cần có tư duy kết hợp để viết tích hợp positive và negative test case ( về Negative và positve test case là gì thì tôi sẽ giới thiệu với các bạn ở chương sau), tránh tình trạng bị lack các case ngoại lệ

  • Hiệu quả của tester không thể đánh giá dựa trên số lượng bugs tìm được trên hệ thống sau khi thực hiện free test, mà nên dựa vào chất lượng phần mềm sau khi test như thế nào? tốt hoặc không. Để hệ thống có chất lượng tốt trước khi đến tay người sử dụng thì người tester phải chuẩn bị cho mình test case một cách tỉ mỉ, rõ ràng, chuyên nghiệp cover được tối đa các case dựa vào boundary và scope, dựa vào test case đã viết để tìm ra bugs, tránh tình trạng lack bug trước khi hệ thống đến với người sử dụng.

  • Hiểu được chi tiết phạm vi của hệ thống
    ví dụ khi test 1 website thì scope đơn giản hơn việc test một hệ thống phần mềm chứng khoán được sử dụng bởi hàng nghìn người dùng trong cùng một thời điểm. Một simple website thì bất kỳ một tester nào cũng thế thể hiểu và test một cách dễ dàng, nhưng đối với hệ thống tài chính chứng khoán thì không phải hầu hết tester có thể hiểu được nghiệp vụ trừ khi họ có kiến thức căn bản hoặc đã được trainning về nghiệp vụ hệ thống.

Vì vậy khi một tester tiếp cận 1 project mới, người tester phải đánh giá chính khả năng bản thân mình hiểu được hệ thống đến đâu? hiểu được ở mức nào? và có thể thực hiện công việc được như mong đợi hay không. Nếu chức năng của requirement là rất khó để hiểu thì cần phải raise khó khăn lên team để project manager hoặc test manager hoặc leader sẽ có kế hoạch trainning nghiệp vụ để hiểu chi tiết nội dung của hệ thống, để tránh hiểu lầm nghiệp vụ gây ảnh hưởng tới hiệu suất của tester.

  • Kiến thức test, tài liệu test, các kỹ thuật test được thực hiện và thu gom từ project này sang project khác, một tester nên chuẩn bị bất kỳ kiến thức nào về kiểm thử. Không nên hạn chế kỹ năng và điểm mạnh của mình, ngoài ra bạn cần phải chuẩn bị sẵn sàng chịu trách nhiệm và thử thách để viết và thực hiện test case cho bất kỳ hệ thống nào.

    Rất nhiều tester cố gắng chuẩn bị phương pháp test cho mình bằng cách test tự động hoặc manual test. Khi đến quá trình thực hiện performance testing, load testing, stress testing thì rất ít tester chuẩn bị và thu gom những kiến thức cần thiết cho họ để thực hiện test function hoặc hệ thống.

    Vì vậy be a quick learner và sẵn sàng có trách nhiệm để phát triển sự nghiệp của bạn.

  • Xác định được các loại testing.

Ví dụ: Một vài project chỉ yêu cầu test black box và một số khác yêu cầu kỹ năng test white box thì các kiến thức như ‘Scripting‘ hoặc kinh nghiệm trong ‘SQL‘ hoặc làm việc với ‘mark up language‘như HTML/XML etc., hoặc thậm chí các kiến thức về hệ thống như install/troubleshoot installation of the software etc. Đó là một số project đã có requirement rõ ràng bạn phải học hỏi từ các nguồn tài liệu khác nhau hoặc qua các buổi trainning tương tự để tích lũy kinh nghiệm cho bản thân.

  • Cần đảm bảo rằng test case có thể cover được Performance testing, Security testing and Regression testing.

Ví dụ hệ thống sử dụng màn hình login như sau:
Test-Case-efficiency-2.jpg

Performance testing có thể yêu cầu việc check hệ thống vẫn làm việc bình thường trong trường hợp 1000 user login trong cùng một thời điểm, và test case nên viết cover cho scenario này.

Security testing có thể yêu cầu việc check hệ thống chỉ cho phép user có đúng quyền mới được sử dụng một số chức năng chính, và test case nên viết để cover cho scenario này.

Regression testing có thể check kết hợp với một số function khác vẫn làm việc sau khi qua nhiều lần release.

  • Test case review Một trong những điều quan trọng nhất của bất kỳ hệ thống nào trong chu trình phát triển và kiểm thử phần mềm đó là ‘REVIEW’.

Ví dụ: Trước khi viết test case tester cần check xem tài liệu requirement đã được reviewed và update đầy đủ chưa.

Tiếp theo là tài liệu test case cần review ít nhất 3 lần như sau:

i) Self review

ii) Peer review

iii) Review by others for the completeness

  • Cuối cùng là hiểu làm thế nào để estimate và kế hoạch testing task. Là một tester khi viết test case/ hoặc test 1 function nên lập tự lập ra plan hoàn thành cho mình và cố gắng để hoàn thành nó, kế hoạch làm việc chỉ được đặt ra trong ngày, điều này có thể đạt được bằng cách bắt đầu làm việc để hoàn thành công việc trong thời gian đã đặt ra, và kết thúc ngày làm việc với kế hoạch đặt ra cho ngày hôm sau, tránh tình trạng ở lại muộn và giành thời gian cuối tuần trên công ty. Ngày nay, các phương pháp quản lý dự án hiệu quả có sẵn và các dự án đang được thực hiện trong một môi trường Agile.

2. Bug Reporting###

  • Bug report nên được kiểm soát trong quá trình test để maintain chất lượng hệ thống. Bug cần report chính xác để mọi người trong team biết được status, serverity và priority của bug Có rất nhiều tool report bug miễn phí và rất hiệu quả có thể được tích hợp dễ dàng với bất kỳ tool quản lý nào sử dụng trong dự án.
  • Mỗi project đều phải liên tục theo dõi trạng thái report và được báo cáo hàng ngày. Tất cả các bug nên được log và báo cáo sớm nhất có thể để người phát triển trong cùng team nắm tình hình hệ thống.

3. Test report###

  • Test report là một trong những thông tin khá quan trọng để biết được tình trạng của dự án sau khi thực hiện test.

Ví dụ test report sample như hình dưới:
4.png
5.png

4. Kết luận###

Quá trình chuẩn bị viết test case khá quan trọng, để test một phần mềm tốt cover được tối đa số lượng bug thì cần phải có test case chất lượng. Chúng ta nên thực hiện theo dõi các quy trình nghiệp vụ, tiêu chuẩn, và tuân thủ nghiêm ngặt đảm bỏa chất lượng phần mềm với một niềm đam mê nghề nghiệp. Tất cả những điều đó tự động mang lại hiệu quả chất lượng tốt cho bạn và sẽ trở thành một thói quen chuyên nghiệp trong công việc.