1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer CodeceptJS cho công ty TNHH seta international việt nam

41 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Và Ứng Dụng Kiểm Thử Tự Động Sử Dụng Puppeteer - CodeceptJS Cho Công Ty TNHH Seta - International Việt Nam
Tác giả Bùi Thị Lâm Oanh
Người hướng dẫn ThS Nguyễn Thị Thu Thủy
Trường học Trường Đại Học Thương Mại
Chuyên ngành Hệ Thống Thông Tin Kinh Tế
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2020
Thành phố Hà Nội
Định dạng
Số trang 41
Dung lượng 1,32 MB

Cấu trúc

  • 1. Tầm quan trọng, ý nghĩa của vấn đề nghiên cứu (5)
  • 2. Mục tiêu và nhiệm vụ nghiên cứu (6)
    • 2.1. Mục tiêu nghiên cứu (6)
    • 2.2. Nhiệm vụ nghiên cứu (6)
  • 3. Đối tượng và phạm vi nghiên cứu (6)
    • 3.1. Đối tượng nghiên cứu (6)
    • 3.2. Phạm vi nghiên cứu (6)
  • 4. Phương pháp nghiên cứu (7)
    • 4.1. Phương pháp thu thập dữ liệu (7)
    • 4.2. Phương pháp xử lý dữ liệu (7)
  • 5. Kết cấu khóa luận (7)
  • CHƯƠNG I: TỔNG QUAN KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ TỰ ĐỘNG 4 1.1. Phần mềm (8)
    • 1.1.1. Khái niệm (8)
    • 1.1.2. Phân loại phần mềm (8)
    • 1.1.3. Quy trình phát triển phần mềm (8)
    • 1.1.4. Các mô hình phát triển phần mềm (10)
    • 1.1.5. Mối quan hệ giữa quy trình phát triển phần mềm và kiểm thử phần mềm (12)
    • 1.2. Kiểm thử phần mềm (13)
      • 1.2.1. Kiểm thử phần mềm là gì? (13)
      • 1.2.2. Vai trò của kiểm thử phần mềm (13)
      • 1.2.3. Quy trình kiểm thử phần mềm (14)
      • 1.2.4. Quy trình xử lý lỗi (15)
      • 1.2.5. Phân loại và các kỹ thuật kiểm thử (16)
    • 1.3. TÌM HIỂU VỀ KIỂM THỬ TỰ ĐỘNG (17)
      • 1.3.1. Khái quát chung về kiểm thử tự động (17)
      • 1.3.2. Lợi ích và khó khăn của kiểm thử tự động (18)
      • 1.3.3. Thị trường kiểm thử tự động (19)
      • 1.3.4. Tình hình nghiên cứu và ứng dụng của kiểm thử tự động (19)
      • 1.3.5. So sánh giữa kiểm thử thủ công và kiểm thử tự động (20)
  • CHƯƠNG II: THỰC TRẠNG VIỆC KIỂM THỬ PHẦN MỀM TẠI CÔNG TY (22)
    • 2.1. Tổng quan về công ty TNHH Seta - International Việt Nam (22)
      • 2.1.1. Giới thiệu chung về công ty (22)
      • 2.1.2. Quá trình thành lập công ty (22)
      • 2.1.3. Cơ cấu tổ chức của công ty (23)
      • 2.1.4. Lĩnh vực hoạt động (25)
      • 2.1.5. Kết quả hoạt động kinh doanh gần đây (25)
    • 2.2. Phân tích thực trạng quá trình kiểm thử phần mềm tại công ty TNHH Seta - (26)
    • 2.3. Đánh giá thực trạng quá trình kiểm thử phần mềm tại công ty TNHH Seta (28)
  • CHƯƠNG III: NGHIÊN CỨU VÀ ỨNG DỤNG CÔNG CỤ KIỂM THỬ TỰ ĐỘNG PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA (30)
    • 3.1. Tìm hiểu về công cụ kiểm thử tự động PUPPETEER - CODECEPJS (30)
      • 3.1.1. Puppeteer là gì? (30)
      • 3.1.2. Puppeteer có thể làm gì? (30)
      • 3.1.3. Tại sao nên sử dụng Puppeteer cho testing? (30)
    • 3.2. ỨNG DỤNG CÔNG CỤ VÀO CÔNG CỤ KIỂM THỬ TỰ ĐỘNG (33)
      • 3.2.1. Giới thiệu về Các phần mềm cần thiết (33)
      • 3.2.2. Cài đặt và khởi tạo Puppeteer – Codeceptjs và ứng dụng (33)

Nội dung

Tầm quan trọng, ý nghĩa của vấn đề nghiên cứu

Ngành công nghiệp phần mềm đã trải qua sự tăng trưởng vượt bậc trong vài thập kỷ qua, từ việc chỉ phục vụ cho tính toán khoa học và xử lý dữ liệu, đến việc ứng dụng rộng rãi trong đời sống hàng ngày Phần mềm hiện nay không chỉ điều khiển các thiết bị gia dụng như điện thoại, máy giặt, ti vi, tủ lạnh, mà còn hỗ trợ các hệ thống lớn như quản lý doanh nghiệp, hướng dẫn giao thông và quản lý khám chữa bệnh Sự hiện diện của phần mềm trong mọi khía cạnh của cuộc sống đòi hỏi chất lượng ngày càng cao, điều này đồng nghĩa với việc cần thực hiện kiểm thử phần mềm một cách chặt chẽ để đảm bảo chất lượng sản phẩm.

Kiểm thử phần mềm là giai đoạn quan trọng quyết định sự thành công của dự án, nhưng đồng thời cũng tiêu tốn nhiều thời gian, tiền bạc và công sức Đặc biệt, với các phần mềm lớn, chi phí kiểm thử sẽ tăng lên đáng kể mỗi khi có sự thay đổi hoặc nâng cấp chức năng Điều này là không thể tránh khỏi, vì phần mềm luôn cần được điều chỉnh để đáp ứng yêu cầu ngày càng cao của người dùng.

Công việc kiểm thử tại công ty Seta hiện chủ yếu dựa vào kiểm thử thủ công, dẫn đến việc tốn kém chi phí và nhân lực, cũng như có nguy cơ chậm tiến độ và bỏ sót lỗi Để giải quyết vấn đề này, luận văn đề xuất giải pháp tự động hóa kiểm thử, nhằm giảm thiểu chi phí về thời gian, tiền bạc và nhân lực, đồng thời giảm bớt sự nhàm chán cho kiểm thử viên mà vẫn đảm bảo chất lượng sản phẩm.

Với sự phát triển mạnh mẽ của phần mềm và kiểm thử phần mềm, nhiều công cụ hỗ trợ kiểm thử tự động ra đời, mỗi công cụ có phương pháp luận riêng Tuy nhiên, việc chọn công cụ không đúng có thể không mang lại hiệu quả, và áp dụng kiểm thử tự động không đảm bảo tiết kiệm chi phí hay thành công cho dự án Vì vậy, luận văn này nghiên cứu và áp dụng công cụ kiểm thử Puppeteer – Codeceptjs vào thực tế tại công ty.

Mục tiêu và nhiệm vụ nghiên cứu

Mục tiêu nghiên cứu

Giai đoạn kiểm thử đóng vai trò quan trọng trong quy trình sản xuất phần mềm, giúp đảm bảo chất lượng sản phẩm Việc áp dụng các công cụ kiểm thử tự động không chỉ tăng cường hiệu quả kiểm thử mà còn nâng cao độ chính xác và giảm thiểu thời gian thực hiện Nghiên cứu và phân tích ứng dụng các công cụ tự động trong kiểm thử sản phẩm là cần thiết để cải thiện chất lượng phần mềm, đáp ứng nhu cầu ngày càng cao của thị trường.

Kiểm thử tự động không chỉ giúp rút ngắn thời gian và giảm chi phí cho sản phẩm phần mềm, mà còn nâng cao độ chính xác trong việc phát hiện lỗi so với kiểm thử thủ công Mặc dù kiểm thử chặt chẽ có thể hạn chế lỗi, vẫn còn nhiều lỗi tiềm ẩn mà kiểm thử thủ công khó phát hiện, gây thiệt hại cho nhà sản xuất Do đó, áp dụng kiểm thử tự động là phương pháp hiệu quả để đảm bảo các yêu cầu của người dùng về thiết kế và ứng dụng phần mềm được đáp ứng đầy đủ.

Nhiệm vụ nghiên cứu

Để có thể đi sâu vào bài toán mà đề tài đã đặt ra, ta cần làm rõ nhiệm vụ nghiên cứu sau:

Hệ thống hóa kiến thức và lý luận liên quan đến đề tài nghiên cứu bao gồm các khái niệm cơ bản về kiểm thử, tiến trình kiểm thử, cũng như các phương pháp và kỹ thuật kiểm thử Bên cạnh đó, việc ứng dụng những kiến thức này trong thực tiễn cũng đóng vai trò quan trọng trong việc nâng cao hiệu quả kiểm thử.

- Nghiên cứu, đánh giá thực trạng và đưa ra giải pháp cho việc kiểm thử tại công ty TNHH Seta.

Nghiên cứu và ứng dụng công cụ kiểm thử tự động Puppeteer kết hợp với Codeceptjs trong thực tế tại công ty đã cho thấy tính khả thi và hiệu quả của đề tài Các kết quả đạt được bao gồm việc nâng cao độ chính xác và giảm thời gian kiểm thử, tuy nhiên vẫn còn một số vấn đề chưa được giải quyết như khả năng tương thích với các trình duyệt khác nhau Để khắc phục những vấn đề này, cần có các biện pháp tối ưu hóa quy trình kiểm thử và cải thiện khả năng tương tác của công cụ.

Phương pháp nghiên cứu

Phương pháp thu thập dữ liệu

Trong khóa luận, tôi đã áp dụng các phương pháp thu thập dữ liệu thứ cấp, bao gồm việc tìm kiếm thông tin trên Internet, tham khảo các bài báo và nghiên cứu những khóa luận có đề tài tương tự.

Phương pháp xử lý dữ liệu

Phương pháp xử lý dữ liệu trong khóa luận được thực hiện bằng cách tổng hợp và áp dụng các phương pháp nghiên cứu như thống kê, phân tích, tổng hợp và so sánh.

Kết cấu khóa luận

Bố cục của luận văn gồm làm ba chương:

Chương I: Tổng quan về kiểm thử phần mềm và kiểm thử tự động bao gồm khái niệm kiểm thử phần mềm, quy trình thực hiện kiểm thử, cùng với các phương pháp và kỹ thuật kiểm thử hiện có Bên cạnh đó, chương này cũng đề cập đến những kiến thức cần thiết về kiểm thử tự động và ứng dụng của nó trong lĩnh vực kiểm thử phần mềm ngày nay.

Chương II: Thực trạng kiểm thử phần mềm tại công ty TNHH Seta - International Việt Nam sẽ giới thiệu về công ty, lĩnh vực hoạt động và những thành tựu mà công ty đã đạt được Đồng thời, bài viết cũng sẽ phân tích quy trình kiểm thử phần mềm nhằm đánh giá các ưu điểm và nhược điểm trong giai đoạn này.

Chương III trình bày nghiên cứu và ứng dụng công cụ kiểm thử tự động Puppeteer – Codeceptjs tại công ty TNHH Seta - International Việt Nam Bài viết sẽ tìm hiểu về công cụ Puppeteer – Codeceptjs, đồng thời phân tích ứng dụng của nó trong thực tiễn, nêu rõ những điểm mạnh và điểm yếu của công cụ này trong quá trình kiểm thử tự động.

TỔNG QUAN KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ TỰ ĐỘNG 4 1.1 Phần mềm

Khái niệm

Phần mềm là tập hợp các lệnh và chỉ thị được viết bằng ngôn ngữ lập trình, nhằm tự động thực hiện nhiệm vụ hoặc giải quyết vấn đề cụ thể Nó hoạt động bằng cách gửi chỉ thị trực tiếp đến phần cứng máy tính hoặc cung cấp dữ liệu cho các chương trình khác trong hệ thống.

Phân loại phần mềm

Có nhiều cách thức phân loại phần mềm, song có thể chia thành hai loại chính sau:

*Theo phương thức hoạt động

Phần mềm hệ thống là loại phần mềm thiết yếu cho việc vận hành máy tính và các thiết bị phần cứng Nó cho phép hệ điều hành giao tiếp, điều khiển và quản lý hiệu quả các phần cứng máy tính.

- Phần mềm ứng dụng để người sử dụng có thể hoàn thành một hay nhiều công việc nào đó.

- Phần mềm chuyển dịch mã bao gồm trình biên dịch và trình thông dịch

- Các nền tảng công nghệ như NET, IC:DOANH NGHIỆP…

*Theo khả năng ứng dụng

- Phần mềm thời gian thực (các PM anti - virut, PM chat,…)

- Phần mềm giải trí (Game, )

- Phần mềm nhúng: chạy trên các thiết bị đặc thù như điện thoại di động, TV, máy lạnh, …

- Phần mềm phân tán: chạy trên nhiều thiết bị, phối hợp hoạt động đồng thời với nhau.

Quy trình phát triển phần mềm

Quy trình là yếu tố quyết định thành công trong ngành sản xuất phần mềm, giúp tất cả thành viên dự án, từ người cũ đến người mới, phối hợp hiệu quả theo cách thức chung của công ty Quy trình phát triển phần mềm đóng vai trò quan trọng trong việc tạo ra sản phẩm chất lượng cao, giảm thiểu chi phí và nâng cao năng suất.

Các giai đoạn phát triển của một sản phẩm phần mềm

STT Giai đoạn Công việc Đầu ra

Thực hiện khảo sát chi tiết để nắm bắt yêu cầu khách hàng và tổng hợp thông tin vào tài liệu Giải pháp, bao gồm các phần Phân tích nghiệp vụ, Phân tích yêu cầu, Đặc tả yêu cầu và Prototype.

Tài liệu giải pháp phải mô tả đầy đủ các yêu cầu về chức năng, phi chức năng, giao diện.

Tài liệu Đặc tả yêu cầu

Thực hiện thiết kế và tổng hợp vào tài liệu Thiết kế (Thiết kế tổng thể, thiết kế CSDL, Thiết kế chi tiết).

Thiết kế tổng thể, thiết kế CSDL, Thiết kế chi tiết

Lập trình viên thực hiện lập trình theo tài liệu Giải pháp và Thiết kế đã được phê duyệt.

CBKT tạo kịch bản kiểm thử theo tài liệu giải pháp

Thực hiện kiểm thử Cập nhật kết quả vào KBKT, lỗi được log đầy đủ

Tester và Developer phối hợp xử lý các lỗi và cập nhật trên Hệ thống quản lý lỗi

Testcases Lỗi trên Hệ thống quản lý lỗi

Triển khai sản phẩm cho Khách hàng Biên bản triển khai với khách hàng

Các mô hình phát triển phần mềm

Có khá nhiều mô hình phát triển phần mềm khác nhau, trong đó một số được ứng dụng khá phổ biến trên thế giới:

Mô hình này bao gồm các giai đoạn xử lý nối tiếp nhau như sau:

Phân tích yêu cầu và tài liệu đặc tả

Để phát triển hệ thống phần mềm hiệu quả, cần xác định rõ các yêu cầu chức năng và phi chức năng cần thiết Kết quả của giai đoạn này là "Bản đặc tả yêu cầu phần mềm" (SRS), đóng vai trò quan trọng trong việc hướng dẫn quá trình thiết kế và phát triển phần mềm.

Phân tích hệ thống và thiết kế

Xác định làm thế nào để hệ thống phần mềm đáp ứng những yêu cầu mà khách hàng yêu cầu trong tài liệu SRS/

Lập trình Thực hiện viết code để được như bản thiết kế hệ thống

Kiểm thử phần mềm bao gồm việc kiểm tra các thành phần và hệ thống, cũng như thực hiện kiểm thử nghiệm thu với sự tham gia của khách hàng để xác định xem phần mềm có đáp ứng được yêu cầu của họ hay không.

Cài đặt và bảo trì

Cài đặt, cấu hình và đào tạo cho khách hàng.

Sửa chữa lỗi và phát triển thay đổi được khách hàng yêu cầu.

Mô hình thác nước có nhược điểm lớn là việc phát hiện sai sót chỉ xảy ra ở giai đoạn cuối của dự án, dẫn đến việc cần phải quay lại sửa chữa các giai đoạn trước đó.

+ Xác định yêu cầu và đặc tả: Xác định yêu cầu cần thiết mà hệ thống đòi hỏi, đưa ra bản đặc tả.

+ Phân tích hệ thống: Phân tích các yêu cầu mà hệ thống cần có và đưa ra giải pháp tích hợp các yêu cầu đó vào hệ thống.

+ Thiết kế chi tiết: Chi tiết hóa các bước thực hiện xây dựng hệ thống

+ Phát triển: Thực hiện việc viết code

+ Kiểm tra từng thành phần và tích hợp: Kiểm tra các module của hệ thống tương ứng với pha thiết kế chi tiết.

+ Kiểm thử toàn hệ thống: Kiểm thử hoạt động của hệ thống (về chức năng, giao diện)

+ Nghiệm thu: Kiểm tra lần cuối cùng và nghiệm thu sản phẩm đưa vào sử dụng.

Mô hình chữ V là một phương pháp phát triển phần mềm mở rộng từ mô hình thác nước, chia quy trình thành hai nhánh chính: Phát triển và Kiểm thử Mỗi giai đoạn phát triển sẽ diễn ra song song với giai đoạn kiểm thử tương ứng, giúp phát hiện lỗi sớm ngay từ đầu.

Mô hình Agile là phương pháp phát triển phần mềm linh hoạt, nhằm đưa sản phẩm đến tay người dùng nhanh chóng Dự án được thực hiện qua các phân đoạn lặp đi lặp lại, gọi là Iteration hoặc Sprint, thường kéo dài từ 1 đến 4 tuần Trong mỗi phân đoạn, nhóm phát triển thực hiện đầy đủ các công việc như lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai và kiểm thử, để tạo ra các phần nhỏ của sản phẩm Cuối mỗi phân đoạn, sản phẩm sẽ có các phiên bản có thể chạy và sử dụng được ngay, và quá trình này tiếp tục cho đến khi dự án hoàn thành và khách hàng hài lòng.

Mối quan hệ giữa quy trình phát triển phần mềm và kiểm thử phần mềm

Vai trò việc kiểm thử trong suốt quy trình của phần mềm:

- Kiểm thử không tồn tại độc lập.

- Các hoạt động của kiểm thử luôn gắn liền với các hoạt động phát triển phần mềm.

- Các mô hình phát triển phần mềm khác nhau cần các cách tiếp cận test khác nhau.

Phát triển phần mềm và kiểm thử phần mềm có mối liên hệ chặt chẽ, với việc kiểm thử cần được thực hiện độc lập ngay từ giai đoạn đầu như phân tích yêu cầu và thiết kế hệ thống Việc phát hiện và sửa chữa sai sót sớm giúp giảm thiểu chi phí, vì lỗi phát hiện muộn có thể tốn kém rất nhiều Chi phí sửa chữa trong giai đoạn đầu thường nhỏ, nhưng sẽ gia tăng đáng kể nếu để lâu Do đó, việc kiểm thử không nên bị lơ là, đặc biệt là đối với các dự án phần mềm lớn trong doanh nghiệp hiện nay.

Kiểm thử phần mềm

1.2.1 Kiểm thử phần mềm là gì?

Kiểm thử phần mềm là quá trình đánh giá một hệ thống hoặc thành phần trong những điều kiện nhất định, nhằm quan sát, ghi lại kết quả và đánh giá các khía cạnh của hệ thống đó Theo Bảng chú giải thuật ngữ chuẩn IEEE, kiểm thử đóng vai trò quan trọng trong kỹ nghệ phần mềm.

Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi (Theo “The Art of Software Testing” – Nghệ thuật kiểm thử phần mềm)

Kiểm thử phần mềm là quá trình đánh giá sản phẩm hoặc dịch vụ phần mềm trong môi trường thực tế mà chúng sẽ được triển khai, nhằm cung cấp thông tin về chất lượng cho các bên liên quan Mục tiêu chính của kiểm thử phần mềm là phát hiện lỗi và khiếm khuyết để đảm bảo hiệu suất tối ưu cho phần mềm trong nhiều lĩnh vực khác nhau.

Kiểm thử phần mềm là quá trình tìm kiếm và phát hiện lỗi trong phần mềm, nhằm đảm bảo sản phẩm đáp ứng đầy đủ và chính xác các yêu cầu của khách hàng Hoạt động này cũng cung cấp cái nhìn độc lập về phần mềm, giúp đánh giá và hiểu rõ các rủi ro liên quan đến việc thực thi sản phẩm.

1.2.2 Vai trò của kiểm thử phần mềm

Quy trình phát triển phần mềm bao gồm nhiều giai đoạn, bắt đầu từ ý tưởng cho đến khi sản phẩm phần mềm được triển khai Khối lượng công việc trong từng giai đoạn này thay đổi theo thời gian.

Một sản phẩm phần mềm không chỉ đơn thuần là các đoạn mã chương trình mà còn bao gồm nhiều yếu tố ẩn chứa bên trong Do đó, lỗi có thể phát sinh không chỉ trong quá trình lập trình mà còn trong các giai đoạn khác của quy trình phát triển phần mềm Vì vậy, việc kiểm thử cần được thực hiện ở tất cả các khía cạnh tạo nên sản phẩm phần mềm.

1.2.3 Quy trình kiểm thử phần mềm

Quy trình kiểm thử phần mềm gồm các hoạt động sau:

- Xác định phạm vi, rủi ro cũng như mục đích của hoạt động kiểm thử

- Xác định các cách tiếp cận kiểm thử

Xác định chiến lược kiểm thử là bước quan trọng trong chu kỳ phát triển phần mềm, bao gồm các thành phần như mục tiêu kiểm thử, phương pháp kiểm thử, tổng thời gian và nguồn lực cần thiết cho dự án, cũng như các môi trường thử nghiệm Chiến lược kiểm thử thường được xây dựng bởi đội ngũ phát triển để đảm bảo hiệu quả và chất lượng sản phẩm.

- Xác định các nguồn lực cần có cho kiểm thử như: nhân lực, phần cứng, phần mềm, môi trường test v.v

- Lên lịch cho các hoạt động phân tích và thiết kế các trường hợp kiểm thử, thực thi kiểm thử cũng như đánh giá kết quả kiểm thử

Để xác định tiêu chí kết thúc việc kiểm thử (exit criteria), cần xem xét các yếu tố như tỷ lệ độ bao phủ của test case, số lượng bug phát hiện và mức độ nghiêm trọng của các bug này Ví dụ cơ bản cho tiêu chí kết thúc kiểm thử có thể bao gồm các chỉ số trên để đảm bảo chất lượng sản phẩm trước khi ra mắt.

- Rà soát các yêu cầu cần thiết trước khi tiến hành kiểm thử như tài liệu đặc tả, tài liệu thiết kế, tài liệu giao diện, v.v

- Xác định các điều kiện kiểm thử

- Đánh giá tính khả thi trong việc kiểm thử của yêu cầu cũng như của hệ thống

* Chuẩn bị môi trường test: cũng như xác định các yêu cầu về cơ sở hạ tầng và các công cụ kiểm thử tương ứng

- Thiết kế và phân loại các trường hợp kiểm thử dựa theo độ ưu tiên của từng trường hợp kiểm thử

- Chạy các test case theo các bước đã định ra trước đó

- Chạy lại các case bị failed trước đó để xác nhận là case đó đã được sửa

Đánh giá kiểm thử là quá trình toàn diện nhằm xem xét và phân tích kết quả kiểm tra lỗi, từ đó xác định các yêu cầu thay đổi cần thiết và tính toán các số liệu liên quan đến quy trình kiểm tra.

1.2.4 Quy trình xử lý lỗi

Quy trình quản lý lỗi bao gồm 4 bước chính :

Khi phát hiện lỗi trong quá trình làm việc, bước đầu tiên là ghi nhận lỗi đó vào hệ thống quản lý lỗi Nếu không có hệ thống này, lỗi cần được ghi vào một biểu mẫu riêng của dự án dưới dạng Excel hoặc Word Việc ghi nhận lỗi phải đảm bảo đầy đủ thông tin, bao gồm mô tả chi tiết về lỗi, cách thức xuất hiện và các hoạt động đảm bảo chất lượng liên quan Thông thường, người phát hiện lỗi sẽ là người chịu trách nhiệm ghi nhận lỗi đó.

Bước 2: Sau khi ghi nhận lỗi, cần tiến hành phân tích để xác định chính xác liệu đó có phải là lỗi hay không, nhằm thực hiện các hành động phù hợp.

Bước 3: Khi lỗi được xác định và cần sửa, nhiệm vụ này sẽ được giao cho người phù hợp Người chịu trách nhiệm sửa lỗi phải thực hiện việc sửa chữa và tự kiểm thử đơn vị trước khi thông báo rằng lỗi đã được khắc phục.

Bước 4: Sau khi sửa lỗi, cần tiến hành kiểm thử lại để xác nhận xem lỗi đã được khắc phục hoàn toàn hay chưa Nếu lỗi vẫn còn, cần mở lại để tiếp tục xử lý; ngược lại, nếu đã sửa đúng, hãy đóng lỗi.

Quản lý lỗi và sự cố là quá trình kiểm soát và theo dõi các lỗi hoặc sự cố từ thời điểm chúng được ghi nhận cho đến khi chúng được giải quyết và đóng lại.

1.2.5 Phân loại và các kỹ thuật kiểm thử

*Các kỹ thuật kiểm thử phần mềm

Kiểm thử hộp đen (Black Box Testing) là phương pháp kiểm tra chức năng của phần mềm mà không cần xem xét mã nguồn hay cấu trúc bên trong của chương trình Phương pháp này chủ yếu tập trung vào việc kiểm tra các bộ dữ liệu đầu vào, nhằm đảm bảo rằng phần mềm hoạt động đúng như mong đợi.

Kiểm thử hộp trắng (White Box Testing) là một phương pháp kiểm thử phần mềm khác biệt so với kiểm thử hộp đen, vì nó xem xét toàn bộ các module trong chương trình và các luồng thực hiện công việc Điều này giúp xây dựng các chiến lược và kế hoạch kiểm thử cụ thể, đảm bảo chất lượng và hiệu suất của phần mềm.

TÌM HIỂU VỀ KIỂM THỬ TỰ ĐỘNG

1.3.1 Khái quát chung về kiểm thử tự động

Trong kiểm thử phần mềm, kiểm thử tự động (Automation testing) đóng vai trò quan trọng trong việc nâng cao năng suất kiểm thử, giảm thiểu lỗi và hạn chế sự nhàm chán khi thực hiện kiểm thử thủ công trong thời gian dài hoặc lặp đi lặp lại.

Kiểm thử tự động là quy trình tự động hóa các bước thực hiện một test case, được thực hiện thông qua phần mềm kiểm thử tự động, hay còn gọi là công cụ kiểm thử tự động.

Some of the most popular automated testing software today includes Quick Test Professional (HP), Selenium, Test Architect (LogiGear), Ranorex, Visual Studio CodedUI Testing, TestComplete (SmartBear), and SOAPUI for Web Services Testing (SmartBear).

1.3.1.2 Tại sao phải kiểm thử tự động?

 Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử cho cả một kế hoạch kiểm thử

 Rèn luyện kỹ năng lập trình cho kiểm thử viên

 Giảm chi phí cho tổng quá trình kiểm thử

Khi nào cần kiểm thử tự động?

 Không đủ tài nguyên: Khi số lượng Test case quá nhiều mà kiểm thử viên không thể hoàn tất trong thời gian cụ thể

Kiểm tra hồi quy là quá trình nâng cấp phần mềm và xác nhận lại các tính năng đã hoạt động ổn định cũng như những tính năng đã được sửa chữa Tuy nhiên, việc đảm bảo thời gian cho quá trình này thường gặp nhiều khó khăn.

 Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt:

 Đo tốc độ trung bình xử lý một yêu cầu của Web server

 Xác định số yêu cầu tối đa được xử lý bởi Web server

 Xác định cấu hình máy thấp nhất mà phần mềm vẫn có thể hoạt động tốt

1.3.1.3 Quy trình của kiểm thử tự động

Việc phát triển kiểm thử tự động cần tuân theo quy trình phát triển phần mềm, coi đó như một dự án riêng biệt Tương tự như quy trình phát triển phần mềm, chúng ta cần thực hiện các bước cơ bản để đảm bảo hiệu quả trong kiểm thử.

Phát triển kiểm thử tự động cần tuân theo các bước phát triển phần mềm, vì vậy chúng ta nên coi việc phát triển kiểm thử phần mềm như một dự án riêng biệt.

 Xây dựng yêu cầu: thu thập các đặc tả yêu cầu, lựa chọn những phần cần thực hiện kiểm thử tự động, lập kế hoạch kiểm thử

Phân tích thiết kế mô hình kiểm thử tự động bao gồm việc xây dựng mô hình phát triển kiểm thử tự động và thiết kế các test case để thực thi hiệu quả Việc này giúp tối ưu hóa quy trình kiểm thử, đảm bảo chất lượng phần mềm và giảm thiểu thời gian phát triển.

 Tạo testscript: giai đoạn này chúng ta sẽ sử dụng tool để ghi lại các thao tác lên phần mềm cần kiểm tra và tự động sinh ra testscript

 Chỉnh sửa testscript: Chỉnh sửa để testscript thực hiện kiểm tra theo đúng yêu cầu đặt ra, cụ thể là làm theo test case cần thực hiện

 Chạy testscript: giám sát các hoạt động kiểm thử phần mềm của testscript

 Kiểm tra kết quả: kiểm tra kết quả thông báo ngay sau khi thực hiện kiểm thử tự động

 Đánh giá kết quả kiểm thử: thông qua báo cáo kết quả kiểm thử, bổ sung, chình sửa những sai sót

1.3.2 Lợi ích và khó khăn của kiểm thử tự động

1.3.2.1 Lợi ích của kiểm thử tự động

- Không cần đến sự can thiệp của kiểm thử viên.

- Giảm chi phí khi thực hiện kiểm tra số lượng lớn test case hoặc test case lặp lại nhiều lần.

- Giả lập tình huống khó có thể thực hiện bằng tay.

1.3.2.2 Khó khăn của kiểm thử tự động

-.Mất chi phí tạo các script để thực hiện kiểm thử tự động.

- Tốn kém chi phí cho bảo trì các script.

- Đòi hỏi kiểm thử viên phải có kỹ năng tạo các script kiểm thử tự động.

- Không áp dụng được trong việc tìm lỗi mới của phần mềm.

1.3.3 Thị trường kiểm thử tự động

Cách mạng công nghiệp lần thứ tư đánh dấu kỷ nguyên vạn vật kết nối Internet

Sự phát triển của công nghệ hiện đại dựa trên sự hội tụ của nhiều công nghệ, trong đó công nghệ thông tin và Internet đóng vai trò cốt lõi Từ những ngày đầu kết nối nội dung như email đến sự bùng nổ của mạng xã hội, Internet vạn vật và kết nối thiết bị, công nghệ đã thay đổi cách thức vận hành của các nhà máy Bên cạnh đó, sự phát triển của công nghệ in 3D, vật liệu tiên tiến và công nghệ lưu trữ cũng góp phần quan trọng vào quá trình này.

Nền công nghiệp 4.0 đang phát triển mạnh mẽ, thúc đẩy sự bùng nổ của nhiều ngành nghề, đặc biệt là công nghệ thông tin Điều này dẫn đến nhu cầu cao về nhân lực, yêu cầu ứng viên phải trang bị kỹ năng lập trình, kỹ thuật và tự động hóa tốt hơn để đáp ứng yêu cầu thị trường.

If you search on major job recruitment websites like ITviec, Vietnamworks, LinkedIn, Indeed, Dice, Monster, and CareerBuilder, you will find a multitude of results for various search keywords.

Software Development Engineer in Test (SDET)

Nhu cầu tuyển dụng QA có kiến thức và kinh nghiệm về automation test đang gia tăng mạnh mẽ, cho thấy automation test sẽ đóng vai trò quan trọng trong tương lai của lĩnh vực kiểm thử và công nghệ thông tin.

1.3.4 Tình hình nghiên cứu và ứng dụng của kiểm thử tự động

1.3.4.1 Tình hình nghiên cứu và ứng dụng của kiểm thử tự động trên thế giớiKiểm thử ở trên thế giới đã phát triển từ lâu, nếu như ở Việt Nam tỉ lệ chỉ có 1 Tester thì có 5 lập trình viên nhưng ở nước ngoài, tỉ lệ này là 4:1, như vậy với 4 Tester thì mới có một lập trình viên Có thể nói Testing có rất nhiều tiềm năng phát triển.

Nhật Bản nổi bật với nền công nghệ thông tin phát triển mạnh mẽ, nhờ vào sự tỉ mỉ và chú trọng đến chất lượng của người Nhật Trong lĩnh vực QA/Test, các chuyên gia không chỉ kiểm thử sản phẩm mà còn phải đảm bảo quy trình phát triển phần mềm được quản lý chặt chẽ từ giai đoạn đầu Do đó, Test Matrix trở thành một yếu tố quan trọng và không thể thiếu trong các dự án công nghệ tại Nhật Bản.

1.3.4.2 Tình hình nghiên cứu và ứng dụng của kiểm thử tự động trong nước Công nghệ thông tin Việt Nam nói chung và phát triển phần mềm nói riêng đang có những bước phát triển tốt và sinh động Tuy nhiên, có một thực tế là kiểm thử phần mềm ở Việt Nam đã đi sau nhiều nước khác Về mặt số lượng thì Việt Nam thấp hơn rất nhiều so với thế giới Tỷ lệ Developer và Tester trong dự án của thế giới là 3:1 còn ở Việt Nam lại là 5:1.

Trước đây, chất lượng các dự án gia công phần mềm tại Việt Nam chủ yếu tập trung vào công việc cấp thấp, mặc dù một số công ty đã thực hiện những dự án lớn và có giá trị cao, nhưng số lượng này vẫn còn hạn chế Hiện nay, nhiều doanh nghiệp từng mạnh về phát triển phần mềm như IT Sol, Citigo, Fsoft, Viettel và Simax đã mở rộng sang lĩnh vực kiểm thử, cho thấy sự chuyển mình và nỗ lực nâng cao trình độ để bắt kịp với thế giới.

THỰC TRẠNG VIỆC KIỂM THỬ PHẦN MỀM TẠI CÔNG TY

Tổng quan về công ty TNHH Seta - International Việt Nam

2.1.1 Giới thiệu chung về công ty

- Tên công ty quốc tế: SETA International Vietnam Company Limited

- Tên công ty bằng tiếng Việt: Công ty TNHH SETA International Việt Nam

- Tên viết tắt: SETA INTERNATIONAL VIETNAM CO.,LTD

+ Trụ sở tại Mỹ: 3943 Irvine Blvd, Suite 170, Irvine, CA 92626 (Costa Mesa, California).

+ Trụ sở tại Việt Nam: Tầng 11, tòa nhà HL, ngõ 82, đường Duy Tân, Phường Dịch Vọng Hậu, quận Cầu Giấy, Hà Nội.

- Website: http://www.seta-international.com/

- Email: info@seta-international.com

- Người đại diện: Vũ Thanh Hùng- Chức vụ: Giám đốc (CEO).

2.1.2 Quá trình thành lập công ty

- Năm 2008, SETA International được thành lập bởi 2 cựu nhân viên của IBM có trụ sở tại Costa Mesa, California, Mỹ.

- Năm 2009, SETA International chính thức đầu tư vào Việt Nam và lấy tên hoạt động là Công ty TNHH SETA:CINQ VIỆT NAM.

- Năm 2013, SETA:CINQ VIỆT NAM nâng cao vị thế của mình trên thị trường quốc tế Tổng số lượng nhân viên lên đến hơn 250 người.

In 2014, SETA:CINQ VIETNAM split into two independent companies: SETA International Vietnam (SETA USA) and SETA International Asia (now renamed Co-Well Asia).

- Năm 2015, SETA International Việt Nam vinh dự và tự hào trở thành đối tác của Amazon và CyberSource.

- Năm 2016, Sau hơn 2 năm đi vào hoạt động, SETA International Việt Nam đã dần dần phát triển Tổng số nhân viên hiện tại hơn 80 cán bộ nhân viên.

- Tháng 3/2018, Dự án Massgenie được tách ra hoạt động riêng biệt và lấy tên là Massgenie Asia.

- Từ năm 2018 đến nay, công ty ngày càng mở rộng và phát triển.

2.1.3 Cơ cấu tổ chức của công ty

Hình 1.1: Sơ đồ tổ chức của công ty TNHH SETA International Việt Nam

Chức năng, nhiệm vụ của mỗi bộ phận, phòng ban như sau:

Chủ tịch là người nắm giữ quyền lực cao nhất trong công ty, có toàn quyền quyết định mọi hoạt động Nhiệm vụ của Chủ tịch bao gồm việc thông qua điều lệ và xác định phương hướng hoạt động của công ty.

Giám đốc công ty có trách nhiệm xây dựng chiến lược hoạt động và giám sát hiệu quả công việc của các thành viên trong nhóm.

- Phòng kế toán và pháp lý:

Trong lĩnh vực Kế toán, người phụ trách đảm nhận toàn bộ quản lý thu chi tài chính của Công ty, đảm bảo chi phí cho các hoạt động như lương, thưởng, mua sắm máy móc và vật liệu Họ có trách nhiệm lập phiếu thu chi cho tất cả các khoản chi phí phát sinh, đồng thời ghi chép và phản ánh chính xác, kịp thời tình hình tài chính hiện tại Ngoài ra, việc lập chứng từ về sự vận động của các loại tài sản trong Công ty cũng là một phần quan trọng trong công việc Cuối cùng, họ cần thực hiện báo cáo kế toán định kỳ hàng tháng, hàng quý và hàng năm để trình bày tình hình tài chính của Công ty.

Nhân sự Sản xuất Kỹ thuật

Về mặt pháp lý, bộ phận này có trách nhiệm soạn thảo và lưu trữ các tài liệu, hợp đồng của Công ty, đồng thời tiếp nhận và theo dõi các công văn, chỉ thị, quyết định Họ cũng tổ chức, triển khai và thực hiện nội quy lao động, quản lý nhân sự và đề xuất khen thưởng Ngoài ra, bộ phận này thực hiện các quy định để đảm bảo quyền lợi và nghĩa vụ của người lao động, bao gồm lương, thưởng, trợ cấp và phúc lợi.

Phòng nhân sự có trách nhiệm lập bảng báo cáo hàng tháng về tình hình biến động nhân sự Họ theo dõi và quản lý nhân sự, tổ chức tuyển dụng, bố trí lao động để đảm bảo đủ nhân lực cho sản xuất, đồng thời thực hiện việc sa thải nhân viên và đào tạo nhân viên mới.

Bộ phận kinh doanh đóng vai trò cầu nối giữa nội bộ và bên ngoài, thực hiện nghiên cứu và dự báo thị trường, phân khúc khách hàng, xác định mục tiêu và định vị thương hiệu Qua đó, bộ phận này tìm kiếm khách hàng tiềm năng và triển khai các hoạt động tiếp thị nhằm phát triển thị phần cho công ty Đồng thời, họ cũng phân tích hoạt động kinh doanh và lập báo cáo liên quan đến hợp đồng và đơn đặt hàng.

Bộ phận kỹ thuật của công ty đảm nhận tất cả các công việc liên quan đến kỹ thuật, bao gồm việc bố trí và lắp đặt thiết bị máy tính cùng các linh kiện cần thiết cho nhân viên Họ cũng có trách nhiệm khắc phục sự cố máy tính và hệ thống mạng nội bộ, quản lý phần mềm, hệ thống thông tin và website của công ty.

- Bộ phận sản xuất phầm mềm:

Quản lý dự án (PM) đóng vai trò quan trọng trong việc đảm bảo thành công của một dự án, bao gồm việc tìm hiểu nhu cầu khách hàng, lập kế hoạch sản xuất, điều phối công việc, theo dõi tiến độ và đánh giá kết quả dự án.

Bộ phận lập trình (DEV) chịu trách nhiệm thực hiện lập trình phần mềm theo yêu cầu của khách hàng và tham gia vào tất cả các giai đoạn của quy trình phát triển phần mềm.

Bộ phận kiểm thử (QA/QC) đóng vai trò quan trọng trong việc đảm bảo chất lượng sản phẩm phần mềm cho đến khi sản phẩm hoàn thiện Họ tạo sự liên kết chặt chẽ giữa các bộ phận như lập trình viên và người quản lý dự án, nhằm tối ưu hóa quy trình sản xuất phần mềm và nâng cao hiệu quả công việc.

Công ty Seta có một sơ đồ tổ chức bộ máy phân chia theo chức năng rõ ràng và hợp lý, phù hợp với phương thức hoạt động của công ty Nhờ vào cách tổ chức này, Seta đã tối ưu hóa hiệu quả làm việc của các cán bộ chuyên môn tại các phòng ban chức năng.

Công tác quản lý tại tổ chức được chuyên môn hóa cao, với mỗi bộ phận và phòng ban đảm nhận những nhiệm vụ cụ thể Việc này không chỉ tận dụng hiệu quả khả năng và trình độ chuyên sâu của cán bộ quản lý, mà còn giảm bớt gánh nặng cho ban lãnh đạo Tuy nhiên, các phòng ban vẫn hoạt động độc lập trong sự thống nhất và hỗ trợ lẫn nhau, tạo nên một hệ thống quản lý hiệu quả.

Công ty chủ yếu kinh doanh các ngành nghề sau:

- Lập trình máy tính: Dịch vụ lập trình, sản xuất phần mềm.

Dịch vụ tư vấn máy vi tính và quản trị hệ thống bao gồm lắp đặt phần cứng, tư vấn phần mềm, và thiết kế hệ thống Chúng tôi cung cấp giải pháp toàn diện để phân tích và tối ưu hóa hệ thống máy vi tính, đảm bảo hiệu suất tối đa cho doanh nghiệp của bạn.

- Xử lý dữ liệu, cho thuê và các hoạt động liên quan: Dịch vụ xử lý dữ liệu.

2.1.5 Kết quả hoạt động kinh doanh gần đây

2.1.5.1 Tình hình kinh doanh của Công ty Được thành lập và phát triển từ năm 2008, công ty TNHH Seta-International Việt Nam đã đạt được những thành công nhất định trong kinh doanh và ngày càng khẳng định vị thế của mình trên thị trường Theo như tình hình hoạt động kinh doanh của công ty trong những năm gần đây, công ty đang bước vào giai đoạn mở rộng thị trường, ngày càng nhiều dự án được kí kết.

Phân tích thực trạng quá trình kiểm thử phần mềm tại công ty TNHH Seta -

Trong chương I, chúng ta đã khám phá các khái niệm cơ bản về kiểm thử phần mềm và quy trình phát triển phần mềm Thực tế cho thấy không có phần mềm nào hoàn hảo theo bất kỳ mô hình phát triển nào, do thiếu bản đặc tả chi tiết và thời gian kiểm thử hạn chế Do đó, khi thực hiện công việc kiểm thử, bạn cần hình dung quy trình phần mềm hoạt động như thế nào để đạt được mục tiêu đề ra.

* Phương châm của việc kiểm thử của công ty

Tầm quan trọng của việc kiểm thử đầy đủ một chương trình TNHH Seta - International Việt Nam

Là một nhân viên kiểm thử, bạn có thể tin rằng mình có thể kiểm tra phần mềm một cách hoàn hảo và phát hiện tất cả các lỗi Tuy nhiên, điều này là không thể thực hiện, ngay cả với những chương trình đơn giản, vì bốn lý do sau đây.

 Số lượng dữ liệu đầu vào có thể là rất lớn

 Số lượng các dữ liệu đầu ra cũng vô cùng lớn

 Số lượng các “lối đi” trong phần mềm cũng lớn

 Đặc tả phần mềm có tính chất chủ quan, bạn có thể nói rằng lỗi là những khuyết điểm dưới con mắt của người dùng

Khi kết hợp tất cả các trường hợp trên, bạn sẽ tạo ra một tập hợp các điều kiện vô cùng phong phú, đến mức không thể thử nghiệm hết được.

* Quy trình sản xuất và kiểm thử phần mềm tại công ty Seta

Công ty Seta chuyên sản xuất phần mềm và nhận dự án từ nước ngoài, chủ yếu từ Mỹ Hiện tại, Seta đang tập trung vào các dự án công nghệ AI (trí tuệ nhân tạo), một xu hướng tiên tiến và hiện đại đang được ưu tiên bởi nhiều công ty trên toàn cầu.

Công ty áp dụng mô hình Agile trong quy trình sản xuất phần mềm nhờ vào sự linh hoạt của nó, và Scrum là phương pháp thực hiện hiệu quả Scrum, một phần của Agile, dựa trên quá trình thực nghiệm, chia nhỏ phần mềm thành các phần độc lập để lấy ý kiến khách hàng và điều chỉnh trong suốt quá trình phát triển, đảm bảo sản phẩm cuối cùng đáp ứng mong đợi Mô hình này tạo ra khung làm việc cho nhóm liên chức năng hợp tác, sản xuất thông qua các Sprint Nhóm Scrum thường xuyên đánh giá và điều chỉnh hoạt động để giảm rủi ro và tối ưu hóa quy trình làm việc, với thời gian mỗi Sprint hiện tại là 2 tuần.

Công ty áp dụng sự kết hợp giữa kiểm thử thủ công và tự động nhằm tối ưu hóa lợi ích từ cả hai phương pháp, đồng thời khắc phục những hạn chế của từng loại.

Kiểm thử thủ công vẫn chiếm ưu thế trong lĩnh vực kiểm thử, mặc dù kiểm thử tự động mang lại hiệu quả cao Tuy nhiên, một số lĩnh vực như khả năng sử dụng và thiết kế vẫn cần đến kiểm thử thủ công để đáp ứng các yêu cầu cụ thể.

Kiểm thử tự động cho phép nhóm kiểm thử tập trung vào việc phát triển các trường hợp kiểm thử, thay vì chỉ quản lý các yêu cầu Nó giúp theo dõi và quản lý tất cả các nhu cầu kiểm thử, các loại kiểm thử cần thiết và phạm vi kiểm thử Nhờ đó, kiểm thử tự động đảm bảo rằng sản phẩm phần mềm được phát hành có chất lượng cao.

Các công cụ kiểm thử tự động giúp kiểm soát và so sánh kết quả kiểm thử thực tế với kết quả mong đợi, đặc biệt trong kiểm thử hồi quy, nơi yêu cầu thực hiện các hành động lặp đi lặp lại Những công cụ này được áp dụng cho cả kiểm thử chức năng và phi chức năng, nâng cao hiệu quả và độ chính xác của quy trình kiểm thử phần mềm.

Đánh giá thực trạng quá trình kiểm thử phần mềm tại công ty TNHH Seta

Công ty Seta đã áp dụng quy trình Agile trong phát triển phần mềm, giúp đáp ứng nhanh chóng với sự thay đổi của công nghệ hiện đại Quy trình này không chỉ tối ưu hóa khả năng thích ứng mà còn đảm bảo rằng nhu cầu của khách hàng được thỏa mãn ngay từ giai đoạn kiểm thử các module đã hoàn thành.

Để rút ngắn chu kỳ chuyển đổi và phát triển sản phẩm, cần tích hợp nhiều yếu tố khác nhau, bao gồm việc thu thập dữ liệu từ các nguồn như hệ thống quản lý yêu cầu, kiểm soát thay đổi, quản lý tác vụ và môi trường kiểm thử Điều này đòi hỏi các công cụ tích hợp giúp quản lý yêu cầu, theo dõi lỗi và quản lý kiểm thử Các công cụ này hoạt động như kho lưu trữ dữ liệu cho các module khác nhau, cho phép chia sẻ và sử dụng chung trong nhóm phát triển và kiểm thử phần mềm.

Công ty hiện đang nghiên cứu và triển khai ứng dụng kiểm thử tự động trong quy trình kiểm thử, phản ánh xu hướng hiện đại trong lĩnh vực này Điều này cho thấy công ty đặc biệt chú trọng đến chất lượng sản phẩm và nỗ lực giảm thiểu cho bộ phận kiểm thử.

Trong quá trình kiểm thử, QA (Quality Assurance) có trách nhiệm đảm bảo chất lượng sản phẩm, trong khi Tester thường bị nhầm lẫn với QA Nhân viên QA xây dựng hệ thống, quy trình sản xuất và quản lý chất lượng, thực hiện công việc này trong mọi giai đoạn từ nghiên cứu thị trường đến chăm sóc khách hàng Họ cung cấp số liệu thống kê về chất lượng sản phẩm dựa trên các tiêu chí khác nhau để đánh giá mức độ hoàn thành mong muốn của khách hàng Ngược lại, Tester (hay QC - Quality Control) xác nhận rằng sản phẩm đáp ứng các yêu cầu đã định trong hợp đồng và tiêu chuẩn kỹ thuật.

QC mang tính vi mô, tập trung vào từng sản phẩm riêng lẻ, cho thấy rằng công ty Seta đang kết hợp hai chức vụ này Việc này giúp giảm thiểu chi phí nhân sự vì cả hai vị trí đều nhằm đảm bảo chất lượng sản phẩm Tuy nhiên, điều này cũng tạo ra thách thức cho người QA khi phải đảm nhiệm nhiều công việc cùng lúc, có thể ảnh hưởng đến khả năng hoàn thành toàn bộ nhiệm vụ một cách hiệu quả.

Để giảm thiểu lãng phí do lỗi, kỹ sư kiểm thử cần tập trung vào việc ngăn ngừa lỗi thay vì chỉ tìm kiếm chúng Việc ngăn ngừa lỗi xảy ra có giá trị hơn nhiều so với việc phát hiện một lỗi nghiêm trọng, vì khi lỗi được phát hiện, sự lãng phí đã xảy ra Để nâng cao hiệu quả trong việc ngăn ngừa lỗi, kỹ sư kiểm thử nên tham gia vào tất cả các giai đoạn của dự án, từ phân tích yêu cầu, thiết kế cho đến viết mã, và càng sớm càng tốt.

Hiện nay, công ty đang bắt đầu nghiên cứu và áp dụng kiểm thử tự động, tuy nhiên số lượng nhân viên có khả năng viết mã để thực hiện kiểm thử tự động còn hạn chế Phần lớn quy trình kiểm thử vẫn chủ yếu dựa vào kiểm thử thủ công Công ty chỉ triển khai kiểm thử tự động khi có yêu cầu từ khách hàng Đặc biệt, hầu hết các công cụ kiểm thử hiện tại đều miễn phí, giúp tiết kiệm chi phí, nhưng không tận dụng được nhiều tính năng mà kiểm thử tự động mang lại.

NGHIÊN CỨU VÀ ỨNG DỤNG CÔNG CỤ KIỂM THỬ TỰ ĐỘNG PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA

Tìm hiểu về công cụ kiểm thử tự động PUPPETEER - CODECEPJS

Để hiểu Puppeteer, trước hết cần nắm rõ khái niệm về trình duyệt không đầu (Headless browser), là loại trình duyệt hoạt động mà không cần giao diện đồ họa Điều này cho phép người dùng thực hiện các tác vụ như thu thập dữ liệu, kiểm tra, chụp ảnh màn hình và đo hiệu suất mà không cần mở trình duyệt theo cách thông thường Đặc biệt, khi làm việc trên các máy chủ không có giao diện, trình duyệt không đầu trở thành lựa chọn tối ưu.

Puppeteer là thư viện Node.js cho phép điều khiển trình duyệt Chrome headless thông qua mã lập trình, mang lại khả năng thực hiện mọi tác vụ mà Chrome có thể làm.

Ta có thể dùng NodeJS và Puppeteer để làm nhiều việc hữu ích như chụp ảnh màn hình, thu thập dữ liệu, chạy automation test.

3.1.2 Puppeteer có thể làm gì?

Puppeteer có thể làm được nhiều việc, đặc biệt là nó giải quyết được các vấn đề mà nhiều công cụ đang gặp phải, đó là:

Hiện nay, việc chỉ lấy HTML thuần từ trang web trở nên hạn chế, vì hầu hết các trang đều sử dụng Javascript và Ajax để lấy dữ liệu và render nội dung Do đó, chỉ thu thập HTML thuần không còn đủ để thực hiện nhiều công việc hiệu quả.

 Bên server có một số biện pháp để chặn HTTP request đơn thuần (dựa theo user

- agent, ) nên dễ bị chặn hơn

 Với một số trang phải đăng nhập mới có dữ liệu, việc quản lí cookie, đăng nhập, với HTML Agility Pack rất rắc rối

Sử dụng trình duyệt headless giúp giải quyết hiệu quả các vấn đề liên quan đến việc thu thập dữ liệu từ các trang web sử dụng Ajax Thậm chí, Google cũng áp dụng công nghệ này để lấy dữ liệu từ những trang web tương tự.

3.1.3 Tại sao nên sử dụng Puppeteer cho testing?

Trong thập kỷ qua, sự phát triển mạnh mẽ của các ứng dụng web dựa trên JavaScript và các framework mới đã giải quyết nhiều vấn đề liên quan đến hiệu suất trang web Các yếu tố giao diện người dùng tương tác, tốc độ tải nhanh và các thành phần thiết kế ấn tượng đã trở thành tiêu chuẩn mới mà không ảnh hưởng nhiều đến tốc độ Hiện nay, CSS và HTML được tích hợp vào JavaScript, nhờ vào hiệu quả vượt trội của nó Mặc dù việc sử dụng các framework JavaScript đã nâng cao hiệu suất, nhưng điều này cũng làm cho công việc kiểm thử trở nên phức tạp hơn Để giải quyết vấn đề này, Puppeteer đã được phát triển như một thư viện Node.js, giúp thực hiện kiểm tra trên trình duyệt Chrome một cách hiệu quả.

Trình duyệt không đầu, như tên gọi, là loại trình duyệt hoạt động dưới dạng ứng dụng mà không có giao diện người dùng Các trình duyệt này, chẳng hạn như Chrome không đầu, nổi bật với tốc độ nhanh hơn, tiêu thụ ít bộ nhớ hơn, linh hoạt hơn và khả năng ổn định cao hơn khi chịu áp lực tự động hóa.

Google đang nỗ lực cung cấp hỗ trợ cho hệ sinh thái DevTools, giúp việc sử dụng Puppeteer trở nên dễ dàng hơn Nhờ vào công cụ này, việc thu thập dữ liệu web, quét và khởi chạy các tập lệnh tự động trở nên ổn định và hiệu quả hơn bao giờ hết.

Tự động hóa dễ dàng

Selenium là công cụ hàng đầu trong lĩnh vực thử nghiệm tự động hóa, được cộng đồng thử nghiệm chấp nhận rộng rãi Tuy nhiên, một điểm cần lưu ý là Selenium yêu cầu phải có trình duyệt được cài đặt, bất kể nó được sử dụng trên đám mây hay máy cục bộ Sự phức tạp trong việc tích hợp với nhiều thành phần khác nhau khiến cho quá trình thử nghiệm trở nên khó khăn hơn.

Sử dụng Chrome không đầu đang ngày càng trở nên phổ biến nhờ vào khả năng tích hợp các tập lệnh tự động vào trình duyệt Việc kết hợp Karma, Mocha và Puppeteer giúp đơn giản hóa quá trình thực hiện các thử nghiệm tự động, mang lại hiệu quả cao hơn cho người dùng.

Kiểm tra hồi quy giao diện người dùng trực quan

Puppeteer là công cụ lý tưởng để kiểm tra hồi quy các yếu tố giao diện người dùng (UI) trên trang web Để đạt hiệu quả cao nhất, người dùng nên sử dụng phiên bản Chrome mới nhất nhằm đảm bảo kiểm soát API tốt hơn Thông thường, Mocha được kết hợp với Puppeteer để thực hiện kiểm tra hồi quy các tính năng UI khác nhau, đồng thời cung cấp các móc (hooks) hữu ích cho phép người dùng thực hiện các thao tác trước hoặc sau khi thử nghiệm.

Puppeteer thành công chủ yếu vì nó đơn giản hóa các chức năng liên quan đến các tác vụ tự động được thực hiện trên trình duyệt.

Kiểm tra ảnh chụp màn hình

Bộ ba Jest, Chrome không đầu và Puppeteer có thể được sử dụng để thử nghiệm dựa trên ảnh chụp màn hình Tính năng Ảnh chụp màn hình tự động của LambdaTest đã tận dụng cả ba công cụ này để chụp ảnh màn hình trên nhiều trình duyệt Chrome Người dùng có thể dễ dàng chụp các cây React và các giá trị tuần tự hóa khác để phân tích các thay đổi trạng thái trong quá trình thử nghiệm Jest đi kèm với hệ sinh thái React mạnh mẽ, giúp tích hợp và kiểm tra các yếu tố JavaScript một cách dễ dàng.

Puppeteer-ảnh chụp màn hình-kiểm tra là một thư viện trong chính trình điều khiển rối cho phép tạo ảnh chụp màn hình trong khi kiểm tra.

Tương tự ava-Puppeteer là một thư viện khác có sẵn trên GitHub sẽ sớm xuất hiện vào npm.

Sử dụng Puppeteer, bạn có thể đo lường và phân tích hiệu suất trang web để tối ưu hóa cho các thiết bị và tốc độ mạng khác nhau Chrome cung cấp DevTools cho phép ghi lại Dòng thời gian hiệu suất, tự động phát hiện các vấn đề liên quan đến hiệu suất Puppeteer là một API kiểm soát cao cấp cho Giao thức Công cụ dành cho nhà phát triển Chrome, giúp xử lý các yếu tố không đồng bộ và thay đổi trạng thái DOM một cách dễ dàng Bạn có thể lưu dữ liệu hiệu suất dưới dạng tệp JSON Khi sử dụng Puppeteer, bạn có thể kiểm soát các nhân viên dịch vụ, kiểm tra bộ nhớ đệm và thời gian tải của trang web, cả có và không có thời gian bộ đệm Thời gian phản hồi của trang web có thể được theo dõi bằng answerEnd, cùng với ảnh hưởng của băng thông mạng và độ trễ.

Tải thử nghiệm bằng cách sử dụng Puppeteer

Load Test là quá trình xác định số lượng phiên bản tối đa có thể chạy đồng thời trên trang web của bạn Bằng cách sử dụng nhiều phiên bản Puppeteer, bạn có thể dễ dàng thực hiện thử nghiệm tải cho trang web đang được đánh giá.

Puppeteer, đúng như tên gọi, cho phép bạn điều khiển Chrome không đầu một cách hiệu quả, giúp khởi chạy nhiều phiên thử nghiệm trên một hoặc nhiều trình duyệt Phần mềm này hỗ trợ xử lý số lượng mẫu lớn và cho phép chạy nhiều phiên đồng thời trên mỗi mẫu, mang lại sự linh hoạt và tiện lợi cho người dùng.

Kết thúc thử nghiệm (Kiểm thử từ đầu đến cuối)

Thử nghiệm từ đầu đến cuối, hay còn gọi là thử nghiệm chấp nhận, thường ít phổ biến hơn trong lĩnh vực kiểm thử phần mềm Trước đây, Selenium được sử dụng cho thử nghiệm chấp nhận nhưng thường gặp phải nhiều lỗi Puppeteer đã ra đời với sự cải tiến trong việc kiểm soát API, giúp khắc phục các vấn đề này Một trong những điểm mạnh của Puppeteer là khả năng hoạt động độc lập với bất kỳ stack nào, cho phép nó tương thích với các khung công tác như React, Angular và nhiều thư viện khác.

ỨNG DỤNG CÔNG CỤ VÀO CÔNG CỤ KIỂM THỬ TỰ ĐỘNG

3.2.1 Giới thiệu về Các phần mềm cần thiết

Trong phần này, chúng tôi sẽ hướng dẫn bạn cách thực hiện và ghi lại các bài kiểm thử end to end cho dự án của bạn, bao gồm tất cả các yếu tố cần thiết và mã nguồn cơ bản cho kiểm thử end to end.

Visual Studio Code is an efficient and lightweight code editor ideal for NodeJS development, offering easy debugging capabilities It is free to use and compatible with both Windows and Mac operating systems, making it accessible for all users You can download it from [Visual Studio Code's official website](https://code.visualstudio.com/).

Nếu bạn có kỹ năng lập trình nâng cao, bạn có thể sử dụng Notepad++ hoặc Sublime Text Tuy nhiên, để phù hợp với yêu cầu của khóa luận, tôi sẽ chọn sử dụng Visual Studio Code.

3.2.2 Cài đặt và khởi tạo Puppeteer – Codeceptjs và ứng dụng

*Tạo thư mục mang tên “e2e-test”

Vào thư mục muốn chứa thư mục test chuẩn bị được khởi tạo Mình sẽ vào ổ D, tạo thư mục có tên là “automation_demo”.

Mở thư mục mới tạo, mở cmd hoặc Git Bash của bạn bằng cách giữ Shift + chuột phải, chọn “Open command window here”.

Sau khi cửa sổ cmd được bật lên, bạn gõ “npm init” “npm” là package của nodejs, còn “init” có nghĩa là khởi tạo, sau đó ấn Enter

Nếu không có thông tin gì cần thay đổi thì chúng ta cứ ấn Enter tiếp.

Sau khi khởi tạo, tệp "package.json" sẽ xuất hiện và chứa các dependency cần thiết cho dự án Nếu cần thêm thông tin, bạn phải khai báo và cài đặt trong tệp này Bây giờ, hãy mở mã nguồn để kiểm tra xem các thông tin đã được lưu trong tệp này hay chưa.

“package.json”, chuột phải, chọn “Open with Code”

Gõ câu lệnh “npm install codecept.js”, nhấn Enter và đợi máy cài đặt

Sau khi đã thành công sẽ hiện thị như hình bên trên Bạn mở code, trong mục

“dependencies” thể hiện là codecept.js bản 2.3.2 đã được cài Khi cài, máy tính sẽ tự động cài đặt phiên bản mới nhất.

Tiếp theo, chúng ta khởi tạo framework bằng cách chạy 2 câu lệnh sau:

//node_modules/.bin/codeceptjs npm install puppeteer

Khởi tạo xong, trong thư mục “Automation_demo” sẽ xuất hiện file

The "codecept.conf.js" file contains essential information and the purpose of the project's files As shown in the image, the "helpers" section indicates that we are using the Puppeteer framework, and the website we intend to test is "https://www.stage.veritone.com," which is the current project of Seta company.

Chúng ta sẽ bắt đầu viết script cho test case đăng nhập bằng cách tạo một file mới có tên “demo_test.js” trong thư mục “test_e2e”, nơi chúng ta sẽ lưu trữ các đoạn script liên quan.

Dưới đây là đoạn code cho trường hợp đăng nhập thất bại khi tên người dùng hoặc mật khẩu không đúng Đoạn script này tương tự như quy trình kiểm thử bằng tay, chỉ khác là chúng ta sử dụng ngôn ngữ lập trình để máy tính hiểu được hành động mong muốn.

“I.amOnPage(“/login/#/”) có nghĩa là chúng ta đang ở đường dẫn

“https://www.stage.veritone.com/login/#/” để chuyển trang trình duyệt đến màn hình login của dự án.

Câu lệnh “I.waitForText(“Login”,60)” chỉ ra rằng chúng ta đang chờ đợi để thấy dòng chữ “Login” xuất hiện trên trang trình duyệt Thời gian tối đa cho việc tải trang này là 60 giây.

Ngày đăng: 30/05/2022, 10:10

HÌNH ẢNH LIÊN QUAN

- Thay đổi hình thức trình bày và màu sắc món ăn để bữa ăn hấp  dẫn. - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
hay đổi hình thức trình bày và màu sắc món ăn để bữa ăn hấp dẫn (Trang 7)
1.1.4. Các mô hình phát triển phần mềm - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
1.1.4. Các mô hình phát triển phần mềm (Trang 10)
Có khá nhiều mô hình phát triển phần mềm khác nhau, trong đó một số được ứng dụng  khá phổ biến trên thế giới: - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
kh á nhiều mô hình phát triển phần mềm khác nhau, trong đó một số được ứng dụng khá phổ biến trên thế giới: (Trang 10)
*Mô hình chữ V - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
h ình chữ V (Trang 11)
*Mô hình Agile là một phương pháp phát triển phần mềm linh hoạt để làm sao đưa  sản  phẩm  đến  tay người dùng càng nhanh càng sớm càng tốt - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
h ình Agile là một phương pháp phát triển phần mềm linh hoạt để làm sao đưa sản phẩm đến tay người dùng càng nhanh càng sớm càng tốt (Trang 12)
Hình 1.1: Sơ đồ tổ chức của công ty TNHH SETA International Việt Nam - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
Hình 1.1 Sơ đồ tổ chức của công ty TNHH SETA International Việt Nam (Trang 23)
Bảng 3: Kết quả hoạt động kinh doanh của công ty trong 3 năm gần đây - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
Bảng 3 Kết quả hoạt động kinh doanh của công ty trong 3 năm gần đây (Trang 26)
Sau khi đã thành công sẽ hiện thị như hình bên trên. Bạn mở code, trong mục “dependencies”  thể  hiện  là  codecept.js  bản 2.3.2 đã được cài - Nghiên cứu và ứng dụng kiểm thử tự động sử dụng puppeteer   CodeceptJS cho công ty TNHH seta  international việt nam
au khi đã thành công sẽ hiện thị như hình bên trên. Bạn mở code, trong mục “dependencies” thể hiện là codecept.js bản 2.3.2 đã được cài (Trang 38)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w