Đặ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.