Ứng dụng các kiến thức cơ bản về kiểm thử phần mềm, kiểm thử tự động và kiến thức về công cụ Katalon Studio để viết kịch bản kiểm thử cho hệ thống bán hàng trực tuyến nopCommerce.. - Thi
Trang 1TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA THỐNG KÊ – TIN HỌC
BÁO CÁO THỰC TẬP NGHỀ NGHIỆP
NGÀNH HỆ THỐNG THÔNG TIN QUẢN LÝ
CHUYÊN NGÀNH QUẢN TRỊ HỆ THỐNG THÔNG TIN
KIỂM THỬ TỰ ĐỘNG KATALON STUDIO VÀ ỨNG DỤNG CHO HỆ THỐNG BÁN HÀNG TRỰC TUYẾN NOPCOMMERCE
Trang 2LỜI CẢM ƠN
Em xin phép được gửi sự tri ân sâu sắc và lời cảm ơn chân thành nhất đối với các thầy cô giáo Khoa Thống kê- Tin học trường Đại Học Kinh Tế Đà Nẵng đã tạo điều kiện để em có điều kiện thực tập Đặc biệt, em xin trân trọng cảm ơn cô TS.Hoàng Thị Thanh Hà đã nhiệt tình hướng dẫn để em có thể hoàn thành tốt kì thực tập này
Đặc biệt, em xin chân thành gửi lời cảm ơn đến Mentor Trần Thị Hoài Phương
đã hướng dẫn trực tiếp, chỉ đạo và tạo mọi điều kiện giúp đỡ em trong suốt quá trình học cũng như thực tập tại đây
Em cũng xin trân trọng gửi lời cảm ơn đến toàn thể anh chị trong DG4 Sự hỗ trợ, chia sẻ kiến thức của các anh chị đã tạo điều kiện thuận lợi cho em hoàn thành nhiệm vụ thực tập một cách hiệu quả Những trao đổi, ý kiến đóng góp đã giúp em mở rộng hiểu biết và nâng cao kỹ năng của mình Nhờ vậy mà em đã học thêm được nhiều kiến thức mới và có cái nhìn tường tận hơn về lý thuyết chuyên ngành cũng như thực
Trang 3LỜI CAM ĐOAN
Em xin cam đoan đề tài “Nghiên cứu về kiểm thử tự động bằng công cụ Katalon Studio và ứng dụng cho hệ thống bán hàng trực tuyến nopCommerce.” là kết quả nghiên cứu của cá nhân trên cơ sở nghiên cứu các lý thuyết đã học và dưới sự hướng dẫn của T.S Hoàng Thị Thanh Hà và mentor Trần Thị Hoài Phương Các thông tin và kết quả mà em đã cung cấp trong báo cáo thực tập này là chân thực và chính xác dựa trên những quan sát và nghiên cứu của riêng em Em cam kết đã thực hiện thực tập một cách nghiêm túc, tuân thủ các quy định, và đưa ra những kết quả phản ánh thực tế nhất
Ngoài ra, trong bài báo cáo có sử dụng một số nguồn tài liệu tham khảo đã được trích dẫn nguồn và chú thích rõ ràng Em xin hoàn toàn chịu trách nhiệm trước bộ môn, khoa và nhà trường về sự cam đoan này
Trang 4MỤC LỤC
Trang 52.5 Software Testing Levels- Các cấp độ của kiểm thử 16
Trang 63.4 Kết quả Test 46
Trang 8DANH MỤC BẢNG BIỂU
Trang 9DANH MỤC CÁC TỪ VIẾT TẮT
QA: Quality Assurance
QC: Quality Control
TC: Test case
Trang 10LỜI MỞ ĐẦU
1 Lý do chọn đề tài
Với sự phát triển như vũ bão của công nghệ thông tin nói chung và công nghệ phần mềm nói riêng, việc phát triển phần mềm ngày càng được hỗ trợ bởi nhiều công cụ tiên tiến, giúp cho việc xây dựng phần mềm đỡ mệt nhọc và hiệu quả hơn
Các ứng dụng web càng ngày càng trở nên phổ biến và phát triển mạnh mẽ, nhằm đáp ứng tối đa những đòi hỏi của người dùng khi họ bật trình duyệt web của mình lên Cho đến nay, các ứng dụng website đóng vai trò quyết định trong thương mại điện tử và trao
tiêu chuẩn và yêu cầu của người dùng Do đó, em đã chọn đề tài “Nghiên cứu về kiểm thử
tự động bằng công cụ Katalon Studio và ứng dụng cho hệ thống bán hàng trực tuyến nopCommerce.”
2 Mục tiêu của đề tài
Mục tiêu đề tài là xác định các kịch bản kiểm thử quan trọng và các chức năng cần được kiểm tra trong hệ thống bán hàng trực tuyến nopCommerce
Ứng dụng các kiến thức cơ bản về kiểm thử phần mềm, kiểm thử tự động và kiến thức về công cụ Katalon Studio để viết kịch bản kiểm thử cho hệ thống bán hàng trực tuyến nopCommerce
3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Hệ thống bán hàng trực tuyến nopCommerce và công cụ kiểm thử tự động Katalon Studio
Phạm vi nghiên cứu: Tập trung vào việc xây dựng kịch bản kiểm thử tự động cho nopCommerce bằng Katalon Studio, tập trung vào các chức năng quan trọng như đăng ký, thêm sản phẩm vào giỏ hàng, xóa sản phẩm ra khỏi giỏ hàng và xử lý đơn hàng Nghiên cứu cũng có thể tập trung vào việc tối ưu hóa và cải tiến phương pháp kiểm thử tự động sử dụng Katalon Studio cho nopCommerce
4 Kết cấu của đề tài
Đề tài được tổ chức gồm phần mở đầu, 3 chương nội dung và phần kết luận
Mở đầu
Chương 1: Tổng quan về công ty TMA và vị trí Tester
Trang 112
Chương 2: Cơ sở lý thuyết
Chương 3: Triển khai dự án
Kết luận và hướng phát triển
Trang 12CHƯƠNG 1: TỔNG QUAN VỀ CÔNG TY TMA VÀ VỊ TRÍ TESTER
1.1 Giới thiệu tổng quát về công ty TMA Bình Định
1.1.1 Quá trình hình thành và phát triển của công ty
Hình 1: Logo của công ty TMA
Được thành lập năm 1997, TMA là tập đoàn công nghệ hàng đầu Việt Nam với
4000 kỹ sư và khách hàng là những tập đoàn công nghệ cao hàng đầu thế giới từ 30 quốc gia TMA hiện có 7 chi nhánh tại Việt Nam (6 tại Tp.HCM và 1 ở Tp Quy Nhơn) cùng 6 chi nhánh ở nước ngoài (Mỹ, Úc, Canada, Đức, Nhật, Singapore)
Năm 2017 TMA quyết định đầu tư xây dựng Công viên sáng tạo TMA Bình Định (TMA Innovation Park) tại Thung Lũng Sáng Tạo Quy Nhơn
Tháng 6 năm 2018, TMA đã mở chi nhánh tại Bình Định Tháng 8 năm 2018, TMA
đã khởi công xây dựng Công viên Sáng tạo TMA Bình Định (TMA Innovation Park – TIP) trên 10 hecta tại Thung lũng Sáng tạo Quy Nhơn với vốn đầu tư hàng trăm tỷ đồng
Với 25 năm kinh nghiệm cung cấp giải pháp phần mềm cho hàng trăm khách hàng
từ 30 quốc gia, TMA luôn là đối tác chiến lược đáng tin cậy, mang đến các sản phẩm, dịch
vụ, giải pháp hiệu quả, phục vụ đa dạng các mục tiêu quản trị, sản xuất kinh doanh của doanh nghiệp và tổ chức
1.1.2 Tầm nhìn và sứ mệnh
Trang 134
Tầm nhìn của TMA Solutions là trở thành một trong những công ty phần mềm hàng đầu thế giới, cung cấp các giải pháp và dịch vụ chất lượng cao cho khách hàng
Công viên Sáng tạo TMA mang sứ mệnh trở thành trung tâm phát triển phần mềm
và công nghệ cao hàng đầu tại miền Trung, góp phần quan trọng đưa Thung lũng sáng tạo Quy Nhơn trở thành một điểm đến của công nghệ 4.0 tại Việt Nam
Đào tạo và phát triển nhân viên: Công ty có thể đầu tư vào việc đào tạo và phát triển nhân viên để tạo ra một đội ngũ chất lượng cao, có năng lực và kiến thức để đối phó với các thách thức trong lĩnh vực công nghệ thông tin
1.1.4 Lĩnh vực hoạt động
Trí tuệ nhân tạo/ Máy học: Đội ngũ kỹ sư của chúng tôi đã ứng dụng Trí tuệ nhân
tạo vào lĩnh vực tự động hóa máy móc, giáo dục, dược phẩm, xe hơi, quản trị nguồn nhân lực, nông nghiệp…với các công nghệ và giải pháp:
- Phân tích ngôn ngữ tự nhiên
- Nhận dạng hình ảnh và video (Object Detection)
- Nhận dạng tài liệu (Document Parser)
- Nhận dạng quảng cáo (Brand Detection)
- Phân tích năng lực và hành vi học sinh (Student Analytics)
- Tối ưu hoạt động máy móc (Machine Optimization)
Dữ liệu lớn/ Phân tích dữ liệu: Được thành lập vào năm 2013, đội ngũ phân tích dữ
liệu của chúng tôi đã phát triển nhanh chóng với gần 200 kỹ sư với nhiều dịch vụ:
Trang 14- Thiết kế hệ thống dữ liệu doanh nghiệp
- Thu thập và phân tích dữ liệu trong thời gian thực
- Tích hợp và tổng hợp dữ liệu
- Chuyển đổi dữ liệu
- Dự báo
Iot và thiết bị thông minh: Chúng tôi có hơn 150 kỹ sư đang làm việc trong các dự
án về IoT và Thiết bị thông minh áp dụng trong nhiều lĩnh vực:
Tester – nhân viên kiểm thử phần mềm – là vị trí có vai trò kiểm tra bước cuối của
dự án, phần mềm trước khi các dự án, phần mềm này được triển khai và hoàn thiện Tùy thuộc vào từng lĩnh vực, trường hợp, Tester có thể thực hiện công việc này bằng thủ công hoặc bằng các phần mềm Hay đơn giản hơn, nhân viên Tester chính là người chịu trách nhiệm ở bước cuối cùng của phần mềm để trong quá trình sử dụng không xảy ra lỗi, sự cố
Một số công việc chính của vị trí Tester:
- Nghiên cứu, phân tích yêu cầu : Tester cần ngân cứu, phân tích, xác định những yêu
cầu liên quan đến kỹ thuật trong quá trình xây dựng, phát triển dự án, phần mềm
Họ sẽ cùng phối hợp với các lập trình viên để thực hiện công việc này Việc phân tích cần đảm bảo chính xác, nếu phân tích không đúng, sẽ làm xuất hiện sự sai lệch giữa các bên trong dự án
Trang 156
- Đánh giá, phát hiện các vấn đề của phần mềm: Đây là nhiệm vụ quan trọng nhất
của một Tester Họ sẽ thực hiện kiểm thử, phát hiện các lỗi, vấn đề tiềm ẩn có thể ảnh hưởng đến chất lượng phần mềm Tìm lỗi là kỹ năng Tester cần biết và rất quan trọng Tester cần thực hiện kiểm thử, chạy các test case theo kịch bản có sẵn hoặc các danh sách kiểm tra được yêu cầu trước đó
- Ngăn ngừa các lỗi có thể phát sinh của phần mềm: Bên cạnh việc đánh giá, phát
hiện các vấn đề, Tester cần thực hiện các nghiệp vụ chuyên môn để ngăn chặn được việc phát sinh lỗi ngay từ đầu Để làm được điều đó, các Tester cần có khả năng quan sát cũng như đánh giá, kiểm tra trong mọi quy trình xây dựng, phát triển của phần mềm
- Tương tác với khách hàng: Tester sẽ cần phải tương tác trực tiếp với khách hàng để
có thể nắm được các yêu cầu, mong muốn của khách hàng về sản phẩm để lên được các kịch bản hoặc danh mục cần kiểm tra khi chạy thử phần mềm, ứng dụng
- Chuẩn bị các bản báo cáo liên quan đến việc kiểm thử phần mềm Chịu trách nhiệm
hỗ trợ cho các lập trình viên phát triển phần mềm
1.2.2 Các kỹ năng cần có của một Tester
- Kỹ năng chuyên môn về kỹ thuật: Đối với Tester, bạn sẽ cần có các kiến thức, kỹ
năng chuyên sâu về kỹ thuật Các Tester thường được yêu cầu có sự hiểu biết rộng
và thành thạo về các ngôn ngữ lập trình và công cụ có sẵn Ngoài ra, một người tester cũng cần có khả năng phân tích, đánh giá tốt
- Kỹ năng sắp xếp, quản lý công việc: Khi thực hiện kiểm thử, Tester sẽ phải thực
hiện nhiều nghiệp vụ, giao tiếp với nhiều nhân sự, bộ phận khác nhau Do đó, tester cần có được kỹ năng sắp xếp và quản lý công việc khoa học, điều này sẽ giúp bạn không bị chồng chéo trong công việc, xử lý thông tin
- Kỹ năng viết báo cáo: Kết quả sau quá trình kiểm thử sẽ được trình bày dưới dạng
các báo cáo lỗi Tester sẽ cần có kỹ năng viết báo cáo, trình bày khoa học và chi tiết Ngoài ra, cần rõ ràng trong các lỗi của phần mềm để giúp cho nhân sự liên quan xử
lý được các lỗi dễ dàng hơn
- Kỹ năng viết testcase: Test Case là phần quan trọng của các quy trình kiểm thử
Tester cần có khả năng viết testcase phù hợp với những phân đoạn, quy trình, công việc khác nhau Công việc của Tester có hiệu quả hay không sẽ phụ thuộc vào đội các bản testcase có phù hợp hay không
Trang 16- Kỹ năng giao tiếp: Một Tester sẽ cần giao tiếp với nhiều bộ phận khác nhau như
Developer, Leader, Manager, Coder, BA,… để tìm được các lỗi thiếu sót Do đó, tester cần có khả năng giao tiếp, trình bày tốt, rõ ràng để giúp quá trình kiểm thử được hiệu quả hơn
- Chi tiết và tỉ mỉ: Đây là yêu cầu để kết quả công việc đạt hiệu quả cao nhất Bởi vì
khi testing, chúng ta phải quan tâm đến từng dấu chấm, dấu phẩy của từng thông điệp Ngoài ra, ngay cả mức độ logic của thông điệp và các icon nhỏ nhất cũng phải được xem xét một cách kỹ càng Nếu thông điệp đưa tới người dùng có bất kỳ lỗi nào, nó không chỉ ảnh hưởng đến bạn mà còn ảnh hưởng đến cả sự phát triển của công ty
1.2.3 Cơ hội nghề nghiệp
Hiện nay ở Việt Nam nghề Tester có cơ hội làm việc rất cao nhất là đối với các bạn trẻ có sự nhạy bén, đam mê sáng tạo Nếu kiên trì theo nghề tester bạn sẽ luôn cập nhật được những công nghệ mới, được tiếp xúc với các dự án lớn khác nhau, học hỏi được nhiều thứ Đối với các Tester dày dạn kinh nghiệm thì cơ hội thăng tiến trong nghề khá cao
Lương của Tester cũng khá đa dạng Tùy thuộc vào năng lực và kinh nghiệm, mức lương cho Tester sẽ có sự khác nhau Cụ thể:
- Đối với những Tester mới vào nghề, chưa có kinh nghiệm: Mức lương dao động từ 500$- 700$ tương đương từ 10 -15 triệu đồng/tháng
- Đối với những Tester giàu kinh nghiệm, kỹ năng giỏi Mức lương dao động từ 700$ – 1000$
- Đối với những quản lý Tester: Mức lương dao động từ 1000$ – 2000$
Lộ trình phát triển của nghề Tester cũng rất rõ ràng và đầy tiềm năng, được chia theo các level sau:
- Level 1: Fresher Là những bạn mới tốt nghiệp các khóa đào tạo Tester cơ bản và bắt đầu đi làm Tester Ở level này, các bạn Tester hoàn toàn là các bạn mới học xong các khóa học về Kiểm thử phần mềm, mới tiếp xúc môi trường doanh nghiệp, hoặc có thể là những người đã đi làm trái ngành mới thay đổi công việc sang Tester
- Level 2: Junior Ở level junior, bạn Tester đã hiểu thực thi các test case, thêm vào
đó, có thể báo cáo các bugs nếu có
Trang 178
- Level 3: Senior Đây là những chuyên gia thành thạo về kỹ thuật testing, nắm rõ các yêu cầu kiểm thử phần mềm cho các doanh nghiệp với các ứng dụng phức tạp như tài chính, sức khỏe, thương mại điện tử…
- Level 4: Test Leader Thông thường, sau khoảng 5 năm kinh nghiệm trở lên, tester
có thể nắm giữ vai trò quản lý Những người này chịu trách nhiệm tổ chức công việc cần được thực hiện và phân công nhiệm vụ cụ thể cho các Tester trong team dự án Tương ứng với số năm kinh nghiệm Test Leader có sẽ là quy mô lớn, nhỏ khác nhau
mà các đội họ sẽ được quản lý
- Level 5: Test Manager Là những người tổ chức và điều phối các nhóm kiểm thử (test team): quản lý metrics, lập kế hoạch chiến lược và đưa ra dự đoán
- Level 6: Senior Test Manager Tùy thuộc vào độ cứng và số năm kinh nghiệm, Test Manager có thể đạt được vị trí Senior Test Manager
Bên cạnh việc trở thành chuyên gia trong nghề Tester, Sau khi có đủ kiến thức và kinh nghiệm ở level 4, bạn có thêm các hướng đi mới như: trở thành BA (Business Analyst) hoặc PM (Project Manager- quản lý dự án) Đây đều là các hướng phát triển rất tiềm năng nếu muốn làm Tester
1.3 Kết chương
Trong chương này em đã hiểu được tổng quan về công ty TMA và về vị trí Tester,
mô tả về vị trí, các kỹ năng cần có của một người Tester và cơ hội nghề nghiệp của vị trí này Trong chương tiếp theo em sẽ trình bày về các cơ sở lý thuyết về kiểm thử và lý thuyết liên quan đến đề tài
Trang 18CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về kiểm thử phần mềm
2.1.1 Khái niệm kiểm thử phần mềm
Kiểm thử phần mềm là phương pháp kiểm tra xem sản phẩm phần mềm đó trên thực
tế có phù hợp với các yêu cầu đã đặt ra hay không, và đảm bảo rằng không có lỗi hay khiếm khuyết Nó được sử dụng để xác định tính đúng đắn, đầy đủ và chất lượng của phần mềm máy tính được phát triển
2.1.2 Mục tiêu của kiểm thử
- Xác định chất lượng của sản phẩm
- Ngăn chặn phòng tránh lỗi
- Sẵn sàng tích hợp các thành phần
- Cung cấp thông tin để ra quyết định
- Xác minh và xác thực yêu cầu của người dùng
- Xây dựng sự tự tin trong công việc
- Tìm ra lỗi trước khi khách hàng phát hiện ra chúng
2.1.3 Vòng đời kiểm thử phần mềm
Vòng đời kiểm thử phần mềm (STLC) là quá trình kiểm thử được thực hiện một cách có hệ thống và có kế hoạch Trong quá trình STLC, các hoạt động khác nhau được
thực hiện để cải thiện chất lượng sản phẩm
Trang 1910
Hình 2: Vòng đời kiểm thử phần mềm
Requirement analysis - Phân tích yêu cầu
- Phân tích chi tiết các tài liệu về thiết kế hệ thống, những yêu cầu của khách hàng về tiêu chí, chất lượng của sản phẩm, các bản mẫu (prototype) mà khách hàng cung
cấp
- Yêu cầu được chia làm 2 dạng: Functional (Chức năng) và Non-Functional (Phi chức năng) Yêu cầu về Functional sẽ mô tả tính năng còn Non-Functional sẽ mô tả
hiệu năng, tính bảo mật, tính hữu dụng của phần mềm
- Đưa ra các câu hỏi còn thắc mắc về yêu cầu phần mềm với BA, team, leader, khách
hàng để hiểu rõ hơn về yêu cầu sản phẩm
Test planning - Lập kế hoạch kiểm thử
- Xác định phạm vi kiểm thử: thời gian, lịch trình cho các công việc
- Xác định nguồn lực: con người và thiết bị, cần bao nhiêu người tham gia, ai làm
công việc gì, cần những thiết bị hỗ trợ nào, số lượng ra sao
- Lên kế hoạch thiết kế công việc kiểm thử: đưa ra các chức năng cần kiểm thử những công việc gì cần thực hiện, thời gian bao lâu, xác định những điều kiện tối thiểu để
bắt đầu cũng như khi nào thì kết thúc hoạt động kiểm thử với từng chức năng
Test case development - Thiết kế kịch bản kiểm thử
- Review tài liệu: để xác định công việc cần làm, các công việc có khác gì so với dự
án trước khách hàng đưa cho, chức năng nào cần test, chức năng nào không cần test lại nữa Từ đó, vừa có thể tiết kiệm thời gian mà vẫn đưa ra được một kịch bản kiểm
thử đầy đủ và hiệu quả
Trang 20- Viết test case/ check list: viết test case chi tiết dựa vào kế hoạch đã đưa ra và vận dụng các kỹ thuật thiết kế kịch bản kiểm thử Test case cần bao phủ được tất cả các trường hợp kiểm thử có thể xảy ra cũng như đáp ứng đầy đủ các tiêu chí của sản
phẩm Đồng thời tester cũng cần đánh giá mức độ ưu tiên cho từng test case
- Chuẩn bị dữ liệu kiểm thử: cần chuẩn bị trước các dữ liệu kiểm thử cho các trường
hợp cần thiết như test data, test script
- Review test case/ check list: Sau khi hoàn thành, các thành viên trong đội kiểm thử hoặc test leader cũng cần review lại test case đã tạo để có thể bổ sung, hỗ trợ lẫn
nhau nhằm tránh những sai sót trong thiết kế test case và rủi ro về sau
Test environment set up - Thiết lập môi trường kiểm thử
- Việc cài đặt môi trường kiểm thử là giai đoạn cũng rất quan trọng trong vòng đời phát triển phần mềm vì nếu môi trường không phù hợp với sản phẩm hay mong muốn khách hàng thì kết quả kiểm thử sẽ không chính xác Môi trường kiểm thử sẽ được thiết lập dựa trên những yêu cầu của khách hàng, hay đặc điểm của sản phẩm
ví dụ như server/ client/ network, Các chuyên viên kiểm thử cũng cần chuẩn bị một vài test case để kiểm tra xem môi trường cài đặt đã sẵn sàng cho việc kiểm thử
hay chưa
Test execution - Thực hiện kiểm thử
- Thực hiện test theo kịch bản kiểm thử
- So sánh kết quả kiểm thử với kết quả mong đợi để phát hiện ra các lỗi sai và tiến
hành theo dõi các lỗi đó đến khi chúng được fix hoàn toàn
- Cần theo dõi tiến độ của dự án và điều chỉnh sao cho phù hợp với kế hoạch đề ra
- Thường xuyên báo cáo về tình hình test cho các bên liên quan như team leader,
người quản lý dự án, khách hàng
Test cycle closure - Đóng chu trình kiểm thử
- Tổng hợp và viết báo cáo kết quả cuối cùng của việc kiểm thử
- Team test phần mềm cũng cần xem lại quá trình thực hiện để nhìn ra những điểm
tốt, chưa tốt của team, cũng như rút kinh nghiệm cho những lần kiểm thử sau này
2.1.4 Các nguyên tắc của kiểm thử phần mềm
Trang 2112
Kiểm thử cho thấy sự tồn tại của lỗi: Kiểm thử chỉ có thể chứng minh được rằng
sản phẩm có lỗi nhưng không thể chứng minh rằng sản phẩm không còn lỗi Điều này có nghĩa là sẽ luôn có lỗi nhưng không được phát hiện trong phần mềm, ngay cả khi không tìm thấy lỗi, cũng không đồng nghĩa rằng phần mềm đúng hoàn toàn Do đó, điều quan trọng là chúng ta nên tập trung thiết kế các trường hợp kiểm thử sao cho có thể tìm được
càng nhiều lỗi càng tốt
Kiểm thử toàn bộ là không thể: Kiểm thử mọi thứ là không khả thi trừ trường hợp
nhỏ Thay vì kiểm thử toàn bộ, chúng ta có thể dựa vào phân tích rủi ro (risk analysis), độ
ưu tiên (priorities), sử dụng kỹ thuật test (test techniques) để lựa chọn các ca kiểm thử phù
hợp nhất
Kiểm thử càng sớm càng tốt: Nguyên tắc này yêu cầu bắt đầu thử nghiệm phần mềm
trong giai đoạn đầu của vòng đời phát triển phần mềm Các hoạt động kiểm thử phần mềm
từ giai đoạn đầu tiên như nghiên cứu yêu cầu hay design sẽ giúp phát hiện bug sớm hơn
Phát hiện lỗi càng sớm thì sẽ tiết kiêm được nhiều thời gian và chi phí
Lỗi thường đi theo cụm: Phần lớn lỗi tập trung vào những module, thành phần chức
năng chính của hệ thống Điều này cũng thuận theo nguyên lý Pareto: 80% số lượng lỗi
được tìm thấy trong 20% tính năng của hệ thống
Nghịch lý thuốc trừ sâu: Một bộ dữ liệu test được sử dụng lặp đi lặp lại sẽ không
tìm được ra các lỗi mới Vì các lỗi được tìm thấy đã được sửa trong giai đoạn trước, và đã được khắc phục Vì vậy các bộ dữ liệu test cần phải được xem xét cập nhật thường xuyên
để giúp tìm ra lỗi mới
Phần mềm không có lỗi là sai lầm: Có thể phần mềm 99% không có lỗi vẫn không
sử dụng được nếu hệ thống được xây dựng sai yêu cầu mà khách hàng đề ra Kiểm thử không chỉ là tìm ra các lỗi, mà còn để kiểm tra xem phần mềm có đáp ứng nhu cầu nghiệp
vụ của khách hàng hay không
Kiểm thử phụ thuộc vào ngữ cảnh: Cách tiếp cận, phương pháp, kỹ thuật và các loại
kiểm thử tuỳ thuộc vào ứng dụng Kiểm thử phải được điều chỉnh cho phù hợp với rủi ro vốn có trong việc sử dụng và môi trường của ứng dụng phần mềm Ví dụ, chúng ta không thể áp dụng bộ kiểm thử trên môi trường Mobile app để thực hiện kiểm thử lên một Web
trên PC được
Trang 222.1.5 Phân biệt Error/ Fault/ Failure
Error: là lỗi do con người gây ra trong quá trình viết code hoặc tài liệu dẫn đến kết quả sai Ví dụ: Developer đặt tên biến sai cú pháp dẫn đến khi gọi biến này thì không ra
kết quả
Fault: Trạng thái của phần mềm do lỗi Ví dụ đăng nhập vào facebook sẽ có thông báo đăng nhập thành công nhưng khi lỗi fault xảy ra thì không có thông báo mà mình vẫn
đăng nhập vào được
Failure: Độ lệch của phần mềm so với kết quả mong đợi của nó Ví dụ khách hàng yêu cầu server có thể hoạt động tốt khi có 1000 user, tuy nhiên trên thực tế server chỉ có
thể hoạt động tốt khi có 900 user
2.1.6 Phân biệt QA & QC
QA là quá trình tổng thể nhằm đảm bảo rằng quy trình phát triển, quản lý và cung cấp sản phẩm hoặc dịch vụ đáp ứng các tiêu chuẩn chất lượng Nó tập trung vào việc xác định và thiết lập các quy trình, tiêu chuẩn và phương pháp phù hợp để đảm bảo chất lượng trong suốt quá trình phát triển và triển khai sản phẩm QA thường bắt đầu ngay từ giai đoạn
thiết kế và kéo dài trong suốt quá trình phát triển sản phẩm
QC là quá trình kiểm tra chất lượng của sản phẩm hoặc dịch vụ tại các điểm cụ thể trong quy trình sản xuất hoặc phát triển Nó tập trung vào việc kiểm tra, đo lường và kiểm soát chất lượng để đảm bảo rằng sản phẩm hoặc dịch vụ đáp ứng các tiêu chuẩn chất lượng
đã đặt ra QC thường bắt đầu sau khi sản phẩm hoàn thành và sẵn sàng để kiểm tra
QA và QC thường liên quan mật thiết đến quá trình Verification và Validation QA đảm bảo rằng quy trình phát triển và triển khai sản phẩm hoặc dịch vụ được thực hiện đúng cách, trong khi QC thực hiện các hoạt động kiểm tra chất lượng để đảm bảo rằng sản phẩm
hoặc dịch vụ đáp ứng các tiêu chuẩn đã đặt ra
2.2 Vòng đời phát triển phần mềm
Requirement Analysis: Đây là giai đoạn đầu tiên của một SDLC Các kỹ sư sẽ tiến
hành thu thập các thông tin sơ khai về phần mềm muốn phát triển
Design: Thiết kế tổng thể, chi tiết về phần mềm muốn phát triển
Trang 2314
Implementation: Hai bên có thể trao đổi để chốt được phương án phát triển tốt nhất
Ở giai đoạn Implementation các lập trình viên tiến hành coding theo những tài liệu và mẫu thiết kế được khách phê duyệt
Testing: Tiến hành kiểm thử và cập nhật những lỗi lên các tool quản lý theo yêu
cầu Kiểm thử viên và lập trình viên sẽ sửa lỗi và cập nhật lại tình hình của phần mềm Tester có thể áp dụng các phương pháp kiểm thử khác nhau để phát hiện ra lỗi nhanh nhất
và tiến hành fix lại lỗi
Deployment: Kiểm thử viên tiến hành triển khai phát triển phần mềm ở môi trường
thực tế
Maintenance: Bảo trì phần mềm và xử lý các lỗi phát sinh nếu có Đây là giai đoạn
kết thúc của một vòng phát triển phần mềm Lúc này, phần mềm có thể chạy tốt, công việc của người kiểm thử viên và lập trình viên là bảo trì và tiến hành nâng cấp phần mềm
Hình 3: Các giai đoạn của vòng đời phát triển phần mềm
2.3 Software Testing Types – Các loại kiểm thử phần mềm
Trang 24Automation testing là phương pháp kiểm thử tự động Người tester sẽ phải viết các kịch bản kiểm thử sau đó sử dụng các tool hỗ trợ để thực hiện kiểm thử, phương pháp này
sẽ giúp việc kiểm thử hiệu quả hơn và đỡ tốn thời gian hơn Automation testing sẽ giúp chạy các kịch bản kiểm thử lặp lại nhiều lần và các task kiểm thử khác khó thực hiện bằng tay như performance testing và stress testing
2.4 Software Testing Methods- Các phương pháp kiểm thử phần mềm
2.4.1 White Box Testing
Kiểm thử hộp trắng là phương pháp kiểm thử phần mềm, trong đó tester cần chú ý đến cách cấu trúc bên trong hoạt động cũng như đầu vào và đầu ra Trong trường hợp này, yêu cầu người kiểm tra phải biết ngôn ngữ lập trình, hiểu được chi tiết về các đoạn code cần test
Hình 4: Kiểm thử hộp trắng
2.4.2 Black Box Testing
Kiểm thử hộp đen không yêu cầu người kiểm thử cần phải có bất kỳ kiến thức về
mã hoặc thuật toán của chương trình Nó kiểm tra các chức năng của hệ thống tức là những
gì hệ thống được cho là cần phải làm dựa trên các " Đặc tả yêu cầu" Các trường hợp kiểm thử thường được xây dựng xung quanh nó Hay nói cách khác, kiểm thử hộp đen là phương pháp test dựa trên đầu vào và đầu ra của chương trình để test mà không quan tâm tới code bên trong được viết ra sao
Trang 2516
Hình 5: Kiểm thử hộp đen
2.5 Software Testing Levels- Các cấp độ của kiểm thử
Test level là tập các hoạt động kiểm thử được tổ chức và có sự liên kết với nhau Các mức độ kiểm thử cũng liên quan đến các giai đoạn trong quy trình phát triển phần mềm Có 4 cấp độ kiểm thử phần mềm là:
- Kiểm thử đơn vị (Unit Testing)
- Kiểm thử tích hợp (Integration Testing)
- Kiểm thử hệ thống (System Testing)
- Kiểm thử chấp nhận (Acceptance Testing)
2.5.1 Unit Testing
Kiểm thử đơn vị là một loại kiểm thử phần mềm tập trung vào các đơn vị hoặc thành phần riêng lẻ của hệ thống phần mềm Mức độ kiểm thử phần mềm này thường do Developer phụ trách, họ sẽ đi kiểm tra các module, các hàm, các phương thức, các lớp,…
mà họ viết ra nhằm gia tăng sự tin cậy cho các chức năng mà mình viết
2.5.2 Integration Testing
Là loại kiểm thử trong đó các module phần mềm hay từng chức năng riêng lẻ được
tích hợp lại với nhau và được kiểm tra theo nhóm Cách tiếp cận:
- Phương pháp Top Down: Kiểm tra diễn ra từ trên xuống theo luồng điều khiển của
hệ thống Các đơn vị cao nhất được kiểm tra trước và các cấp đơn vị thấp hơn được
kiểm tra từng bước sau đó
Trang 26- Phương pháp Bottom up: Các đơn vị cấp thấp được kiểm tra trước và các cấp đơn
vị cao hơn được kiểm tra sau đó
- Phương pháp Hybrid: Là sự kết hợp của hai phương pháp Top Down và Bottom Up
Ở đây, các module hàng đầu được kiểm tra với các module thấp hơn đồng thời các
module thấp hơn được tích hợp với các module hàng đầu và được kiểm thử
2.5.3 System Testing
System Testing là thực hiện kiểm thử một hệ thống đã được tích hợp hoàn chỉnh để xác minh rằng nó đúng yêu cầu của phần mềm Kiểm thử hệ thống liên quan đến việc xác minh các yêu cầu chức năng và phi chức năng của hệ thống được thực hiện bởi tester
Một số loại kiểm thử thường được thực hiện trong System Test:
- Kiểm thử chức năng (Functional Test)
- Kiểm thử hiệu năng (Performance Test)
- Kiểm thử cơ sở dữ liệu (Database Test)
- Kiểm thử khả năng bảo mật (Security Test)
- Kiểm thử tính khả dụng (Usability Test)
- Kiểm tra tính tương thích (Compatibility Test)
- Kiểm tra khả năng phục hồi (Recovery Test)
2.5.4 Acceptance Testing
Người dùng cuối hoặc khách hàng kiểm tra hệ thống để kiểm tra xem hệ thống có đáp ứng các yêu cầu, mong đợi và mức độ phù hợp của người dùng hay không Kiểm thử
chấp nhận được chia thành 2 mức khác nhau:
- Kiểm thử alpha: được thực hiện tại nơi phát triển phần mềm, lập trình viên sẽ ghi
nhận các lỗi hoặc phản hồi, và lên kế hoạch sửa chữa
- Kiểm thử beta: được thực hiện tại bởi khách hàng/ người dùng cuối tại địa điểm của khách hàng Phần mềm sẽ được gửi tới cho người dùng để kiểm thử ngay trong môi trường thực, lỗi hoặc phản hồi cũng sẽ gửi ngược lại cho lập trình viên
để sửa chữa
2.6 Test case
Trang 2718
2.6.1 Test case là gì?
Test case là một trường hợp cần test Test sẽ dựa theo các thông tin trên test case (đầu vào, các bước test, môi trường test, kết quả mong đợi) để thực hiện test Sau đó so sánh kết quả mong đợi với đầu ra của chương trình để xác định một chức năng của ứng dụng phần mềm hoạt động đúng hay không
2.6.2 Các thành phần của Test case
- Test Case ID (Mã và tên của Test case): Giá trị cần để xác định số lượng trường hợp cần kiểm thử
- Items (Mục đích kiểm thử): Mô tả mục đích sử dụng test case Giúp tester hiểu và thực hiện đúng khi kiểm thử phần mềm theo test case mô tả
- Test summary: Để mô tả tóm tắt trường hợp cần kiểm thử
- Pre-Condition (Điều kiện tiên quyết): Mô tả điều kiện cần có để thực hiện test case này
- Test Steps (Mô tả các bước): Mô tả các bước cần thực hiện để tái hiện nội dung test case khi tester thực hiện kiểm thử phần mềm
- Test Data (Dữ liệu đầu vào): Là dữ liệu nhập vào các trường của phần mềm để thực hiện kiểm thử phần mềm
- Expected results (Kết quả mong đợi): Một test case được viết tốt cần phải đề cập một cách rõ ràng kết quả mong đợi của ứng dụng hoặc hệ thống Chỉ ra những gì mong đợi như là đầu ra của bước kiểm tra đó
2.6.3 Các kỹ thuật của Test case
- Phân vùng tương đương: Là phương pháp chia các điều kiện đầu vào thành những
vùng tương đương nhau Tất cả các giá trị trong một vùng tương đương sẽ cho một kết quả đầu ra giống nhau Test case của một giá trị điển hình bằng với các kiểm thử của các giá trị còn lại trong cùng một nhóm Vì vậy chúng ta có thể test một giá trị đại diện trong vùng tương đương Do đó, nó giúp giảm số lượng các test case được thiết kế và thực hiện
- Phân tích giá trị biên: Là kỹ thuật kiểm thử hộp đen để kiểm tra ranh giới giữa các
phân vùng thay vì kiểm tra nhiều giá trị trong vùng tương đương Điều này là do chúng ta thường tìm thấy một số lỗi lớn tại các đường biên chữ không phải tại tâm
Trang 28của các giá trị đầu vào được xác định và nếu nó đúng với các giá trị biên thì cũng đúng với toàn bộ vùng tương đương Ngoài ra, BVA được coi là một loại thiết kế test case bổ sung để phân loại tương đương
- Chuyển đổi trạng thái: Là phương pháp kiểm thử mà trong đó dựa vào thay đổi điều
kiện đầu vào gây ra thay đổi trạng thái trong phần mềm được kiểm thử Trong kỹ thuật này, tester sẽ cung cấp cả giá trị kiểm thử đầu vào hợp lệ và không hợp lệ, sau
đó xác định cách xử lý của hệ thống
- Bảng ra quyết định: Là một kỹ thuật tốt khi input có nhiều điều kiện và có nhiều
action output Giúp giảm thời gian chạy thử nhưng vẫn giữ đủ độ bao phủ của
khoảng trống cụ thể trong phần đăng nhập được điền vào
2.7 Tổng quan về công cụ kiểm thử Katalon Studio
2.7.1 Katalon Studio là gì?
Katalon Studio là một bộ công cụ toàn diện cho kiểm thử tự động hóa ứng dụng trên web và điện thoại di động Công cụ này bao gồm một gói đầy đủ các tính năng mạnh mẽ giúp vượt qua những thách thức phổ biến trong tự động hóa thử nghiệm giao diện web, ví
dụ như pop-up, iFrame và wait-time Giải pháp thân thiện và linh hoạt này giúp tester thực hiện công tác kiểm tra tốt hơn, làm việc nhanh hơn và khởi chạy phần mềm chất lượng cao nhờ vào sự thông minh mà nó cung cấp cho toàn bộ quá trình tự động hóa kiểm thử
Hình 6: Công cụ kiểm thử Katalon
2.7.2 Các tính năng chính của Katalon Studio
Trang 2920
- Cài đặt nhanh chóng và dễ dàng: Katalon studio cài đặt dễ dàng giúp các chuyên viên kiểm thử phần mềm thiết lập môi trường cài đặt một cách nhanh chóng và dễ dàng Có thể chạy thử được những kịch bản kiếm thử nhanh chóng qua việc sử dụng các tập lệnh kiểm thử có sẵn và mẫu từ kho thư viện khóa
- Nó có thể thực hiện từng bước hiệu quả và nhanh, từ các thiết lập dự án, tạo ca kiểm thử và thực hiện các báo cáo bảo trì
- Sử dụng đơn giản: Các gói triển khai đơn giản, giúp gắn kết được mọi thứ cần để triển khai các công cụ kiểm thử tự động mạnh mẽ
- Chế độ sử dụng linh hoạt: Sử dụng các bản ghi và các từ khóa để xây dựng các ca kiểm thử tự động khi IDE xây dựng các tập lệnh nâng cao Các tester mới có thể recording và keywords để xây dựng các bài kiểm tra tự động hóa
- Katalon Studio giúp hỗ trợ nhiều nền tảng như OS X 10.5+, Window 7,8,10 ( 32 bit
và 64 bit)
2.7.3 Cấu trúc của Katalon Studio
- Test Cases: Chứa các kịch bản kiểm thử được viết bằng Groovy hoặc sử dụng giao diện kéo thả
- Object Repository: Chứa các đối tượng được sử dụng trong các kịch bản kiểm thử, như các phần tử web hoặc API
- Test Suites: Chứa các nhóm các kịch bản kiểm thử được thực hiện theo một trình tự xác định
- Test Suite Collection: Chứa các nhóm các test suite được thực hiện song song hoặc tuần tự trên nhiều thiết bị hoặc nền tảng
- Data Files: Chứa các tệp dữ liệu được sử dụng trong các kịch bản kiểm thử, như Excel, CSV hoặc cơ sở dữ liệu
- Keywords: Chứa các từ khóa được định nghĩa bởi người dùng để mở rộng chức năng của Katalon Studio
- Reports: Chứa các báo cáo về kết quả của các kịch bản kiểm thử, test suite và test suite collection
2.7.4 Lý do nên sử dụng Katalon
- Viết test case nhanh và đơn giản, được hỗ trợ cả chế độ Manual và Scripting
- Kiểm thử được các ứng dụng Web, API, Mobile và Desktop application