Tóm tắt Luận văn Nghiên cứu sinh mã kiểm thử tự động dựa trên kịch bản kiểm thử hướng hành vi

pdf 25 trang Minh Thư 17/07/2025 70
Bạn đang xem tài liệu "Tóm tắt Luận văn Nghiên cứu sinh mã kiểm thử tự động dựa trên kịch bản kiểm thử hướng hành vi", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdftom_tat_luan_van_nghien_cuu_sinh_ma_kiem_thu_tu_dong_dua_tre.pdf

Nội dung tài liệu: Tóm tắt Luận văn Nghiên cứu sinh mã kiểm thử tự động dựa trên kịch bản kiểm thử hướng hành vi

  1. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ HỒNG NHUNG NGHIÊN CỨU SINH MÃ KIỂM THỬ TỰ ĐỘNG DỰA TRÊN KỊCH BẢN KIỂM THỬ HƯỚNG HÀNH VI Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã Số: 8480103.01 TÓM TẮT LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà nội, 11/2018
  2. 2 Chương 1: Mở đầu Kiểm thử phần mềm theo hướng kiểm thử hướng hành vi ( BDD – Behavior Driven Testing) là một khái niệm mở rộng của TDD (Test Driven Devlopment). TDD là khái niệm kiểm thử theo hướng kiểm thử từng phần, viết ca kiểm thử trước rồi lập trình sau. Trong kiểm thử hướng hành vi dựa trên yêu cầu của người sử dụng chúng ta xây dựng các ca kiểm thử. Một trong những điểm yếu khi lập trình phần mềm là rất khó để đáp ứng được đúng yêu cầu của người sử dụng, có nhiều nguyên nhân, trong đó có nguyên nhân là người lập trình không hiểu được yêu cầu người dùng. Vì vậy nếu sử dụng được trực tiếp ngôn ngữ của người sử dụng vào các ca kiểm thử thì chúng ta sẽ có được một phần mềm đúng với yêu cầu người sử dụng mà không lãng phía nhiều tài nguyên. Đồng thời kiểm thử tử động với mã kiểm thử hướng hành vi sẽ giúp tiết kiệm nguồn nhân lực kiểm thử, giảm thiểu tối đa chi phí làm phần mềm, sản phẩm. Giải pháp luận văn đưa ra là nghiên cứu sinh các mã kiểm thử tự động từ kịch bản kiểm thử hướng hành vi, đồng thời sử dụng framework Cucumber kết hợp tích hợp các công cụ kiểm thử tự động trong kiểm thử hướng hành vi, từ việc nghiên cứu quy trình xử lý ngôn ngữ tự nhiên dựa trên NLP ( Natural Language Processing) đưa ra giải pháp tự động hoá trong kiểm
  3. 3 thử hướng hành vi. Với một từ điển các ca kiểm thử trên ngôn ngữ tự nhiên, từ dữ liệu đó có một hành vi tương ứng khi đọc đến ca kiểm thử hành vi đối với phần mềm, khi đó mỗi lúc gọi đến kịch bản kiểm thử đó sẽ dẫn đến hành vi xử lý trong phần mềm khác nhau. Luận văn xây dựng một bộ dữ liệu bao gồm các kịch bản kiểm thử, các ca kiểm thử BDD tương ứng. Từ dữ liệu đó, áp dụng ứng dụng NLP và công cụ kiểm thử tự động hướng hành vi để khi gọi đến ca kiểm thử, các kịch bản tử động sinh ra ca kiểm thử BDD tương ứng. Chương mở đầu sẽ nêu lên các vấn đề tổng quan, lý do tác giả nghiên cứu chủ đề và các giải pháp đưa ra. Tiếp theo chương 2 sẽ đưa ra các kiến thức nền tảng về quy trình phần mềm, các khái niệm, một số khái niệm về tự động hoá trong kiểm thử đồng thời cũng giới thiệu thảo luận một số công cụ tự động trong kiểm thử tự động BDD, các ứng dụng có thể của xử lý ngôn ngữ tự nhiên trong kiểm thử phát triển phần mềm. Chương 3 Giới thiệu tổng quan về một số công cụ kiểm thử tự động hướng hành vi. Chương 4 Chạy thực nghiệm Framework kiểm thử tự động với BDD và đưa ra quy trình, viết cơ sở dữ liệu chạy cho công cụ, các công nghệ. Chương 5 Dựa trên tìm hiểu các kiến thức và công cụ tự động trong kiểm thử liên quan, phân tích và đưa ra phương pháp sinh mã kiểm thử tự động dựa trên quy trình xử lý ngôn ngữ tự nhiên.
  4. 4 Chương 2: Một số kiến thức nền tảng 2.1. Phát triển phần mềm dựa trên phương pháp Agile Trong nhiều thế kỉ qua, có nhiều quy trình phần mềm được ứng dụng trong các doanh nghiệp, tổ chức làm phần mềm như quy trình thác nước, quy trình xoắn ốc một cách thành công. Tuy nhiên với nhiều yêu cầu phức tạp trong nhu cầu làm phần mềm ngày nay quy trình luôn được đổi mới và lặp đi lặp lại. Agile là phương pháp phát triển phần mềm theo hướng linh hoạt, chia quy trình là các pha nhỏ để phát triển phần mềm. Trong phương pháp Agile ● Các công việc trong tiến trình làm phần mềm được chia và kết hợp lại từ các giai đoạn làm phần mềm khác nhau. ● Phần mềm được triển khai dựa trên tài liệu hướng dẫn ● Khách hàng được đàm phán thông qua hợp đồng ● Phản hồi thay đổi theo kế hoạch một cách nhanh chóng, linh hoạt Agile là sự kết hợp của sự đa dạng các quy trình làm phần mềm truyền thống khác nhau như: Scrum, RUP, Với tiến trình Agile phần mềm được phát triển một cách linh hoạt, tạo ra một sự kết hợp giữa các phương pháp phát triển một cách chặt chẽ. Quy trình Agile đã kết hợp nhiều phương thức phát triển như: Test Driven Development (TDD- phát triển phần mềm
  5. 5 kiểm thử), Behavior Driven Development(BDD- Phát triển theo hướng hành vi), . - Kiểm thử phần mềm trong quy trình Agile Quy trình Agile là mô hình phát triển linh hoạt, phát triển dựa trên quy trình lặp. Đặc điểm của quy trình này là: dự án được chia thành các mảng, module nhỏ để dễ sử dụng và nhanh chóng thay đổi khi yêu cầu khách hàng thay đổi, các phần nhỏ sẽ được kiểm thử ngay trong khi làm dự án mà không cần đợi đến khi kết thúc dự án. Trong quy trình phát triển phần mềm theo tiến trình Agile sản phẩm được xây dựng tốt ngay từ đầu, sau đó nhận các phản hồi của khách hàng và cải tiến lại sao cho đúng yêu cầu. Kiểm thử phần mềm không phải là một giai đoạn của dự án nữa mà là một phần của dự án ngay từ đầu. Để đạt được chất lượng phần mềm tốt, Kiểm thử luôn là một giai đoạn tốn kém và mất nhiều chi phí, nhân công. Đặc biệt là trong quy trình Agile, nhân công cho kiểm thử càng gia tăng, chất lượng phần mềm càng khó kiểm soát và tốn nhiều kinh phí. Chính vì vậy, kiểm thử khá mất thời gian và công sức của cả nhóm phát triển phần mềm Tự động hóa giai đoạn này là một việc làm giúp cải thiện chất lượng phần mềm mà không mất nhiều thời gian, mỗi lần thay đổi dự án lại được xây dựng lại do đó kiểm thử cần chính xác và đảm bảo nhanh chóng kịp thời. Trong quy trình Agile, chu trình thực hiện các ca kiểm thử bị dồn lại khá nhiều. thời gian dành cho kiểm thử hồi quy là khá ít. Ứng dụng kiểm thử tự động trong quy trình Agile là một việc làm thiết yếu .
  6. 6 2.2. Phát triển phần mềm hướng kiểm thử ( TDD) Test-Driven development - TDD là phát triển phần mềm theo hướng kiểm thử. Người lập trình sẽ viết một đoạn một đoạn mã để kiểm thử mã thực thi của chương trình, sau đó viết mà chương trình. Từ kết quả của mã kiểm thử để cải thiện, thay đổi lại code của chương trình. Trong quy trình phát triển phần mềm theo hướng kiểm thử từng phần, có nhiều quy trình sẽ được lặp đi lặp lại, các yêu cầu được xác định rõ hơn làm cho phần mềm đáp ứng được yêu cầu khách hàng một cách đầy đủ, rõ ràng hơn. 2. 3 Phát triển hướng BDD( Behavior-Driven Development) Trong quy trình phát triển phần mềm theo hướng TDD, người phát triển phần mềm kiêm luôn chức năng kiểm thử phần mềm, do vậy vai trò của kiểm thử viên chấp nhận dường như không cần thiết nữa, tuy nhiên việc cộng gộp các vai trò dẫn đến các phát sinh cho người phát triển phần mềm. Các câu hỏi thường thấy của các kiểm thử viên như: Bắt đầu kiểm thử từ đâu? Cái gì cần phải kiểm thử và cái gì không? Thời gian dành cho việc kiểm thử là bao lâu? Cần viết bao nhiêu ca kiểm thử? Tại sao ca kiểm thử lại thất bại? [8] 2.4 Xử lý ngôn ngữ tự nhiên ( NLP) NLP là một lĩnh vực ngiên cứu trong khoa học máy tính, tập trung vào phát triển hệ thống có cho phép máy tính tương tác với con người dựa trên ngôn ngữ tự nhiên. NLP là một cách để các máy tính phân tích, hiểu ý nghĩa của ngôn ngữ tự nhiên của con người một cách thông minh và hữu ích. Bằng cách sử
  7. 7 dụng NLP các nhà phát triển phần mềm có thể tổ chức và cấu trúc dữ liệu kiến thức để thực hiện các công việc, tác vụ như: tổng hợp tự động, dịch thuật, nhận dạng thực thể, phân tích trạng thái, nhận dạng giọng nói, phân loại chủ đề, NLP thuộc một nhánh nghiên cứu của trí tuệ nhân tạo. Trong các lĩnh vực nghiên cứu của trí tuệ nhân tạo xử lý ngôn ngữ tự nhiên là khá phức tạp vì nó tập trung vào ngôn ngữ của con người( Ngôn ngữ giao tiếp giữa tư duy và giao tiếp). Kỹ thuật sinh mã kiểm thử BDD từ kịch bản kiểm thử viết bằng ngôn ngữ tự nhiên đưa ra các ca kiểm thử tương ứng hoặc gần nghĩa vì vậy cần sử dụng các kĩ thuật xử lý ngôn ngữ tự nhiên. Hiện nay có các kĩ thuật xử lý ngôn ngữ tự nhiên được sử dụng như: - POS tagging - Phân tích phụ thuôc.. WordNet là một cơ sở dữ liệu lớn từ vựng tiếng anh, được phát triển bởi đại học PrinceTon được sử dụng để thiết kế dưới sự kiểm soát. WordNet nhóm các danh từ, động từ, tính từ thành các bộ đồng nghĩa. Mỗi từ trong cơ sở dữ liệu có thể có nhiều ý nghĩa khác nhau của từ đó. WordNet bao gồm tổng cộng 90000 từ khác nhau và nhiều hơn 166000 cặp kết nối với những ý nghĩa tương đương. WordNet định nghĩa các mối quan hệ khác nhau giữa các từ ngữ nghĩa và mô tả phân cấp, nó cũng cung cấp một biến đếm, giúp xác định từ trong việc dùng chung các từ trong ngữ nghĩa nhất định.
  8. 8 Đầu vào của việc sinh mã kiểm thử cho các kịch bản kiểm thử hướng hành vi là ngôn ngữ tự nhiên. Do vậy việc xử lý ngôn ngữ tự nhiên đóng với trò quan trong trong việc sinh mã kiểm thử tự động trong kịch bản BDD. 2.5 Khái quát về tự động kiểm thử trong BDD (Behavior Driven Development) Tự động sinh mã chạy chương trình được cho là một biện pháp có tác động sâu sắc tới dự án, làm giảm chi phí phát triển phần mềm, chu trình phát triển được rút ngắn, chất lượng phần mềm cũng được rút ngắn . Theo định nghĩa công cụ tự động hỗ trợ BDD là một framework tự động hỗ trợ tự động giống như trong BDD. Tuy nhiên trong kịch bản ngôn ngữ trong BDD sẵn sàng để các bên liên quan phần mềm đều hiểu được chứ không phải chỉ các nhà phát triển .Do vậy, công cụ tự động hỗ trợ kiểm thử trong BDD là: - Công cụ đọc được tài liệu đặc tả. - Công cụ trực tiếp hiểu các phần chính thức của ngôn ngữ kịch bản kiểm thử BDD (chẳng hạn như từ khoá When được mô tả trong ngôn ngữ Gherkin) . Dựa vào đó công cụ sẽ phá vỡ từng kịch bản kiểm thử thành các mệnh đề có ý nghĩa. - Mỗi mệnh đề riêng lẻ trong một kịch bản được chuyển thành một số tham số cho một ca kiểm thử cho yêu cầu của người dùng, tùy thuộc vào từng dự án phần mềm
  9. 9 Sau đó thực hiện phép thử cho từng kịch bản, với các tham số từ kịch bản trên Chương 3: Một số công cụ kiểm thử tự động hướng hành vi 3.1 Công cụ kiểm thử Cucumber 3.1.1 Giới thiệu các khái niệm Một số ưu điểm khi sử dụng Cucumber là: - Các tài liệu đặc tả, thông số kĩ thuật và tài liệu kiểm thử thành một sự gắn kết hoàn chỉnh. - Các ca kiểm thử được tự động bởi Cucumber, do đó thông số đặc tả luôn được cập nhật - Giúp các bên liên quan có thể theo dõi việc kiểm thử mà không cần có chuyên môn về công nghệ thông tin 3.1.2 Các thành phần của Cucumber v Feature Feature được hiểu như một chức năng, hay một đơn vị ứng dụng của dự án. Chẳng hạn khi sử dụng một trang mạng xã hội sẽ có các chức năng như: - Đăng kí tài khoản - Đăng nhập tài khoản - Kết nối bạn bè - Thay đổi thông tin Trong công cụ Cucumber, mỗi feature là một chức năng độc lập của sản phẩm.
  10. 10 3.2 Công cụ kiểm thử Jasmine 3.2.1 Giới thiệu về Jasmine - Thời gian gần đây thì JavaScript khá phát triển và phổ biến . Jasmine là công cụ kiểm thử hướng hành vi cho mã nguồn viết cho ngôn ngữ JavaScripts. Jasmine không phụ thuộc và bất kì nền tảng Javascript nào, không yêu cầu cấu trúc DOM, có cú pháp rõ ràng, dễ hiểu để có thể dễ dàng viết các ca kiểm thử. Vì vậy, Jasmine phù hợp cho kiểm thử web, các dự án Node.js hoặc bất của cứ nơi đâu mà mã JavaScript có thể chạy. - Jasmine cũng sử dụng ngôn ngữ gherkin để viết kịch bản kiểm thử. Đặc điểm của Jasmine: - Chi phí thấp, không phụ thuộc vào các tác nhân bên ngoài - Bắt đầu một quá trình kiểm thử với mọi thứ cần thiết để kiểm tra - Chạy trình duyệt và các ca kiểm thử Node.js sử dụng cùng một hệ thống 3.2.2 Kiến trúc của Jasmine - Để tìm hiểu về kiến trúc của Jasmine ta lên trang chủ: và tải bản một phiên bản Jasmine kiểm thử độc lập cho mã nguồn Javascript. - Trong một bản độc lập của Jasmine bao gồm: 1 ứng dụng ví dụ và các ca kiểm thử ví dụ. Chúng ta mở tệp: SpecRunner.html và chạy các thông số kỹ thuật đi kèm.