Luận văn: Kỹ thuật sinh Test Case tự động từ Yêu Cầu Phần Mềm (ĐHCN - ĐHQGHN)

Luận văn thạc sĩ: Nghiên cứu kỹ thuật sinh test case tự động từ yêu cầu phần mềm. Giải pháp nâng cao hiệu quả kiểm thử, giảm chi phí phát triển.

Chuyên ngành

Kỹ thuật phần mềm

Người đăng

Ẩn danh

Thể loại

Luận Văn Thạc Sĩ

2008

69
0
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỤC LỤC

1. CHƢƠNG 1. Tầm quan trọng của các yêu cầu phần mềm

1.1. Khái niệm về Test case

1.2. Vấn đề sinh Test case từ các yêu cầu phần mềm

2. CHƢƠNG 2. TỔNG QUAN VỀ QUÁ TRÌNH SINH TEST CASE TỰ ĐỘNG

2.1. Tổng quan về các phƣơng pháp sinh Test case

2.2. Sinh Test case dựa trên đặc tả

2.3. Sinh Test case dựa trên mô hình

2.4. Sinh Test case hƣớng đƣờng dẫn

2.5. Kiểm thử phần mềm và UML

3. CHƢƠNG 3. CÁC KỸ THUẬT VÀ PHƢƠNG PHÁP SINH TEST CASE TỰ ĐỘNG

3.1. Kỹ thuật sinh Test case dựa trên đặc tả

3.2. Các phƣơng thức đặc tả trạng thái SCR

3.3. Kỹ thuật sinh ra Test case dựa theo đặc tả của SCR

3.4. Kỹ thuật tạo Test case cho đặc tả UML

3.5. Các thuận toán sinh Test case dựa trên đặc tả

3.6. Kỹ thuật sinh Test case dựa trên mô hình

3.7. Tạo ra Test case bằng việc sử dụng các biểu đồ cộng tác UML

3.8. Tạo Test case dựa trên Use case cải tiến

4. CHƢƠNG 4. PHÁT TRIỂN CHƢƠNG TRÌNH ỨNG DỤNG

4.1. Tóm tắt quá trình sinh Test case tự động

4.2. Các Test case của ví dụ

4.3. Tính ứng dụng, các ƣu điểm và nhƣợc điểm

DANH MỤC CÁC KÝ HIỆU THUẬT NGỮ VIẾT TẮT

DANH MỤC CÁC HÌNH VẼ

DANH MỤC CÁC BẢNG BIỂU

MỞ ĐẦU

Tóm tắt

I. Tổng Quan Sinh Test Case Tự Động Từ Yêu Cầu 55 ký tự

Việc kiểm thử phần mềm đóng vai trò then chốt trong việc đảm bảo chất lượng và độ tin cậy của sản phẩm. Quá trình này ngày càng được chú trọng tự động hóa, đặc biệt là công đoạn sinh test case. Thay vì thực hiện thủ công tốn kém và dễ sai sót, sinh test case tự động từ yêu cầu phần mềm mang lại nhiều lợi ích thiết thực. Các tổ chức phần mềm dành một phần ngân sách đáng kể cho giai đoạn kiểm thử, và một hệ thống phần mềm được kiểm thử tốt sẽ được khách hàng chấp nhận, đáp ứng yêu cầu của họ. Hiệu quả của quá trình kiểm thử phụ thuộc vào số lượng lỗi được phát hiện và sửa chữa trước khi phát hành hệ thống. Điều này, đến lượt nó, phụ thuộc vào chất lượng của các test case được tạo ra. Việc sinh test case tự động không chỉ tiết kiệm chi phí mà còn cải thiện độ chính xác, phạm vi bao phủ và khả năng bảo trì của các test case. Có nhiều phương pháp tiếp cận khác nhau để sinh test case, từ ngẫu nhiên đến thông minh, dựa trên đặc tả hoặc mô hình. Việc lựa chọn phương pháp phù hợp phụ thuộc vào đặc thù của dự án và yêu cầu về chất lượng. Theo tài liệu nghiên cứu, UML (Unified Modeling Language) ngày càng được sử dụng rộng rãi để mô hình hóa hệ thống và sinh test case dựa trên mô hình. Sinh test case tự động giúp phát hiện sớm các lỗi, giảm chi phí và nâng cao chất lượng phần mềm. Mục tiêu là phát triển các kỹ thuật cho việc tạo ra bộ điều khiển test với ít thao tác của con người. "Một Test case có thể được viết ra trực tiếp từ yêu cầu người dùng, từ các yêu cầu hệ thống, hoặc từ các use case." (ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ).

1.1. Tầm quan trọng của kiểm thử tự động 40 ký tự

Trong quá trình phát triển phần mềm, việc kiểm thử đóng vai trò không thể thiếu để đảm bảo chất lượng sản phẩm. Kiểm thử tự động giúp giảm thiểu sai sót, tăng tốc độ và tiết kiệm chi phí so với phương pháp thủ công. Theo nghiên cứu từ Đại học Quốc Gia Hà Nội, kiểm thử tự động giúp đồng nhất hóa công việc viết Test case bằng các phương pháp và kỹ thuật tự động nhằm giảm bớt công sức và thời gian của các tester, làm cho chất lượng của Test case tốt hơn. Các công ty phần mềm và các tổ chức phát triển dự án phần mềm sẽ phát sinh một vấn đề là: Tester nào viết tài liệu Test case tốt, có hiệu quả thì chất lượng phần mềm sẽ tốt hơn những dự án có Test case tồi. Việc sử dụng các công cụ và kỹ thuật tự động hóa giúp chuẩn hóa quy trình kiểm thử, đảm bảo tính nhất quán và dễ dàng bảo trì. Các kỹ sư phần mềm phát hiện ra sự không nhất quán và mập mờ trong đặc tả các yêu cầu và các tài liệu thiết kế. Điều này sẽ chắc chắn sẽ làm giảm chi phí của việc xây dựng hệ thống phần mềm khi các lỗi được loại bỏ sớm trong vòng đời phát triển của sản phẩm.

1.2. Ưu điểm của sinh Test Case tự động 45 ký tự

Việc sinh test case tự động mang lại nhiều lợi ích so với phương pháp thủ công. Thứ nhất, nó giúp giảm thiểu thời gian và công sức của các tester, cho phép họ tập trung vào các nhiệm vụ phức tạp hơn. Thứ hai, nó đảm bảo tính nhất quán và đầy đủ của các test case, giảm thiểu nguy cơ bỏ sót các trường hợp quan trọng. Thứ ba, nó giúp cải thiện khả năng bảo trì của các test case, cho phép dễ dàng cập nhật và điều chỉnh khi yêu cầu phần mềm thay đổi. Các yêu cầu của người dùng đã được quan tâm nhiều trên thế giới, nhưng ở Việt Nam các nghiên cứu và ứng dụng chỉ mới ở bước đầu. Công việc sinh Test case tự động từ yêu cầu người dùng một cách có hiệu quả trong quá trình kiểm thử là vấn đề cần thiết và bức xúc của các công ty sản xuất phần mềm cũng như các tổ chức thực hiện phát triển dự án phần mềm.

II. Thách Thức Trong Sinh Test Case Tự Động Hiệu Quả 58 ký tự

Mặc dù mang lại nhiều lợi ích, sinh test case tự động cũng đối mặt với không ít thách thức. Một trong những thách thức lớn nhất là đảm bảo tính chính xác và đầy đủ của các test case được sinh ra. Các công cụ và kỹ thuật tự động hóa cần phải được cấu hình và điều chỉnh phù hợp với đặc thù của từng dự án để đảm bảo rằng các test case bao phủ hết các yêu cầu và chức năng quan trọng của phần mềm. Ngoài ra, việc quản lý và bảo trì các test case được sinh tự động cũng đòi hỏi sự đầu tư về thời gian và nguồn lực. Theo tài liệu nghiên cứu, việc kiểm thử dựa trên đặc tả và chương trình đòi hỏi sự chính xác của các kết quả chương trình phải được kiểm tra với các yêu cầu hoặc đặc tả. Tuy nhiên, trong cả hai trường hợp, đánh giá sự phù hợp của test không phụ thuộc vào các kết quả của việc kiểm tra này. Thêm vào đó, sự định nghĩa về các tiêu chuẩn được dựa trên đặc tả đã đưa trước đó không coi là sự tồn tại của một đặc tả chuẩn.

2.1. Vấn đề đặc tả yêu cầu không rõ ràng 43 ký tự

Một trong những thách thức lớn nhất trong sinh test case tự động là việc đặc tả yêu cầu không rõ ràng, mơ hồ hoặc không đầy đủ. Nếu yêu cầu không được mô tả chi tiết và chính xác, các công cụ tự động hóa sẽ gặp khó khăn trong việc sinh ra các test case phù hợp và hiệu quả. Nghiên cứu cho thấy yêu cầu sai có thể tạo ra hàng loạt các lỗi thiết kế. Vì vậy để một sản phẩm phần mềm tốt thì điều đầu tiên quan trọng là chúng ta phải có các yêu cầu tốt.

2.2. Khó khăn trong lựa chọn công cụ phù hợp 47 ký tự

Trên thị trường hiện nay có rất nhiều công cụ sinh test case tự động khác nhau, mỗi công cụ có những ưu điểm và nhược điểm riêng. Việc lựa chọn công cụ phù hợp với dự án cụ thể đòi hỏi sự hiểu biết sâu sắc về các tính năng, khả năng và hạn chế của từng công cụ. Các ngôn ngữ mô hình được sử dụng để có được đặc tả và sinh ra các Test case. Kể từ khi UML (Unified Modeling Language) là ngôn ngữ được sử dụng rộng rãi nhất thì nhiều nghiên cứu sử dụng lược đồ UML như state-chart diagrams, use-case diagrams, sequence diagrams,… để sinh ra các Test case và dẫn đến việc sinh ra Test case dựa trên mô hình.

2.3. Chi phí đầu tư ban đầu 30 ký tự

Việc triển khai sinh test case tự động đòi hỏi sự đầu tư ban đầu về chi phí mua phần mềm, đào tạo nhân viên và tích hợp vào quy trình phát triển phần mềm hiện có. Chi phí này có thể là một rào cản đối với các doanh nghiệp nhỏ và vừa. Cần xem xét đến cách tiếp cận trong việc sinh ra Test case tự động lệ thuộc vào các tính toán phức tạp để xác định Test case. 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.

III. Phương Pháp Sinh Test Case Tự Động Dựa Trên UML 59 ký tự

Một trong những phương pháp phổ biến và hiệu quả để sinh test case tự động là dựa trên UML (Unified Modeling Language). UML là một ngôn ngữ mô hình hóa trực quan, cho phép mô tả hệ thống phần mềm dưới dạng các biểu đồ khác nhau, như biểu đồ lớp, biểu đồ trạng thái, biểu đồ trình tự,... Các biểu đồ này cung cấp thông tin chi tiết về cấu trúc, hành vi và tương tác của hệ thống, từ đó có thể sử dụng để sinh ra các test case một cách tự động. Theo tài liệu nghiên cứu, UML đã nhận được một sự quan tâm lớn từ các cộng đồng phát triển và thiết kế phần mềm, và các công việc đang được thực hiện để tăng cường và mở rộng các tính năng của nó. Tuy nhiên, cộng đồng test phần mềm đã không quan tâm nhiều và thảo luận nhiều về UML, sự thiếu hụt lớn khi tiêu chuẩn mô hình hóa được phát triển. Đây là vấn đề cần quan tâm, bởi vì trong các tổ chức phát triển phần mềm, chi phí của việc test có thể chiếm hơn 40% tổng chi phí phát triển cho một hệ thống phần mềm.

3.1. Sinh Test case từ biểu đồ trạng thái 44 ký tự

Biểu đồ trạng thái mô tả các trạng thái khác nhau của một đối tượng hoặc hệ thống và các chuyển đổi giữa các trạng thái đó. Từ biểu đồ trạng thái, có thể sinh ra các test case để kiểm tra xem hệ thống có chuyển đổi trạng thái đúng đắn khi nhận được các sự kiện hoặc tín hiệu khác nhau hay không. Các kỹ thuật đã sử dụng các biểu đồ trạng thái UML như một cở sở và 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ách tiếp cận trong một mẫu, chỉ ra các lớp và đặc tả biểu đồ trạng thái tương ứng cho hành vi của lớp đó, định rõ ánh xạ đưa ra bằng sự kết hợp các mã với đặc tả. Sau đó tester chọn các tiêu chuẩn để chỉnh sửa. Mục tiêu là để xác định các đặc tả được cải tiến được dựa trên các tiêu chuẩn chỉnh sửa thích hợp cho hệ thống và để phát triển các kỹ thuật cho việc tạo ra bộ điều khiển test với ít nhất thao tác của con người.

3.2. Sinh Test case từ biểu đồ lớp 39 ký tự

Biểu đồ lớp mô tả cấu trúc tĩnh của hệ thống, bao gồm các lớp, thuộc tính và mối quan hệ giữa các lớp. Từ biểu đồ lớp, có thể sinh ra các test case để kiểm tra xem các lớp có tương tác đúng đắn với nhau và các thuộc tính có được khởi tạo và cập nhật đúng cách hay không. Các biểu đồ lớp chỉ một tập các lớp, các giao diện và các sự cộng tác, các mối quan hệ của chúng.

3.3. Sinh Test case từ biểu đồ trình tự 42 ký tự

Biểu đồ trình tự mô tả các tương tác giữa các đối tượng theo thời gian. Từ biểu đồ trình tự, có thể sinh ra các test case để kiểm tra xem các đối tượng có trao đổi thông tin đúng đắn và theo đúng trình tự mong muốn hay không. UML có một phương pháp mô hình trước đó được biết đến là kỹ thuật mô hình đối tượng (Object Modeling Technique) mà đã thêm một số mô hình chức năng cũng được sử dụng cho quá trình test.

IV. Kỹ Thuật Kiểm Thử Dựa Trên Đặc Tả Yêu Cầu SCR 59 ký tự

Kiểm thử dựa trên đặc tả lấy được các thông tin test từ một đặc tả của phần mềm khi test. Tuy nhiên, khi việc thực hiện được phát triển không chuẩn mực từ một đặc tả chuẩn mực, đặc tả có thể đóng một vai trò chủ yếu trong quá trình test bằng cách cho phép chúng ta thu được các đầu vào test và các kết quả mong đợi từ các đầu vào này. Có hai vai trò chính một đặc tả có thể đóng vai trò trong test phần mềm, cung cấp các công tin cần thiết để kiểm tra hoặc là đầu ra của chương trình có đúng hay không, cung cấp thông tin để lựa chọn các Test case và để đánh giá sự phù hợp của test. Theo đó thì trong số đó thì SCR (Software Cost Reducation Specifications) là một mô hình dựa trên trạng thái phù hợp với việc xác định các tiêu chuẩn test cho các đặc tả phần mềm. Dưới đây là một số khía cạnh và kỹ thuật liên quan đến việc sinh test case tự động dựa trên yêu cầu phần mềm và SCR, cũng như một số ví dụ minh họa.

4.1. Đặc điểm của Đặc tả SCR 29 ký tự

Đặc tả SCR xây dựng các bảng để xác định các yêu cầu hành vi cho các hệ thông phần mềm được gắn vào thời gian thực tế. Một lợi ích của phương pháp SCR đó là cấu trúc được xác định tốt cho phép các phân tích cấu trúc được sử dụng để kiểm tra sự đồng nhất, tính hoàn chỉnh của đặc tả. Bên cạnh đó, các ứng dụng SCR cung cấp khả năng phát hiện dấu vết từ các yêu cầu phần mềm tới mã nguồn. Trong một đặc tả SCR, một mode class là một máy trạng thái mà trạng thái của nó được gọi là system modes hoặc modes. Hành vi của Complex system có thể được xác định bởi một vài mode class hoạt động song song.

4.2. Mô hình Kiểm thử thỏa mãn thuộc tính 43 ký tự

Mô hình kiểm thử này sử dụng các điều kiện đầu vào, các biến và hằng đúng để tạo ra kết quả, sau đó sinh ra các Test case để thỏa mãn các yêu cầu riêng biệt trong một kết quả xác nhận. Việc này liên quan chặt chẽ đến việc nghiên cứu sự tạo ra kiểm thử tự động được dựa trên mã hóa trước đó. Việc kiểm thử nhằm mục đích phát hiện ra các lỗi, bao gồm cả vùng dữ liệu đưa vào. Đặc tính kiểm thử, cái mà sau đó được lọc trong các tập lệnh. Mức độ chỉnh sửa kế tiếp đòi hỏi các Test case ít hơn nhiều so với mức độ chỉnh sửa đầy đủ các thuộc tính, nhưng nếu mức độ chỉnh sửa đầy đủ các thuộc tính được sử dụng, việc kiểm thử sẽ thỏa mãn được mức độ chỉnh sửa kế tiếp. Do vậy chỉ một trong hai mức độ nên được sử dụng.

4.3. Xây dựng tập lệnh kiểm thử 32 ký tự

Mỗi đặc tả kiểm thử được sử dụng để xây dựng một tập lệnh. Các tập lệnh kiểm thử thực sự phải phản ánh cú pháp đưa vào của chương trình, vì vậy sự am hiểu về cú pháp đưa vào của chương trình được yêu cầu cho bước này. Nó là có thể để tự động hóa hoàn toàn tất cả quá trình lấy ra này. Nếu một dạng máy có thể đọc được của bảng đặc tả là sẵn có, các điều kiện chuyển tiếp có thể được đọc trực tiếp từ bảng. Đồ thị đặc tả sau đó có thể được tự động tạo ra từ các trạng thái và điều kiện chuyển tiếp.

V. Ứng Dụng Và Phát Triển Chương Trình Sinh Test Case 56 ký tự

Việc phát triển chương trình ứng dụng quá trình sinh test case tự động được tóm tắt theo 2 gạch đầu dòng chính. Tóm tắt quá trình sinh test case tự động, trong đó bao gồm phát triển các điều kiện chuyển tiếp, phát triển các đồ thị đặc tả, yêu cầu chỉnh sửa và thuộc tính, xâu dựng các đặc tả kiểm thử, xâu dựng các tập lệnh kiểm thử. Song song đó, các Test case của ví dụ cũng được nêu ra sau khi đã ứng dụng các bước trên, kết quả của việc thực hiện test sẽ được ghi lại, đánh giá và tổng hợp. Qua đó nêu lên các tính ứng dụng, các ưu điểm và các nhược điểm của chương trình sau quá trình sinh test case tự động.

5.1. Tóm tắt quá trình sinh Test Case 36 ký tự

Để tạo ra các Test case một cách hiệu quả và có chuẩn về chất lượng, việc nghiên cứu các phương pháp và kỹ thuật để tự động tạo ra các Test case là cần thiết. Việc tạo ra Test case một cách tự động cũng làm giảm bớt công sức và thời gian của các tester, giúp giảm bớt chi phí phát triển phần mềm. Qúa trình tạo ra các Test case sẽ giúp các tester phát hiện ra các vấn đề mâu thuẫn hoặc chưa rõ ràng của các yêu cầu phần mềm. Nếu bước này được làm sớm, các vấn đề có thể được loại bỏ sớm, tiết kiệm thời gian và nguồn lực khi phát triển các dự án phần mềm.

5.2. Các Test Case của ví dụ 29 ký tự

Sau khi có các thông tin dữ liệu cần thiết và chạy chương trình theo các bước đã được đưa ra, các thông tin của các Test case sẽ được đưa ra để người dùng có thể năm bắt kết quả của quá trình kiểm tra.

5.3. Tính ứng dụng và các ưu nhược điểm 41 ký tự

Cuối cùng, việc sinh Test case sẽ được đánh giá về các ưu và nhược điểm, qua đó thấy được tính ứng dụng của chương trình sinh test case để từ đó có thể đưa ra các cải tiến bổ sung và phát triển.

VI. Kết Luận Tương Lai Sinh Test Case Tự Động 57 ký tự

Việc sinh test case tự động từ yêu cầu phần mềm là một lĩnh vực đầy tiềm năng, hứa hẹn mang lại nhiều lợi ích cho ngành công nghiệp phần mềm. Tuy nhiên, để khai thác tối đa tiềm năng này, cần phải tiếp tục nghiên cứu và phát triển các công cụ, kỹ thuật và phương pháp mới, đồng thời giải quyết các thách thức còn tồn tại. Nghiên cứu chỉ ra, có các hướng tiếp cận khác nhau trong việc sinh Test case tự động: thứ nhất là có thể sinh Test case tự động dựa trên đặc tả từ một file input đã được định sẵn; thứ hai là sinh Test case tự động dựa trên code, chương trình có sẵn; thứ ba là sinh Test case tự động dựa trên các mô hình UML. Trong ba hướng tiếp cận trên chúng tôi chọn hướng tiếp cận thứ ba và nghiên cứu các phương pháp theo hướng tiếp cận này.

6.1. Tổng kết về sinh Test Case tự động 42 ký tự

Việc sinh Test case tự động, đồng thời đề ra hướng nghiên cứu tiếp theo, với mục đích tạo Test case một cách hiệu quả, có chất lượng, giúp giảm bớt công sức và thời gian của các tester, làm giảm bớt chi phí phát triển phần mềm và chất lượng phần mềm được nâng cao hơn.

6.2. Hướng nghiên cứu và phát triển tiếp theo 47 ký tự

Trong tương lai, việc nghiên cứu và phát triển các kỹ thuật AIMachine Learning cho sinh test case tự động sẽ mở ra những cơ hội mới. Các thuật toán AI có thể được sử dụng để phân tích yêu cầu phần mềm, nhận diện các mẫu và quy luật, từ đó sinh ra các test case thông minh và hiệu quả hơn. Đồng thời, các công cụ và kỹ thuật sinh test case tự động cần phải được tích hợp chặt chẽ hơn vào quy trình phát triển phần mềm, cho phép kiểm thử liên tục và tự động hóa toàn diện.

24/09/2025

Trích đoạn nội dung tài liệu

Đặt vấn đề, đưa ra các vấn đề cần thiết và cấp bách trong việc nghiên cứu và xây dựng một kỹ thuật sinh Test case hiệu quả từ yêu cầu người dùng.  Chƣơng 2: Giới thiệu tổng quan về sinh Test case tự động. Trên cơ sở đó chọn hướng tiếp cận sẽ đi sâu vào nghiên cứu ở Chương 3.  Chƣơng 3: Trình bày các phương pháp và kỹ thuật sinh Test case tự động hiện có.

Từ đó đề xuất một kỹ thuật sinh Test case tự động và phân tích ưu điểm của nó so với các kỹ thuật trước.  Chƣơng 4: Trình bày quá trình sinh Test case hiệu quả dựa trên kỹ thuật được đề xuất. Đồng thời xây dựng chương trình demo quá trình sinh Test case tự động. Sau khi nghiên cứu và thử nghiệm, trong phần Kết luận có nêu một số tổng kết và nhận xét về việc sinh Test case tự động, đồng thời đề ra hướng nghiên cứu tiếp theo.

TIEU LUAN MOI download : skknchat@gmail.com -6- CHƢƠNG 1. Tầm quan trọng của các yêu cầu phần mềm Các yêu cầu phần mềm là rất quan trọng với mọi dự án phần mềm. Các dự án thành công hoặc thất bại có nguyên nhân là do chất lượng của các yêu cầu. Các yêu cầu này cấu thành phạm vi của tất cả các công việc sau đó cho nhóm phát triển dự án.

Không có các yêu cầu tốt, các dự án sẽ thất bại, bị chậm trễ, tốn kém, hoặc làm ra các hệ thống không bao giờ được sử dụng. Các vấn đề yêu cầu nên được cố định sớm, trước khi vào giai đoạn thiết kế, bởi vì các vấn đề là do các yêu cầu kém có khuynh hướng gắn chặt vào trong thiết kế và khó để cho việc sửa chữa sau này. Những người phát triển và người dùng có một cách nhìn khác nhau từ những yêu cầu khi người phát triển xem xét yêu cầu từ quan điểm làm thế nào để thực hiện còn người dùng chỉ cảm nhận vấn đề là sử dụng nó như thế nào. Cách an toàn nhất để bảo đảm rằng nhu cầu của người dùng đã được đáp ứng những gì đã được đưa ra, ta nên làm hai tài liệu song song, những gì người dùng cần, và những gì một hệ thống sẽ phải làm để đáp ứng nhu cầu đó.

Đây là các yêu cầu người dùng và các đặc tả hệ thống theo thứ tự định sẵn. Vậy tại sao cần có các yêu cầu phần mềm tốt? Bất kỳ lỗi nào được phát hiện trong giai đoạn đầu trong quá trình phát triển dự án phần mềm là kết quả rất quan trọng. Nếu ở các giai đoạn sau lỗi mới được phát hiện ra thì chi phí cho việc sửa chữa hệ thống phần mềm sẽ tốn kém hơn rất nhiều. Nếu những người thiết kế hệ thống hướng tới mục tiêu không đúng, việc thực thi hệ thống sẽ đi chệch với mong muốn ban đầu.

Một yêu cầu sai có thể tạo ra hàng loạt các lỗi thiết kế. Vì vậy để một sản phẩm phần mềm tốt thì điều đầu tiên quan trọng là chúng ta phải có các yêu cầu tốt. Khái niệm về Test case Trong quá trình phát triển dự án phầm mềm, thông thường một quy trình kiểm thử có các bước cơ bản như sau: lập kế hoạch, thiết kế Test, phát triển test script, thực hiện test và đánh giá (xem Hình 1) Thực hiện Test Lập kế Thiết kế Phát triển hoạch Test Test Script Đánh giá Hình 1: Một quy trình kiểm tra cơ bản. TIEU LUAN MOI download : skknchat@gmail.com -7- Trong đó Test case đượ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 cho mỗi phiên bản phần mềm. Giai đoạn thiết kế test là hết sức quan trọng, nó bảo đảm tất cả các tình huống kiểm tra "quét" hết tất cả yêu cầu cần kiểm tra. 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. Để làm được việc đó, trước hết phải hiểu Test case là gì? Một Test case có thể coi là một tình huống kiểm thử, được thiết kế để kiểm thử một đối tượng có thỏa mãn yêu cầu đặt ra hay không.

Một Test case thường bao gồm 3 phần cơ bản: • Mô tả: đặc tả các điều kiện cần có để tiến hành kiểm thử. • Đầu vào: đặc tả đối tượng hay dữ liệu cần thiết, được sử dụng làm đầu vào để thực hiện việc kiểm thử. • Kết quả mong muốn: kết quả trả về từ đối tượng kiểm thử, chứng tỏ đối tượng đã thỏa mãn yêu cầu. Test case có một ý nghĩa vô cùng quan trọng, mục đích đưa ra các trường hợp test nhằm phát hiện ra các lỗi nhiều nhất có thể, để cho các dự án phát triển phần mềm có chất lượng tốt hơn.

Vấn đề sinh Test case từ các yêu cầu phần mềm. Trong quá trình phát triển dự án phần mềm, thường công việc tạo ra các Test case từ yêu cầu người dùng do các Tester phụ trách. Nhưng không phải Tester nào viết các tài liệu Test case này cũng như nhau.Vì vậy trong các công ty phần mềm cũng như các tổ chức thực hiện dự án phần mềm sẽ phát sinh một vấn đề là: Tester nào viết tài liệu Test case tốt, có hiệu quả thì chất lượng phần mềm sẽ tốt hơn những dự án có các Test case tồi (có nhiều trường hợp test trùng lặp nhau hoặc thiếu các trường hợp test). Vậy chúng ta phải chuẩn hóa và đồng bộ hóa để làm sao tạo ra Test case một cách hiệu quả và có chuẩn về chất lượng.

Để làm điều này, chúng ta phải nghiên cứu các phương pháp và kỹ thuật để tự động tạo ra các Test case. Việc tạo ra Test case một cách tự động cũng làm giảm bớt công sức và thời gian của các tester, giúp giảm bớt chi phí phát triển phần mềm. Qúa trình tạo ra các Test case sẽ giúp các tester phát hiện ra các vấn đề mâu thuẫn hoặc chưa rõ ràng của các yêu cầu phần mềm. Nếu bước này được làm sớm, các vấn đề có thể được loại bỏ sớm, tiết kiệm thời gian và nguồn lực khi phát triển các dự án phần mềm.

Vậy việc nghiên cứu các phương pháp và công cụ sinh Test case một cách tự động từ yêu cầu người dùng rất hữu ích và cần thiết trong quá trình phát triển các dự án phần mềm. Quá trình này nhằm mục đích tạo ra Test case một cách có hiệu quả, có chất lượng. Giúp giảm bớt công sức và thời gian của các tester, làm giảm bớt chi phí phát triển phần mềm và chất lượng phần mềm được nâng cao hơn. TIEU LUAN MOI download : skknchat@gmail.com -8- CHƢƠNG 2.

TỔNG QUAN VỀ QUÁ TRÌNH SINH TEST CASE TỰ ĐỘNG 2. Giới thiệu 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 test bằng tay và tăng độ tin cậy của phần mềm thì chúng ta đang cố gắng thực hiện tự động hóa nó. Một trong những công việc quan trọng trong môi trường test là tạo ra Test case một cách tự động mô tả về cách thức test, mỗi một hệ thống phần mềm nhất định được thiết lập theo một cách thức độc lập.

Chương này trình bày cách nhìn tổng quan về kỹ thuật tạo Test case một cách tự động. Các tổ chức phần mềm sử dụng một phần ngân sách đáng kể của mình để thực hiện các công việc liên quan đến giai đoạn test. Một hệ thống phần mềm test tốt sẽ được kiểm chứng bởi khách hàng trước khi chấp nhận, làm thỏa mãn yêu cầu của khách hàng. Tính hiệu quả của qúa trình xác nhận và kiểm chứng này phụ thuộc vào số lượng lỗi được phát hiện và chỉnh sửa trước khi công bố hệ thống.

Điều này lần lượt phụ thuộc vào chất lượng của các Test case được tạo ra. Các phương pháp khác nhau về việc sinh ra Test case đã được đề xuất. Một Test case là một sự miêu tả cách thức test, mỗi một hệ thống phần mềm nhất định được thiết lập theo một cách thức độc lập. Test case có thể được viết ra trực tiếp từ yêu cầu người dùng, từ các yêu cầu hệ thống, hoặc từ các use case.

Một trong những lợi ích của việc tạo ra Test case từ các đặc tả và thiết kế đó là chúng có thể được sinh ra sớm hơn trong vòng đời phát triển và sẵn sàng để sử dụng trước khi các chương trình được tạo ra. Thêm vào đó, khi các Test case được sinh ra ban đầu các kỹ sư phần mềm phát hiện ra sự không nhất quán và mập mờ trong đặc tả các yêu cầu và các tài liệu thiết kế. Điều này sẽ chắc chắn sẽ làm giảm chi phí của việc xây dựng hệ thống phần mềm khi các lỗi được loại bỏ sớm trong vòng đời phát triển của sản phẩm. Tổng quan về các phương pháp sinh Test case Một vài cách tiếp cận được đưa ra trong việc tạo ra Test case, một số mang tính ngẫu nhiên, có mục đích, định hướng và một số rất thông minh.

Kỹ thuật ngẫu nhiên xác định các Test case dựa trên các giả định. Kỹ thuật định hướng đường dẫn sử dụng các luồng thông tin kiểm soát để xác định một tập hợp các đường dẫn để được bao quát và tạo ra các Test case phù hợp cho các đường dẫn này. Những kỹ thuật này có thể được phân chia thành tĩnh và động. Kỹ thuật tĩnh thường được dựa trên thực thi các ký hiệu mô tả, ngược lại các kỹ thuật động đạt được từ các dữ liệu cần thiết bằng việc chạy chương trình trong khi test.

Kỹ thuật định hướng mục tiêu xác định các Test case bao gồm một mục tiêu đã được lựa chọn chẳng hạn một câu lệnh hoặc nhánh câu TIEU LUAN MOI download : skknchat@gmail. Các kỹ thuật thông minh của các Test case được sinh ra tự động lệ thuộc vào các tính toán phức tạp để xác định Test case. 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. Ngôn ngữ mô hình được sử dụng để có được đặc tả và sinh ra các Test case.

Kể từ khi UML (Unified Modeling Language) là ngôn ngữ được sử dụng rộng rãi nhất thì nhiều nghiên cứu sử dụng lược đồ UML như state-chart diagrams, use-case diagrams, sequence diagrams,… để sinh ra các Test case và dẫn đến việc sinh ra Test case dựa trên mô hình.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ