Với sự phát triển mạnh mẽ của phát triển phần mềm cũng như là kiểm thử phần mềm hiện nay, có rất nhiều công cụ hỗ trợ cho kiểm thử tự động, mỗi công cụ có thế có một số phương pháp luận
Trang 1TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHÓA LU ẬN TỐT NGHIỆP
Giáo viên hướng dẫn: Sinh viên thực hiện: ThS Nguyễn Thị Thu Thủy Bùi Thị Lâm Oanh
L ớp: 52S21
Mã SV: 16D190026
Hà Nội, 2020
Trang 2LỜI CẢM ƠN
Để hoàn thiện khóa luận tốt nghiệp với đề tà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” ngoài sự cố gắng của bản thân qua quá trình học tập còn có sự giúp đỡ rất nhiều của Nhà
trường, thầy cô, cùng ban lãnh đạo cũng như cán bộ nhân viên trong công ty TNHH Seta - International Việt Nam
Lời đầu tiên, em xin gửi lời cảm ơn chân thành và sâu sắc nhất tới cô giáo
Th.S Nguyễn Thị Thu Thủy người đã tận tình hướng dẫn và giúp đỡ em rất nhiều trong suốt quá trình làm khóa luận này Cô đã giúp em có những định hướng đúng đắn khi thực hiện khóa luận tốt nghiệp cũng như những kỹ năng nghiên cứu cần thiết khác
Cô cũng là người đã đóng góp ý kiến, sửa bài giúp em có thể hoàn thành tốt nhất bàicó thể
Em xin gửi lời cảm ơn chân thành tới ban giám đốc cũng như những anh/chịlàm việc tại công ty TNHH Seta-International Việt Nam vì sự quan tâm, ủng hộ hỗ trợ cho
em trong quá trình thực tập và thu thập tài liệu
Em xin gửi lời cảm ơn tới các thầy cô trong nhà trường và các thầy cô khoa Hệ Thống Thông Tin Kinh Tế trường đại học Thương Mại đã chia sẻ cho em những kiến thức quý báu trong suốt quá trình học tập để em có đủ kiến thức hoàn thành tốt bài khóa luận này
Với thời gian nghiên cứu và kiến thức còn hạn chế nên không tránh khỏi những sai sót trong quá trình phân tích, đánh giá Vì thế, em rất mong nhận được những ý kiến đóng góp của quý thầy cô, ban lãnh đạo Công ty để bài khóa luận hoàn thiện hơn
Em xin chân thành cảm ơn!
Trang 3MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC iii
PHẦN MỞ ĐẦU 1
1 Tầm quan trọng, ý nghĩa của vấn đề nghiên cứu .1
2 Mục tiêu và nhiệm vụ nghiên cứu .2
2.1 Mục tiêu nghiên cứu 2
2.2 Nhiệm vụ nghiên cứu 2
3 Đối tượng và phạm vi nghiên cứu .2
3.1 Đối tượng nghiên cứu .2
3.2 Phạm vi nghiên cứu .2
4 Phương pháp nghiên cứu .3
4.1 Phương pháp thu thập dữ liệu .3
4.2 Phương pháp xử lý dữ liệu .3
5 Kết cấu khóa luận .3
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 4
1.1.1 Khái niệm 4
1.1.2 Phân loại phần mềm 4
1.1.3 Quy trình phát triển phần mềm 4
1.1.4 Các mô hình phát triển phần mềm 6
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 8
1.2 Kiểm thử phần mềm 9
1.2.1 Kiểm thử phần mềm là gì? 9
1.2.2 Vai trò của kiểm thử phần mềm 9
1.2.3 Quy trình kiểm thử phần mềm 10
1.2.4 Quy trình xử lý lỗi 11
1.2.5 Phân loại và các kỹ thuật kiểm thử 12
1.3 TÌM HIỂU VỀ KIỂM THỬ TỰ ĐỘNG 13
1.3.1 Khái quát chung về kiểm thử tự động 13
1.3.2 Lợi ích và khó khăn của kiểm thử tự động 14
1.3.3 Thị trường kiểm thử tự động 15
Trang 41.3.4 Tình hình nghiên cứu và ứng dụng của kiểm thử tự động 15
1.3.5 So sánh giữa kiểm thử thủ công và kiểm thử tự động 16
CHƯƠNG II: THỰC TRẠNG VIỆC KIỂM THỬ PHẦN MỀM TẠI CÔNG TY TNHH SETA 18
2.1 Tổng quan về công ty TNHH Seta - International Việt Nam 18
2.1.1 Giới thiệu chung về công ty 18
2.1.2 Quá trình thành lập công ty 18
2.1.3 Cơ cấu tổ chức của công ty 19
2.1.4 Lĩnh vực hoạt động 21
2.1.5 Kết quả hoạt động kinh doanh gần đây 21
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 - International Việt Nam 22
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 International Việt Nam 24
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 26
3.1 Tìm hiểu về công cụ kiểm thử tự động PUPPETEER - CODECEPJS 26
3.1.1 Puppeteer là gì? 26
3.1.2 Puppeteer có thể làm gì? 26
3.1 3 Tại sao nên sử dụng Puppeteer cho testing? 26
3.2 ỨNG DỤNG CÔNG CỤ VÀO CÔNG CỤ KIỂM THỬ TỰ ĐỘNG PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA 29
3.2.1 Giới thiệu về Các phần mềm cần thiết 29
3.2 2 Cài đặt và khởi tạo Puppeteer – Codeceptjs và ứng dụng 29
Trang 5PHẦN MỞ ĐẦU
1 Tầm quan trọng, ý nghĩa của vấn đề nghiên cứu
Chúng ta đã và đang chứng kiến sự tăng trưởng đáng kinh ngạc của ngành công nghiệp phần mềm trong vài thập kỷ qua Nếu như trước đây, phần mềm máy tính chỉ được sử dụng để tính toán khoa học kỹ thuật và xử lý dữ liệu, thì ngày nay, nó đã được ứng dụng vào mọi mặt của đời sống hằng ngày của con người Từ các ứng dụng nhỏ để đ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 đến các ứng dụng lớn hơn cho rất nhiều người dùng cùng sử dụng như hệ thống quản lý doanh nghiệp, các
hệ thống hướng dẫn giao thông, hệ thống quản lý việc khám chữa bệnh Có thể nói, công nghiệp phần mềm đã len lỏi đến từng ngóc ngách nhỏ nhất của đời sống con người, đòi hỏi chất lượng phần mềm ngày một nâng cao hơn Đồng nghĩa với việc cần phải kiểm thử phần mềm chặt chẽ để có thể đảm bảo chất lượng của phần mềm
Kiểm thử phần mềm là khâu sống còn của sản phẩm trước khi đưa vào sử dụng, góp phần quyết định sự thành công của dự án phần mềm Tuy nhiên, kiểm thử phần mềm là một công việc tiêu tốn rất nhiều thời gian, tiền bạc, công sức Nhất là đối với các phần mềm lớn, chi phí này càng tăng lên gấp bội mỗi khi có sự thay đổi, nâng cấp các chức năng của phần mềm Mà điều này thì không thể tránh khỏi, phần mềm luôn cần được thay đổi để đáp ứng yêu cầu ngày một cao hơn của người sử dụng
Hiện tại, công việc kiểm thử tại công ty Seta chủ yếu được thực hiện bởi kiểm thử thủ công Nhiều khi chức năng thay đổi nhỏ nhưng phần cần thực hiện kiểm thử lại rất lớn, bên cạnh việc tốn kém chi phí, nhân lực, cũng có khả năng có thể chậm tiến
độ, bị lọt lỗi khi bàn giao sản phẩm Do đó, luận văn mong muốn đưa ra giải pháp tự động hóa kiểm thử nhằm giảm thiểu chi phí kiểm thử, cả về thời gian, tiền bạc, con người, và giảm sự nhàm chán cho kiểm thử viên mà vẫn đảm bảo được chất lượng của sản phẩm
Với sự phát triển mạnh mẽ của phát triển phần mềm cũng như là kiểm thử phần mềm hiện nay, có rất nhiều công cụ hỗ trợ cho kiểm thử tự động, mỗi công cụ có thế
có một số phương pháp luận khác nhau Nhưng điều đó không đồng nghĩa với việc lựa chọn công cụ bất kỳ nào cũng tốt, hoặc cứ áp dụng kiểm thử tự động là có thể tiết kiệm chi phí và đảm bảo dự án sẽ thành công Vì vậy luận văn mong muốn nghiên cứu và áp dụng công cụ kiểm thử Puppeteer – Codeceptjs vào thực tế công ty
Trang 62 Mục tiêu và nhiệm vụ nghiên cứu.
2.1 Mục tiêu nghiên cứu
Xác định vai trò quan trọng của giai đoạn kiểm thử đối với quy trình sản xuất phần mềm và mục đích của việc áp dụng các công cụ kiểm thử tự động vào việc kiểm thử Trên cơ sở nghiên cứu và phân tích ứng dụng công cụ tự động trong việc kiểm thử sản phẩm nhằm nâng cao chất lượng của phần mềm
Bên cạnh đó, kiểm thử tự động cũng giúp rút ngắn thời gian và giảm chi phí cho sản phẩm phần mềm Nó giúp cho các chuyên gia kiểm thử tìm ra lỗi một cách chính xác hơn trong quá trình tạo ra phần mềm và khắc phục những hạn chế của việc kiểm thử thủ công Việc kiểm thử được thực hiện chặt chẽ sẽ hạn chế lỗi, tuy nhiên trong phần mềm vẫn còn nhiều lỗi tiềm ẩn mà việc làm bằng thủ công không thể nhìn nhận được hết dẫn đến khả năng gây thiệt hại cho nhà sản xuất Vì vậy, việc áp dụng kiểm thử tự động là phương pháp tốt để đảm bảo cho 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 đủ
2.2 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 lại kiến thức và các lý luận liên quan đến đề tài nghiên cứu: Các khái niệm cơ bản, tiến trình kiểm thử, các phương pháp, kỹ thuật kiểm thử và ứng dụng
- 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 – Codeceptjs vào thực tế công ty để thấy được tính thực tiễn của đề tài Nêu các kết quả đạt được, chưa đạt được và hướng giải quyết các vấn đề khi kiểm thử và ứng dụng công cụ này
3 Đối tượng và phạm vi nghiên cứu.
3.1 Đối tượng nghiên cứu.
- Nghiên cứu công cụ kiểm thử tự động Puppeteer – Codeceptjs vào thực tế công ty
- Các kiến thức về việc kiểm thử phần mềm và các kiến thức liên quan
3.2 Phạm vi nghiên cứu.
- Về không gian: Thực hiện nghiên cứu đề tài tại công ty TNHH Seta và trong phạm vi của bài toán đặt ra
- Về thời gian: Từ 09/10/2019 đến 03/12/2019
Trang 74 Phương pháp nghiên cứu.
4.1 Phương pháp thu thập dữ liệu.
- Thu thập dữ liệu thứ cấp: Trong khóa luận, em đã sử dụng những phương pháp thu thập dữ liệu như: trên mạng Internet, tham khảo các bài báo, những khóa luận có
đề tài tương tự,
4.2 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 trên cơ sở tổng hợp và vận dụng các phương pháp nghiên cứu như thống kê, tổng hợp, phân tích, so sánh
5 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 kiểm thử phần mềm và kiểm thử tự động: Khái niệm về kiểm thử phần mềm, quy trình kiểm thử phần mềm, các phương pháp và kỹ thuật kiểm thử Tìm hiểu về những kiến thức liên quan đến kiểm thử tự động và ứng dụng của nó hiện nay trong việc kiểm thử
Chương II: Thực trạng việc kiểm thử phần mềm tại công ty TNHH Seta - International Việt Nam: Giới thiệu về công ty, lĩnh vực hoạt động, khái quát những gì công ty đã đạt được Bên cạnh đó, tìm hiểu quy trình kiểm thử phần mềm để nhìn nhận được những ưu, nhược điểm trong giai đoạn này
Chương III: Nghiên cứu và ứng dụng công cụ kiểm thử tự động Puppeteer – Codeceptjs vào thực tế công ty TNHH Seta - International Việt Nam: Tìm hiểu công
cụ Puppeteer – Codeceptjs và ứng dụng vào thực tiễn bài toán, đưa ra điểm mạnh, điểm yếu của công cụ này
Trang 8CHƯƠNG I: TỔNG QUAN KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ TỰ ĐỘNG
1.1 Phần mềm
1.1.1 Khái niệm
Phần mềm là một tập hợp những câu lệnh hoặc chỉ thị được viết bằng một hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định và các dữ liệu hay tài liệu liên quan nhằm tự động thực hiện một số nhiệm vụ hay chức năng hoặc giải quyết một vấn đề cụ thể nào đó Phần mềm thực hiện các chức năng của nó bằng cách gửi các chỉ thị trực tiếp đến phần cứng (hay phần cứng máy tính) hoặc bằng cách cung cấp dữ liệu để phục
vụ các chương trình hay phần mềm khác trong hệ thống
1.1.2 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 dùng để vận hành máy tính và các phần cứng máy tính Đây là các loại phần mềm mà hệ điều hành liên lạc với chúng để điều khiển và quản lý các thiết bị phần cứng
- 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…
xử lý đồng bộ công việc tương ứng vị trí của mình thông qua cách thức chung của
Trang 9công ty, hay ít nhất ở cấp độ dự án Có thể nói quy trình phát triển/ xây dựng phần mềm có tính chất quyết định để tạo ra sản phẩm chất lượng tốt với chi phí thấp và năng suất cao.
Các giai đoạn phát triển của một sản phẩm phần mềm
1 Giải
pháp
Thực hiện khảo sát chi tiết yêu cầu khách hàng
và tổng hợp vào tài liệu Giải pháp (Phân tích nghiệp vụ, Phân tích yêu cầu, Đặc tả yêu cầu, 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
Thiết kế tổng thể, thiết kế CSDL, Thiết kế chi tiết
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
TestcasesLỗi trên Hệ thống quản lý lỗi
5 Triển
khai
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
Trang 101.1.4 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 thác nước:
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ả
Xác định những yêu cầu liên quan đến chức năng và phi chức năng
mà hệ thống phần mềm cần có Đầu ra của giai đoạn này là “Bản đặc tả yêu cầu phần mềm” (SRS)
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ử Bao gồm kiểm thử các thành phần và hệ thống, 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 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
=> Nhược điểm của mô hình thác nước: Thực tế cho thấy đến những giai đoạn cuối của dự án mới có khả năng nhận ra sai sót trong những giai đoạn trước và phải quay lại để sửa chữa
Trang 11*Mô hình chữ V
- Giai đoạn phát triển:
+ 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
- Giai đoạn kiểm thử:
+ 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à quy trình phát triển phần mềm mở rộng của quy trình phát triển phần mềm theo mô hình thác nước Toàn bộ quy trình được chia thành hai nhánh: Phát triển và Kiểm thử Mỗi giai đoạn phát triển sẽ được tiến hành song song với một giai đoạn kiểm thử tương ứng, từ đó các lỗi được phát hiện sớm ngay từ đầu
Trang 12* 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 Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại Các phân đoạn (được gọi là Iteration hoặc Sprint) này thường có khung thời gian ngắn (từ 1- 4 tuần) Trong mỗi phân đoạn này, nhóm phát triển thực hiện đầy đủ các công việc cần thiết như lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử (với các mức độ khác nhau) để cho ra các phần nhỏ của sản phẩm Cuối mỗi phân đoạn thường cho ra các phần nhỏ của sản phẩm cuối cùng có thể chạy tốt và sử dụng được ngay Cứ lặp đi lặp lại như thế đến khi hoàn thành dự án và khách hàng được thỏa mãn
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
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 quan hệ khăng khít với nhau Phát triển phần mềm ngay từ những pha đầu tiên như phân tích yêu cầu, phân tích thiết
kế hệ thống, phải được tiến hành kiểm thử một cách độc lập bởi một đội ngũ có kinh nghiệm để nếu có phát hiện ra sai sót thì phải tiến hành sửa chữa kịp thời, nếu càng để
về sau mới phát hiện ra lỗi thì chi phí để sửa chữa là vô cùng lớn Những pha đầu tiên của quy trình phát triển phần mềm thì chi phí là nhỏ không đáng kể nhưng càng để về
Trang 13sau thì chi phí tăng lên rất nhiều lần Vì vậy ta không thể chủ quan mà lơ là việc kiểm thử ngay từ giai đoạn đầu của phát triển phần mềm Điều này là cần thiết nhất là đối với các dự án phần mềm lớn của các doanh nghiệp ngày nay
1.2 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 khảo sát một hệ thống hay thành phần dưới những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh nào đó của hệ thống hay thành phần đó (Theo Bảng chú giải thuật ngữ chuẩn IEEE của Thuật ngữ kỹ nghệ phần mềm – IEEE Standard Glossary of Software Engineering Terminology)
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à hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất lượng của sản phần hay dịch vụ phần mềm ấy Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau (Theo bách khoa toàn thư mở Wikipedia)
Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm là hoạt động nhằm tìm kiếm, phát hiện các lỗi của phần mềm đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt
ra Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập về phần mềm, điều này cho phép việc đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm
1.2.2 Vai trò của kiểm thử phần mềm
Việc tạo ra một sản phẩm phần mềm phải trải qua nhiều giai đoạn, người ta gọi là quy trình phát triển phần mềm, bắt đầu từ khi bắt đầu có ý tưởng cho đến khi đưa ra sản phẩm phần mềm thực thi Khối lượng công việc trong từng giai đoạn của quá trình sản xuất phần mềm cũng thay đổi theo thời gian
Như vậy, một sản phẩm phần mềm không chi đơn gian là các đoạn mã chương trình mà còn rất nhiều phần ẩn đằng sau nó Vì vậy, việc mắc lỗi không chỉ xảy ra trong khi lập trình mà còn xảy ra cao hơn trong các công đoạn khác của quy trình phát
Trang 14triển một sản phẩm phần mềm Việc kiểm thử cũng vì thế phải được tiến hành trong tất
- Xác định các tiêu chí kết thúc việc kiểm thử (exit criteria) chẳng hạn như tỉ lệ
độ bao phủ của test case, số lượng bug tìm được, độ nghiêm trọng của những con bug tìm được Bên dưới là 1 ví dụ cơ bản cho tiêu chí kết thúc kiểm thử
* Thiết kế kiểm thử:
- 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ử
- Thiết kế test case
- Đá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
* Thực thi kiểm thử:
- Chuẩn bị test data
- 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 đó
Trang 15- 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ử: Đánh giá toàn bộ quá trình kiểm tra bao gồm xem xét và đánh giá kết quả kiểm tra lỗi, chỉ định các yêu cầu thay đổi và tính toán số liệu liên quan, đến quá trình kiểm
1.2.4 Quy trình xử lý lỗi
Trang 16Quy trình quản lý lỗi bao gồm 4 bước chính :
Bước 1:Khi xác định ra lỗi, 1 vấn đề thì lỗi đó được ghi vào hệ thống quản lý lỗi Nếu không có một hệ thống quản lý lỗi thì ghi nhận vào một biểu mẫu riêng của dự án dưới dạng excel hay word Ghi nhận lỗi phải đày đủ thông tin, mô tả kỹ lỗi đó, xuất hiện như thế nào, thực hiện hoạt động đảm bảo chất lượng gì? Thông thường ai phát hiện ra lỗi thì người đó phải là người ghi nhận lỗi đó
Bước 2: Sau khi lỗi được ghi nhận sẽ phải thực hiện phân tích lỗi đó để trước tiên xác nhận xem đó có phải là lỗi hay không, để có những hành động thích hợp
Bước 3 : Lỗi được xác định là sẽ sửa thì phải được giao cho người thích hợp sửa Người chịu trách nhiệm sửa sẽ phải thực hiện sửa lỗi Trong quá trình sửa lỗi, người sửa lỗi sẽ phải tự kiểm thử đơn vị họ sửa trước khi thông báo lỗi đó đã được sửa
Bước 4: Lỗi sau khi được sửa phải kiểm thử lại để xác nhận xem lỗi đó thực sự
đã được sửa chưa, nếu sửa chưa đúng thì mở lại lỗi đó, nếu sửa đúng rồi thì đóng lỗi
=> Việc quản lý lỗi, quản lý sự cố chính là việc kiểm soát lỗi hay sự cố đó từ khi lỗi hay sự cố được ghi nhận đến khi chúng ở trạng thái đóng
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): dùng để kiểm tra chức năng mà không xem xét mã nguồn cũng như cấu trúc chương trình bên trong Thường kiểm thử hộp đen quan tâm nhiều đến các bộ dữ liệu kiểm thử đầu vào
Kiểm thử hộp trắng (White Box testing): khác với kiểm thử hộp đen, kiểm thử hộp trắng xem xét mọi module trong chương trình, các luồng thực hiện công việc để từ
đó đưa ra các chiến lược kế hoạch cụ thể cho việc kiểm thử
Kiểm thử hộp xám (Grey Box testing): Đây là một kỹ thuật kiểm thử mới dựa trên những đặc tính của cả kiểm thử hộp đen và hộp trắng Mục tiêu chính của kiểm thử hộp xám là kiểm thử các ứng dụng trên nền web (web based)
*Các giai đoạn hay cấp độ kiểm thử phần mềm
- Kiểm thử đơn vị: Kiểm thử từng module nhỏ trong chương trình để tìm ra các lỗi và khắc phục
- Kiểm thử tích hợp: Sau khi đã thực hiện thành công kiểm thử đơn vị, ta sẽ tiến hành tích hợp các module này với nhau và kiểm thử trên toàn bộ khối mã lệnh đã tích hợp này
Trang 17- Kiểm thử hệ thống: Kiểm thử trên toàn bộ ứng dụng
- Kiểm thử chấp nhận: Khâu này do khách hàng trực tiếp đảm nhận trước khi bàn giao sản phẩm chính thức
- Kiểm thử hồi quy là hoạt động trợ giúp để đảm bảo rằng các thay đổi không đưa ra những hành vi hoặc những lỗi bổ sung không mong đợi
Kiểm thử tự động là một quá trình xử lý tự động các bước thực hiện một test case Kiểm thử tự động được thực hiện bởi phần mềm kiểm thử tự động - hay còn gọi
là Automation Testing Tool
Một số phần mềm kiểm thử tự động nổi tiếng hiện nay như:
· Quick Test Profressional - (HP)
· SOAPUI - 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ử
Tăng độ tin cậy
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ể
Trang 18 Kiểm tra hồi quy: Nâng cấp phần mềm, kiểm tra lại các tính năng đã chạy tốt và những tính năng đã sửa Tuy nhiên, việc này khó đảm bảo về mặt thời gian
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ũng tuân theo các bước phát triển phần mềm,
ta phải xem xét phát triển kiểm thử phần mềm giống như phát triển một dự án Giống như phát triển phần mềm, chúng ta thực hiện các bước cơ bản sau:
Việc phát triển kiểm thử tự động cũng tuân theo các bước phát triển phần mềm, ta phải xem xét phát triển kiểm thử phần mềm giống như phát triển một dự án Giống như
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: xây dựng mô hình phát triển kiểm thử tự động, thiết kế và xây dựng các test case để thực thi
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
Trang 191.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
Nó xảy ra dựa trên sự hội tụ của nhiều công nghệ trong đó có công nghệ cốt lõi có công nghệ thông tin với sự phát triển không ngừng của công nghệ Internet từ thời kỳ kết nối nội dung như email đến mạng xã hội, Internet vạn vật, Internet kết nối thiết bị máy móc kết nối quá trình vận hành của các nhà máy Ngoài công nghệ cốt lõi còn có
sự hội tụ của công nghệ in 3D, công nghệ vật liệu tiên tiến, công nghệ lưu trữ…
Hiện nay, nền công nghiệp 4.0 đang phát triển mạnh mẽ, kéo theo sự phát triển của rất nhiều ngành nghề, đặc biệt là ngành công nghệ thông tin Do đó, yêu cầu về
nhân lực trong mảng này cũng đòi hỏi cac ứng viên cần phải có kỹ năng tốt hơn nữa về lập trình, technical, các kỹ năng về automation
Nếu search trên các trang mạng tuyển dụng lớn như ITviec, Vietnamworks, LinkIn, Indeed, Dice, Monster, CareerBuilder … thì bạn sẽ thấy có vô vàn kết quả với các từ khóa tìm kiếm như:
Test Automation Engineer
Automation Developer
Automation Testing/Automation Tester
QA Automation Engineer
Software Development Engineer in Test (SDET)
Từ đây, bạn có thể thấy được nhu cầu tuyển một QA có kiến thức và kinh nghiệm
về automation test là rất lớn Do đó, đủ để hiểu automation test sẽ là tiềm năng lớn cho tương lai của mảng Test nói riêng và công nghệ thông tin nói chung
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
Trang 20Nhật Bản là một quốc gai có nền Công nghệ thông tin rất phát triển Người Nhật vốn đã rất tỉ mỉ nên họ muốn sản phẩm của họ làm ra phải đạt được chất lượng, cũng như quy trình làm ra sản phẩm phải được quản lý chặt chẽ kể từ giai đoạn đầu của dự
án Nên với QA/ Tester, người Nhật không chỉ có kiểm thử sản phẩm mà họ còn vừa phải đảm bảo quy trình của phần mềm, vừa phải tìm ra những lỗi của sản phẩm Vì vậy Test Matrix là một phần quan trọng và không thể thiếu trong các dự án của 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ướcCô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, về mặt chất lượng, ở Việt Nam chủ yếu là các dự án outsource (gia công phần mềm), mà đa phần các dự án này chủ yếu tập trung vào những công việc cấp thấp Dù đã có nhiều công ty đảm nhận những dự án lớn, giá trị cao nhưng số lượng đó còn rất ít, do đó cần phải tăng tốc để bắt kịp trình độ của thế giới
Ở thời điểm hiện tại, nhiều công ty, doanh nghiệp trước kia phát triển mạnh về xây dựng phần mềm cũng đã phát triển mạnh về kiểm thử, có thể kể đến một số doanh nghiệp lớn như: IT Sol, Citigo, Fsoft, Viettel, Simax,…
Về xu hướng kiểm thử phần mềm đang phát triển mạnh ở Việt Nam, nó vẫn là một bài toán không chỉ với các công ty sản xuất phần mềm Nó vừa để kiểm soát lỗi trong quá trình lập trình cũng vừa là chứng minh cho khách hàng phần mềm đã thực hiện đúng các yêu cầu họ đặt ra Là xu hướng về kiểm thử trên nền web, kiểm thử app mobile, sử dụng các công cụ hỗ trợ đang được nhiều công ty, doanh nghiệp hướng đến
và ưu tiên phát triển
1.3.5 So sánh giữa kiểm thử thủ công và kiểm thử tự động
1.3.5.1 Ưu điểm:
Độ tin cậy cao: công cụ kiểm thử tự động có sự ổn định cao hơn so với con người, đặc biệt trong trường hợp nhiều test cases, nên độ tin cậy cao hơn so với kiểm thử thủ công