Mô hình nghiệp vụ và các yêu cầu của hệ thống

Một phần của tài liệu Nghiên cứu kỹ thuật kiểm thử phần mềm và ứng dụng trên môi trường DOT NET (Trang 67)

Kiểm thử tự động có thể hiểu nôm na là sử dụng phần mềm để thực thi và kiểm soát các yêu cầu kiểm thử một phần mềm, so sánh kết quả trả về thực tế với kết quả mong đợi.

Nội dung của Luận văn hƣớng tới mục tiêu xây dựng một bộ công cụ kiểm thử phần mềm tự động có thể bao quát đƣợc hầu hết các yêu cầu kiểm thử, từ kiểm thử từng đơn vị độc lập, kiểm thử tích hợp, kiểm thử chức năng,… cho tới kiểm thử chịu tải. Bộ công cụ sẽ phù hợp và tích hợp đƣợc với các quy trình phát triển phần mềm phổ biến, công cụ có có tính mở (là một bộ công cụ mã nguồn mở đƣợc thiết kế để dễ dàng mở rộng và tùy biến theo từng yêu cầu đặc thù), và hỗ trợ nhiều nền tảng công nghệ khác nhau nhƣ: .Net, Java, PHP,… Một đặc điểm quan trọng của bộ công cụ này là hƣớng tới tính tự động cao nhất, qua đó sẽ tối ƣu đƣợc chi phí và nhân lực cần giành cho quy trình kiểm thử phần mềm.

Bộ công cụ kiểm thử tự động cần hội đủ các yêu cầu sau: - Tính đa nền.

- Khả năng xử lý dữ liệu (dữ liệu đầu vào, dữ liệu đầu ra, dữ liệu meta data).

- Có thể lƣu trữ kết quả và báo cáo dƣới nhiều hình thức (SQL Server, Oracle, My SQL, Crystal Reports).

- Dễ gỡ lỗi và lƣu vết. - Dễ dàng quản lý phiên bản.

- Khả năng mở rộng và tùy chỉnh (có API để có thể tích hợp với các công cụ khác).

Từ yêu cầu đặt ra, ta có thể xác định hoạt động của công cụ kiểm thử diễn ra nhƣ sau:

a. Thu thập các đặc tả yêu cầu hoặc trƣờng hợp kiểm thử, lựa chọn những thành phần cần thực hiện kiểm thử tự động

Xây dựng các trƣờng hợp kiểm thử (Test Case) có thể phát hiện lỗi, sai sót, khuyết điểm của phần mềm để xây dựng phần mềm đạt tiêu chuẩn đề ra. Thông qua danh sách trƣờng hợp kiểm thử, kiểm thử viên sẽ lựa chọn những trƣờng hợp kiểm thử phù hợp để thực thi trên công cụ kiểm thử tự động.

b. Phân tích và thiết kế mô hình phát triển kiểm thử tự động

Dựa vào đặc điểm của những trƣờng hợp kiểm thử cụ thể mà Kiểm thử viên sẽ xây dựng quy trình, chuẩn bị các bƣớc cụ thể để thực hiện ca kiểm thử trên công cụ kiểm thử tự động.

c. Phát triển lệnh đặc tả và chỉnh sửa kịch bản kiểm thử

Giai đoạn này chúng ta sẽ dùng công cụ kiểm thử để ghi lại các thao tác lên phần mềm cần kiểm tra và tự động sinh ra kịch bản kiểm thử. Đồng thời chỉnh sửa để kịch bản kiểm thử thực hiện kiểm tra theo đúng yêu cầu đặt ra, cụ thể là làm theo trƣờng hợp kiểm thử cần thực hiện.

d. Chạy kịch bản để kiểm thử tự động

Giám sát quá trình thực thi kịch bản kiểm thử của công cụ kiểm thử tự động để thực hiện kiểm tra phần mềm.

e. Tổng hợp và đánh giá kết quả

Kiểm tra kết quả thông báo sau khi thực hiện kiểm thử tự động. Sau đó bổ sung, chỉnh sửa những sai sót.

Trong phạm vi nghiên cứu của Luận văn sẽ tiếp cận phƣơng pháp kiểm thử mã nguồn, dựa vào quá trình thực thi Unit Test để xác định các đoạn mã nguồn thực thi đúng chức năng của mình. Trƣờng hợp kiểm thử sẽ mô tả các thử nghiệm cần đƣợc chạy để xác minh rằng chƣơng trình thực hiện đúng chức năng nhƣ mong đợi. Unit Test dùng để xác định các chức năng cụ thể trƣớc khi đƣợc viết mã, chỉ khi vƣợt qua tất cả các bƣớc thử nghiệm thì đoạn mã nguồn mới đƣợc coi là hoàn thành.

Các kiểm thử viên sẽ làm việc trực tiếp với hệ thống, chọn đối tƣợng kiểm thử, thực hiện theo quy trình kiểm thử do hệ thống quy định và nhận về kết quả kiểm thử.

Mô hình nghiệp vụ của hệ thống đƣợc phân tích nhƣ sau: Bộ phận Phân tích cấu trúc Bộ phận Thực thi kịch bản kiểm thử

Chọn đối tượng kiểm thử

Dữ liệu mô tả cấu trúc

Kịch bản kiểm thử Bộ phận Sinh kịch bản kiểm thử Kiểm thử viên Kịch bản kiểm thử Dữ liệu kiểm thử Kết quả kiểm thử Hình 3.3: Mô hình nghiệp vụ 3.3.2 Phân tích các trƣờng hợp sử dụng Kiểm thử mức đơn vị (Unit Test) Kiểm thử tích hợp (IntegrationTest) Kiểm thử chức năng (Functional Test) Kiểm thử khả năng sử dụng (Usability Test) Kiểm thử hệ thống (System Test)

Kiểm thử chịu tải (Stress Test) Kiểm thử vận hành

(Performance Test)

Kiểm thử viên Phân tích cấu trúc Tạo kịch bản kiểm thử Thực hiện kịch bản kiểm thử Kiểm thử <<uses>> <<uses>> <<uses>>

Hình 3.5: Trường hợp sử dụng của công cụ Unit Test

Đối với tác nhân kiểm thử viên khi họ lựa chọn đối tƣợng cần kiểm thử thì hệ thống sẽ tiếp nhận theo đúng chuẩn file do hệ thống quy định ở đây là file thƣ viện .dll hoặc file thực thi .exe. Tác nhân kiểm thử sử dụng công cụ để phân tích cấu trúc file, tạo kịch bản kiểm thử và thực thi kịch bản kiểm thử.

3.3.3 Biểu đồ trình tự

Trình tự thực hiện các công việc và sự tƣơng tác qua lại giữa các đối tƣợng của công cụ kiểm thử tự động đƣợc mô tả bởi biểu đồ trình tự sau đây: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.6: Biểu đồ trình tự

Biểu đồ trình tự chỉ ra sự tƣơng tác giữa các đối tƣợng sắp xếp theo trình tự thời gian. Nó mô tả ứng xử của các đối tƣợng trong thủ tục, giúp ta hình dung đƣợc khía cạnh động của hệ thống.

Đối tƣợng kiểm thử, qua công cụ kiểm thử tự động phân tích và trả về dữ liệu phân tích cấu trúc cho kiểm thử viên, công cụ kiểm thử tạo kịch bản kiểm thử dựa vào cấu trúc phân tích đƣợc, công cụ kiểm thử sẽ nhận vào dữ liệu kiểm thử để thực hiện kiểm thử và xuất kết quả cho kiểm thử viên.

3.3.4 Biểu đồ trạng thái

Từ biểu đồ trình tự biểu diễn trên ta xây dựng đƣợc biểu đồ chuyển trạng thái có các trình tự nhƣ sau:

Chọn đối tượng kiểm thử Nhập dữ liệu kiểm thử Nhận kết quả kiểm thử Hình 3.7: Biểu đồ trạng thái

Từ trạng thái bắt đầu kiểm thử viên lựa chọn đối tƣợng kiểm thử, nhập dữ liệu kiểm thử, tiếp đến kiểm thử viên nhận kết quả kiểm thử và kết thúc.

3.3.5 Biểu đồ hợp tác

Kiểm thử viên Công cụ kiểm

thử tự động

2: Thực hiện kiểm thử 1: Đối tượng kiểm thử

3: Dữ liệu kiểm thử

4: Kết quả kiểm thử

Hình 3.8: Biểu đồ hợp tác

Biểu đồ hợp tác là một cách khác để thể hiện một thủ tục. Khác với biểu đồ trình tự là tập trung thể hiện sự tƣơng tác giữa các đối tƣợng theo trình tự thời gian, biểu đồ hợp tác tập trung thể hiện quan hệ giữa các đối tƣợng.

Kiểm thử viên lựa chọn đối tƣợng kiểm thử, nhập dữ liệu kiểm thử, hệ thống thực hiện kiểm thử và trả về kết quả.

3.3.6 Biểu đồ lớp

Các lớp thực thể để mô tả các đối tƣợng đƣợc lƣu trữ trong hệ thống. Ta có thể tìm ra các lớp từ những danh từ liên quan đến lĩnh vực của bài toán đã đƣợc mô tả trong các ca sử dụng.

Hệ thống có các lớp đối tƣợng sau: TestProControl, ExcelHelper, TestScript, TestData.

TestProControl - MenuControl - xApp - openAssemblyFile - openScriptFile ExcelHelper - xBook - xSheet - range TestScript - DUTAsm - m_typesDUT - cnamespace - types - objReturnStub TestData - tempTestProjDir - XlsReportFilename - xlsDataStoreFilename Hình 3.9:Biểu đồ lớp 3.3.7 Mô hình dữ liệu

Dữ liệu phân tích cấu trúc file, dữ liệu đầu vào và kết quả đầu ra đƣợc lƣu trữ và thể hiện thông qua định dạng bảng tính excel hoặc dữ liệu có cấu trúc xml.

3.4 Chạy thử chƣơng trình

Màn hình chính

Màn hình chính của hệ thống thể hiện danh sách các hình thức kiểm thử cho kiểm thử viên lựa chọn.

Hình 3.10: Cửa sổ giao diện chính

Lựa chọn hình thức kiểm thử đơn vị (Unit Test)

Trong hình thức kiểm thử đơn vị, kiểm thử viên chọn file thƣ viện hoặc file đã biên dịch của phần mềm để tiến hành kiểm thử bằng công cụ. Định dạng file cho phép là .exe hoặc .dll.

Hình 3.11: Cửa sổ chọn file phân tích

Lựa chọn các đơn vị trong danh sách để kiểm thử

Sau khi chọn file chƣơng trình hoặc thƣ viện, hệ thống sẽ tiến hành phân tích file thành các đơn vị độc lập. Danh sách đơn vị sẽ đƣợc hiển thị cho phép kiểm thử viên lựa chọn để tiến hành kiểm thử và thực hiện trong bƣớc tiếp theo. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.12: Cửa sổ chọn thuộc tính kiểm thử

File chứa dữ liệu kiểm thử

Từ các đơn vị kiểm thử đƣợc lựa chọn trong phần trƣớc, công cụ sẽ phân tích và lƣu trữ cấu trúc của các đơn vị cùng với dữ liệu đầu vào kiểm thử ra một file excel, file này thể hiện thông tin chi tiết của từng thành phần, cũng đồng thời là file dữ liệu để thực thi kịch bản kiểm thử (Test Script).

Hình 3.13: File dữ liệu phân tích thuộc tính

Sinh kịch bản kiểm thử

File cấu trúc và dữ liệu kiểm thử là đầu vào để công cụ tính toán và sinh ra kịch bản kiểm thử (Test Script). Kịch bản kiểm thử sẽ là một file thực thi đƣợc viết bằng ngôn ngữ C# hoặc VB.NET.

Hình 3.14: Cửa sổ tạo file kịch bản kiểm thử

Thực thi kịch bản kiểm thử

Sau khi có kịch bản kiểm thử và file dữ liệu kiểm thử, hệ thống sẽ tiến hành thực thi kịch bản kiểm thử và trả về kết quả dƣới dạng một file excel. Kiểm thử viên sẽ dựa vào file kết quả để xác định lỗi xảy ra trong việc thực thi các thành phần cụ thể của phần mềm, và có những thông tin tới bộ phận phát triển để sửa lỗi.

Hình 3.15: Cửa sổ thực hiện kiểm thử

3.5 Thử nghiệm và đánh giá

Công cụ đã đạt đƣợc mục tiêu đặt ra là kiểm thử chức năng cho các bộ thƣ viện, chƣơng trình đóng gói, nhằm đảm bảo từng đối tƣợng, thành phần hoạt động đúng chức năng. Tuy mới mang tính chất thử nghiệm trên một mảng yêu cầu của kiểm thử phần mềm, nhƣng công cụ cũng đã thực hiện đƣợc đầy đủ quy trình của một hình thức kiểm thử từ việc lựa chọn thành phần kiểm thử, sinh kịch bản kiểm thử cho tới thực thi kiểm thử và trả về kết quả.

Công cụ đƣợc phát triển hƣớng tới tính đa nền, mô hình này có thể áp dụng để triển khai trên các nền tảng ngôn ngữ và hệ điều hành khác nhƣ: java, C++,…

Bên cạnh đó vẫn còn tồn tại những nhƣợc điểm mà công cụ cần bổ sung, chỉnh sửa thêm là hỗ trợ nhiều hình thức dữ liệu hơn (dữ liệu nhị phân, dữ liệu dạng list,…), hỗ trợ lƣu trữ dữ liệu trong SQL Server và thông báo kết quả kiểm thử dƣới nhiều hình thức khác nhau nhƣ xuất ra file .doc, .html,…

KẾT LUẬN

Thực tiễn đã cho thấy tầm quan trọng của kiểm thử phần mềm, nhất là trong giai đoạn hiện nay khi phần mềm không chỉ để giải quyết những bài toán đơn giản mà nó đã đƣợc áp dụng rộng rãi trong tất cả các lĩnh vực của nền kinh tế - xã hội từ hệ thống quản lý của một cửa hàng nhỏ cho tới những giải pháp ERP áp dụng cho hình thức công ty, tổng công ty. Tính phức tạp của phần mềm từ đó cũng tăng lên, trên thực tế nguồn lực giành cho kiểm thử những hệ thống này cũng tăng rất cao, từ đó cần có những giải pháp để công việc kiểm thử đƣợc thực hiện một cách hiệu quả và giảm tối đa chi phí cho phần mềm, yêu cầu này càng thêm cấp thiết trong thời kỳ kinh tế khó khăn hiện nay.

Công cụ kiểm thử phần mềm tự động sẽ giảm bớt đƣợc một phần rất lớn khối lƣợng công việc lặp đi lặp lại, đồng thời nó sẽ phát huy tốt trong công tác kiểm thử hồi quy.

Luận văn đã tổng hợp các thông tin về kiểm thử phần mềm, các thể loại kiểm thử và chỉ ra đƣợc sự cần thiết phải có kiểm thử phần mềm, lợi ích và sự cần thiết của công cụ kiểm thử phần mềm tự động.

Để xây dựng một công cụ kiểm thử tự động cần nắm vững đƣợc mô hình phát triển phần mềm, các hình thức kiểm thử phần mềm. Bên cạnh đó cũng cần có kiến thức về phát triển phần mềm hƣớng đối tƣợng và cần nắm đƣợc cấu trúc, hoạt động ở mức nền tảng của một sản phẩm phần mềm nhƣ Net Framework, Java Virtual Machine.

Trong phạm vi nghiên cứu, luận văn cũng đã thực hiện quá trình nghiên cứu, xác định hình thức tiếp cận và xây dựng lên mô hình đồng thời thiết kế và phát triển thành công một công cụ kiểm thử phần mềm tự động và hoàn toàn độc lập so với các hệ thống phần mềm.

Với những lƣợng kiến thức đạt đƣợc qua luận văn, ta có thể áp dụng cho việc nghiên cứ phát triển thêm các hình thức kiểm thử khác.

Hướng phát triển của luặn văn:

Một trong những định hƣớng mà tác giả dự định phát triển trong thời gian tới là xây dựng công cụ kiểm thử tự động cho các hình thức kiểm thử khác: kiểm thử giao

diện ngƣời dùng, kiểm thử chịu tải, kiểm thử tích hợp, và kiểm thử mức hệ thống… Sau đó sẽ nghiên cứu mở rộng về tính đa nền, đa ngôn ngữ của công cụ.

Mong muốn của tác giả là có thể hoàn thiện để áp dụng công cụ trực tiếp vào quy trình phát triển phần mềm tại cơ quan mà tác giả đang công tác, xa hơn nữa có thể trở thành một sản phẩm đóng gói đƣợc thƣơng mại hóa trên thị trƣờng.

TÀI LIỆU THAM KHẢO

1. Alan Page, Ken Johnston, Bj Rollison (2008), “How We Test Software at Microsoft (Paperback)” Microsoft Press, 1, 405

2. Alan M. Davis (1993), “Software Requirements: Objects, Functions and States”

Prentice-Hall, 2, 521

3. Boris Beizer (1995), “Black-Box Testing - Techniques for functional testing of software and systems” John Wiley and Sons, 1, 294 (adsbygoogle = window.adsbygoogle || []).push({});

4. Brett Pettichord, Cem Kaner, James Bach, (2002), “Lessons Learned in Software Testing” John Wiley and Sons, 1, 286

5. Bill Hetzel (1988), “The Complete Guide to Software Testing” QED Information Sciences, 2, 283

6. Dorothy Graham, Mark Fewster (1999), “Software Test Automation” Addison- Wesley, 1, 574

7. Elfriede Dustin, Jeff Rashka, John Paul (2000), “Automated Software Testing : Introduction, management and performance” Addison-Wesley, 1, 575

8. Elfriede Dustin, Jeff Rashka, Douglas McDiarmid (2002), “Quality Web Systems: Performance, Security and Usability” Addison-Wesley, 1, 318

9. Kanglin Li, Menqi Wu (2004), “Effective Software Test Automation: Developing an Automated Software Testing Tool” Sybex, 1, 400

10. Robert V. Binder (2000), “Testing Object-Oriented Systems : Models, patterns and tools” Addison-Wesley, 1, 1191

11. Rex Black (1999). “Managing the Testing Process” Microsoft Press, 1, 381

12. Shel Siegel (1996), “Object Oriented Software Testing: A Hierarchical Approach”

Một phần của tài liệu Nghiên cứu kỹ thuật kiểm thử phần mềm và ứng dụng trên môi trường DOT NET (Trang 67)