Lợi ích của mô hình UML
Trong bài tìm hiểu này tôi xin được giới thiệu với các bạn về ý tưởng tự động sinh test case bằng việc sử dụng UML. Ý tưởng này quả thực rất tuyệt, các bạn hãy cùng tôi tìm hiểu về lợi ích của UML trong bài này nhé. 1. Sự quan trọng của spec Trong một dự ...
Trong bài tìm hiểu này tôi xin được giới thiệu với các bạn về ý tưởng tự động sinh test case bằng việc sử dụng UML. Ý tưởng này quả thực rất tuyệt, các bạn hãy cùng tôi tìm hiểu về lợi ích của UML trong bài này nhé.
1. Sự quan trọng của spec
Trong một dự án thì điều đầu tiên mà tester cần phải đảm bảo đó là yêu cầu (Spec) của khách hàng. Dự án thành công hay thất bại đều do chất lượng đảm bảo spec hàng ra sao. Các spec này là tất cả những gì công việc nhóm phát triển và tester cần làm.
Spec cần được đảm bảo cố định trước khi bước vào giai đoạn thiết kế và phát triển dự án nếu không các dự án sẽ bị bị chậm trễ, tốn kém hoặc dự án sẽ bị thất bại. Những người thiết kế ban đầu dự án là rất quan trọng, họ cần phải đảm bảo rằng dự án sẽ phát triển theo đúng yêu cầu của khách hàng, nếu họ hướng tới mục tiêu không đúng, thì việc phát triển dự án sẽ đi lệch hướng với mong muốn ban đầu của khách hàng.
Tôi nhắc tới việc đảm bảo spec vì một tester thì sẽ tạo test case dựa trên spec. Nên nếu ngay từ ban đầu spec không đảm bỏ, không cố định thì se tốn rất nhiều chi phí cho việc chỉnh sửa test case và trong quá trình test.
2. Các phương pháp tạo test case tự động
Thông thường một quy trình kiểm thử sẽ bao gồm các bước: lập kế hoạch, thiết kế test, phát triển test script, thực hiện test và đánh giá. Test case sẽ được viết trong bước thiết kế test.
Mục đích của thiết kế test là viết và chỉ định các test case trong các bước kiểm tra chi tiết mỗi phiên bản của phần mềm. Giai đoạn này hết sức là quan trọng, nó đảm bảo tất cả các tình huống cần kiểm tra đối với một yêu cầu. Vì vậy công việc tạo ra các test case hiệu quả là đặc biệt quan trọng để đảm bảo chất lượng phần mềm.
Trong quá trình phát triển dự án phần mềm, công việc tạo ra các test case từ spec sẽ do tester tạo. Nhưng không phải tester nào viết cũng giống nhau, mà tester nào viết tài liệu test case tốt, hiệu quả tốt thì chất lượng phần mềm sẽ tốt hơn. Vậy việc chuẩn hóa và đồng bộ để tạo ra bộ test case một cách hiệu quả và có chuẩn về chất lượng là rất quan trọng. Để làm điều này người ta nghĩ tới việc tạo ra test case một cách tự động để vừa làm giảm bớt công sức của tester vừa có thể đồng bộ test case.
Việc test phần mềm là một công việc rất quan trọng trong vòng đời phát triển của phần mềm. Để cắt giảm chi phí của việc tạo test case bằng tay đó là tạo test case một cách tự động.
Rất nhiều nghiên cứu về việc sinh ra các test case tối ưu dựa trên các đặc tả, tuy nhiên không thể đạt 100% các test case tối ưu. Kể từ khi UML (Unified Modeling Language) được sử dụng rộng rãi thì nhiều nghiên cứu sử dụng lược đồ UML để sinh ra các test case và dẫn đến việc sinh ra test case dựa trên mô hình.
2.1 Sinh test case dựa trên đặc tả
Là phương pháp sinh test case mà phỏng theo trạng thái được xác định trước dựa trên đặc tả để tạo ra test case từ biểu đồ trạng thái UML. Việc kiểm thử đủ các thuộc tính, các cặp chuyển tiếp và chỉnh sửa các câu lệnh tự động sinh ra các bộ phần điều khiển test và test script để xác nhận các thành phần khi test.
Các lỗi được phát hiện ra như sự không nhất quán giữa hành vi và đặc tả biểu đồ trạng thái được đưa ra bởi người sử dụng. Mục tiêu là để xác định các đặc tả dựa trên các tiêu chuẩn thích hợp cho hệ thống và để tạo ra bộ test case với ít nhất thao tác của con người.
2.2 Sinh test case dựa trên mô hình
Đa phần công việc test dựa trên mô hình của các hệ thống tập trung vào việc sử dụng của các biểu đồ trạng thái hoặc lớp. Các biểu đồ lớp chỉ một tập các lớp, các giao diện và các mối quan hệ của chúng. Các biểu đồ trạng thái biểu diễn thay đổi từ trạng này đến trạng thái khác.
2.3 Sinh test case hướng đường dẫn
Test case hướng đường dẫn đã sử dụng chiến lược tìm kiếm nhị nguyên. Toán tử được đề xuất có thể được phân loại như cách tiếp cận hướng tới đường dẫn. Phương pháp này đã nêu vấn đề của các cách tiếp cận sinh ra test case tự động và đã cung cấp một giải pháp với thuật toán sinh ra test case. Đường dẫn được xem xét từng bước từng bước một và các test case sau đó được nghiên cứu để hoàn thiện chúng. Phương pháp này đòi hỏi các giả định nhất định nhưng cho phép sinh ra test case hiệu quả. Lợi thế của phương pháp này là nó không đòi hỏi bất cứ một sự điều chỉnh tham số nào và không cần bất cứ kỹ thuật tối ưu nào để tạo ra dữ liệu test.
3. Kiểm thử phần mềm và UML
Có nhiều giai đoạn trong quá trình test phàn mềm: Đơn vị, chức năng, hệ thống, hồi qui,… Bảng minh họa những khác biệt giữa các giai đoạn:
Sử dụng UML trong quá trình test không được giải quyết bằng cách chỉ chú ý sơ đồ mà có thể có ích trong các giai đoạn khác nhau. Một số vấn đề phải được giải quyết trước khi UML có thể áp dụng hiệu quả qua quá trình thử nghiệm.
Có 2 vấn đề liên quan tới việc sử dụng UML:
- Thứ nhất: Liên quan đến việc sử dụng các mô hình UML trong quá trình test. Tester khó nắm bắt được yêu cầu qua mô hình được sử dụng trong quá trình test
- Thứ hai: Các mô hình thường thiếu chi tiết và tính năng được yêu cầu để phát triển các test case. Để giảm thiểu các vấn đề này thì tester cần có sự hiểu biết về UML, biết phân tích, biết dùng mô hình, thư viện của UML để có thể hiểu và diễn tả đúng test case tester cần qua mô hình của UML.
Trên đây là tổng quan lý thuyết về UML trong kiểm thử. Bản thân tôi chưa từng sử dụng UML trong việc tạo test case, nhưng tôi rất thích ý tưởng khi sử dụng UML ứng dụng vào viết test case, nhưng trước khi có thể làm được việc tự động tạo test case sử dụng mô hình của UML thì chắc chắn bạn nên học cách sử dụng UML trước. Sau đó khi ứng dụng vào mô hình UML thì mới có hiệu quả được.
Tham khảo http://iasir.net/IJSWSpapers/IJSWS14-385.pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.2318&rep=rep1&type=pdf