Với sự cạnh tranh giữa các ứng dụng hiện nay, thói quen, nhu cầu sử dụng lâu dài của người dùng và khách hàng phụ thuộc ít nhiều vào chất lượng của ứng dụng đó, do đó kiểm thử phần mềm đ
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
KIỂM THỬ PHẦN MỀM
Công ty thực tập: Công ty TNHH Phần mềm FPT Người phụ trách: Nguyễn Xuân Thanh
Thực tập sinh: Thái Thị Phương Lan
TP Hồ Chí Minh, tháng 12 năm 2021
Trang 22
LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp phát triển phần mềm trên thiết bị động là một bộ phận không thể thiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành lập trình trên thiết bị di động đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, cả về phần cứng và phần mềm
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngành công nghiệp phát triển ứng dụng của Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhập với những công ty hàng đầu về phát triển ứng dụng trên thế giới
Kiểm thử phần mềm là một giai đoạn quan trọng trong các quy trình phát triển phần mềm Với sự cạnh tranh giữa các ứng dụng hiện nay, thói quen, nhu cầu sử dụng lâu dài của người dùng và khách hàng phụ thuộc ít nhiều vào chất lượng của ứng dụng đó, do đó kiểm thử phần mềm đã và đang là nhân tố không thể thiếu để quyết định sự thành bại của một ứng dụng trên thị trường, cũng như uy tín đối với tổ chức sản xuất ra ứng dụng
Sau bốn năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia vào quy trình phát triển một ứng dụng di động trong một môi
trường chuyên nghiệp, em quyết định sẽ lựa chọn vị trí Kiểm thử phần mềm để thực tập trong học kì này Và công ty em lựa chọn là công ty Fsoft - một môi trường lý tưởng, hiện đại, có nhiều những dự án outsource với thị trường nước ngoài như Nhật Bản, Singapore, một số nước ở Châu Âu…
Trang 3Đặc biệt cảm ơn chị Trương Ánh Tuyết, đã hướng dẫn, giúp đỡ cho em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới, hướng dẫn em các công việc của một người Kiểm thử phần mềm (Tester): viết testcase, làm test report, trao đổi với developer, trao đổi với khách hàng về nghiệp vụ sản phẩm, phân tích yêu cầu,…; cảm ơn chị Nguyễn Thị Thu Hà, anh Nguyễn Song Hải là PM dự án đã giúp đỡ em về quy trình, cách làm việc teamwork hiệu quả, cảm ơn anh Nguyễn Xuân Thanh là giám đốc Trung tâm phát triển công nghệ thông mình là người quản lý nhân sự trực tiếp đã theo sát, đánh giá thực lực và cho em những lời nhận xét khách quan
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Thái Thị Phương Lan
TP Hồ Chí Minh, tháng 12 năm 2021
Trang 44
NHẬN XÉT CỦA KHOA
Trang 5
5
MỤC LỤC
Chương 1: Giới thiêu công ty thực tập 6
1 Giới thiệu công ty FPT Software 6
2 Sản phẩm của công ty 7
Chương 2: Nội dung thực tập 8
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2 Nghiên cứu kỹ thuật 8
2.1 Các công cụ quản lý dự án 8
2.2 Tìm hiểu mô hình Agile trong phát triển và kiểm thử phần mềm 8
2.3 Từ căn bản tới các bước hoàn thiện testcase 14
2.4 Execute test, log bug, verify bug 16
3 Thực hiện project 17
Chương 3: Chi tiết về project 18
Chương 4: Tổng kết 22
Trang 66
CHƯƠNG 1: GIỚI THIÊU CÔNG TY THỰC TẬP
1 Giới thiệu công ty FPT Software
FPT Software thành lập năm 1999, là công ty thành viên của FPT, Tập đoàn Công nghệ hàng đầu của Việt Nam Sau 17 năm thành lập FPT Software hiện đang là công
ty phần mềm lớn nhất của Việt Nam và đứng trong Top 100 Nhà cung cấp dịch vụ Outsourcing toàn cầu do International Association of Outsourcing Professionals (IAOP) đánh giá
FPT Software theo đuổi mục tiêu gia công phần mềm để đáp ứng cho nhu cầu phát triển CNTT của các hãng phần mềm trong nước, các công ty lớn trong nước và tham vọng hơn là xuất khẩu phần mềm trên toàn thế giới cho các công ty nước ngoài biết đến tập đoàn FPT, mục đích chính là vươn đến tầm cao mới thông qua công nghệ nhằm nâng cao năng suất lao động
Kinh doanh của FPT Sofware xuất phát từ Công nghệ thông tin và Viễn Thông FPT
là cốt lõi để đáp ứng cho khách hàng trên 63 tỉnh thành trên toàn lãnh thổ Việt Nam và mở rộng đến khách hàng toàn cầu Từ khi được thành lập cho đến nay, FPT Software đã là công ty phần mềm số 1 tại Việt Nam trong lĩnh vực tích hợp hệ thống, phân phối và bán lẻ, dịch vụ Công Nghệ Thông tin, xuất khẩu gia công phần mềm, bán lẻ sản phẩm CNTT
Từ 13 lập trình viên với giấc mơ đưa trí tuệ Việt Nam đi khắp năm châu, đội quân FSOFT ở tuổi 18 với hơn 10.000 người, doanh thu hơn 230 triệu USD, tiếp tục biến giấc mơ biến Việt Nam trở thành điểm sáng về CNTT trên bản đồ thế giới thành hiện thực với mục tiêu đạt 1 tỉ USD doanh số năm 2020 và 30.000 người
Sau 17 năm phát triển thị trường toàn cầu, đến nay FPT Software đã có 23 văn phòng tại 14 quốc gia bao gồm Việt Nam, Nhật Bản, Singapore, Mỹ, Pháp, Đức, Slovakia, Malaysia, Úc, Trung Quốc, Hàn Quốc, Myanmar, Philippines, Thái Lan
Trang 77
2 Sản phẩm của công ty
Là công ty chuyên xuất khẩu dịch vụ phần mềm, FPT Software cung cấp các dịch vụ phát triển phần mềm và bảo trì, triển khai ERP, QA, chuyển đổi ứng dụng, hệ thống nhúng, điện toán di động, điện toán đám mây… trong nhiều lĩnh vực như: Tài chính ngân hàng, Viễn thông, Y tế, Chế tạo, Công nghiệp xe hơi, Dịch vụ công… Hiện FPT Software đang tập trung nghiên cứu và phát triển dịch vụ CNTT dựa trên những nền tảng công nghệ mới như IoT, S.M.A.C, cho các lĩnh vực sản xuất máy bay, sản xuất ô tô, ngân hàng, truyền hình vệ tinh, viễn thông trên phạm vi toàn cầu Công ty hiện đã và đang cung cấp dịch vụ cho khoảng 450 khách hàng là các tập đoàn lớn trên thế giới, trong đó có 43 khách hàng nằm trong danh sách Fortune Global 500
Trang 88
CHƯƠNG 2: NỘI DUNG THỰC TẬP
Đợt thực tập với chủ đề Kiểm thử phần mềm trong ứng dụng tracking xe oto nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập vị trí Kiểm thử phần mềm, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển phần mềm chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
Kết quả : Hiểu thêm về công ty FPT Software, quá trình thành lập và phát triển Có thêm
các kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Các công cụ quản lý dự án
Thời gian : 1 ngày
Nội dung : Tìm hiểu về các công cụ quản lý dự án sẽ được sử dụng trong quá trình
làm việc
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các công
cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như Jira tool, Azure tool - sử dụng để quản lý task, theo dõi tiến độ dự án, quản lý nguồn lực
dự án, MS Teams, Workchat – là kênh để trao đổi giữa của dự án
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Kết quả : Làm quen và sử dụng thành thạo các thao tác trên Jira tool, Azure tool như
log work, tạo task, kéo task
2.2 Tìm hiểu mô hình Agile trong phát triển và kiểm thử phần mềm
Thời gian : 2 ngày
Nội dung :
Trang 9- Nguyên tắc áp dụng trong phương pháp Agile
a, Kiểm thử giúp dự án nhanh chóng được bàn giao
Ở dự án truyền thống, kiểm thử thường được xem là bước cuối kiểm tra chất lượng sản phẩm Và việc ngăn chặn lỗi của phầm mềm bị coi như trách nhiệm của QA/tester Bug được tìm thấy dù quan trọng hay không thì cũng sẽ làm chậm quá trình bàn giao sản phẩm
Trong dự án Agile, chúng ta xây dựng một sản phẩm tốt ngay từ ban đầu, sử dụng kiểm thử để phản hồi trên ngay khi phát triển để làm thế nào cho sản phẩm tương đồng với yêu cầu
Nghe có vẻ là thay đổi nhỏ, nhưng thực chất thì việc này có ý nghĩa lớn Mối liên
hệ giữa tester và dev cần là sự cộng tác, tương hỗ lẫn nhau
Trang 1010
b, Kiểm thử không chỉ là một giai đoạn của dự án Kiểm thử không phải là một giai đoạn trong quá trình phát triển Agile mà cần được tham gia sâu vào quy trình phát triển từ sớm
Cách tiếp cận Agile tập trung vào việc xác nhận những điều đúng đắn ngay từđầu, giảm sự cần thiết phải có nhiều kiểm thử viên (QA Tester) ở cuối quy trình
để đạt được kết quả Đảm bảo tiến độ dự án được liên tục
c, Cá nhân và sự tương hỗ quan trọng hơn quy trình Với dự án truyền thống, tester làm việc độc lập và chịu trách nhiệm với toàn bộ hoạt động test
Đối với Agile, các hoạt động test được thực hiện bởi toàn bộ dự án Để thực hiện được hết test thì cần thực hiện lặp lại qua các sprint
Tuy nhiên tới khi dự án lớn hoặc phức tạp lên thì sẽ có lúc không thể test hết các testcase đề ra và không thể thực hiện được mục tiêu ban đầu đề ra Có nghĩa team không thể thực hiện nhanh như họ nghĩ Vì nếu test chưa xong thì feature cũng không thể xong được, vì vậy để đẩy nhanh tốc độ thì cả team phải làm cùng nhau và đẩy nhanh phần chậm nhất, test cùng nhau
Trang 1111
d, Rút ngắn vòng lặp phản hồi Thời gian từ khi viết code và thực hiện code tới khi biết được code vận hành như thế nào được gọi là feedback loop (vòng phản hồi)
Nếu một phần mềm không được thực hiện test cho tới khi kết thúc và được bàn giao thì vòng phản hồi này bị kéo dài tới cả tháng, như thế là quá dài
Agile tạo nên một vòng phản hồi ngắn hơn bởi với dự án Agile, phần mềm được sẵn sàng để test ngay từ khi bắt đầu Đặc thù của Agile là đội dự án có rất nhiều cấp độ kiểm thử để có thể tấn công được nhiều loại dữ liệu khác nhau
Agile sử dụng nhiều test tự động vì nó trả lại phản hồi nhanh Test hồi quy thủ công mất nhiều thời gian thực hiện hơn, cần có nhân lực và có thể không thực hiện ngay lập tức được Kiểm tra thủ công vẫn còn quan trọng
Tuy nhiên, đội Agile thường thấy rằng những thông tin phản hồi nhanh chóng tạo nên bởi hồi quy tự động là chìa khóa để phát hiện các vấn đề một cách nhanh chóng, do đó làm giảm rủi ro và giảm việc phải làm lại
Trang 1212
e, Thỏa mãn mong muốn của khách hàng Cho dù là test tự động hay test thủ công thì kịch bản test cần phải khớp với yêu cầu và mong đợi của khách hàng Trước khi tốn thời gian tìm bug nên đặt câu hỏi
để làm sáng tỏ mong muốn của khách hàng đối với chức năng sản phẩm
Trang 13• Sử dụng các tài liệu hướng dẫn đơn giản
• Nắm bắt những ý tưởng thử nghiệm trong điều lệ kiểm nghiệm thăm dò
h, Chưa thể hoàn thành khi chưa qua giai đoạn kiểm thử Trong dự án truyền thống có sự phân tách rõ ràng giữa dev và test, đó là đặc trưng cho việc dev nói “xong” với phần họ phát triển nhưng nó vẫn chưa được test Do đó thực tế là phần phát triển ấy vẫn chưa xong cho tới khi test xong và bug được fix
Đó là lý do vì sao mà phần mềm chỉ được để “90% done” Agile không tính là
“done” mà nó cần được sẵn sàng cho sự chấp nhận của Product Owner và khách hàng cho tới khi nó được thực thi và test
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
Kết quả :
Trang 1414
- Hiểu được cách vận hành của mô hình Agile trong phát triển và kiểm thử phần mềm
2.3 Từ căn bản tới các bước hoàn thiện testcase
Thời gian: 5 ngày (1 tuần)
Nội dung: Các kiến thức cơ bản để có 1 bộ testcase
Để mang đến một sản phẩm phần mềm chất lượng đáng tin cậy thì việc phân tích yêu cầu là khâu vô cùng quan trọng trong quá trình xây dựng phần mềm Hoạt động này đòi hỏi sự kết hợp rất chặt chẽ giữa khách hàng và người phân tích để vạch ra được xem chúng ta phải phát triển cái gì
Yêu cầu của phần mềm là tất cả các yêu cầu về phần mềm do người dùng nêu ra bao gồm các chức năng của phần mềm, hiệu năng của phần mềm, giao diện của phần mềm và một số các yêu cầu khác
Thông thường các yêu cầu phần mềm được phân loại dựa trên 4 thành phần của phần mềm như sau:
• Các yêu cầu về phần mềm
• Các yêu cầu về phần cứng
• Các yêu cầu về dữ liệu
• Các yêu cầu về con người Mục tiêu quan trọng nhất đối với chất lượng phần mềm là phần mềm phải thỏa mãn được các yêu cầu và mong muốn của người dùng
Người dùng thường chỉ đưa ra những ý tưởng, nhiều khi rất mơ hồ về phần mềm
mà họ mong muốn xây dựng Và việc của các kỹ sư phát triển phần mềm đó là phải giúp họ đưa những ý tưởng mơ hồ đó thành hiện thực và xây dựng được một phần mềm có đầy đủ các tính năng cần thiết thỏa mãn yêu cầu của người dùng Hơn thế nữa, ý tưởng của người dùng thường xuyên thay đổi và việc của nhà phát triển là phải nắm bắt và đáp ứng được các yêu cầu thay đổi đó một cách hợp lý
• Đọc và cố gắng hiểu mục đích của ứng dụng đang mong muốn là gì?
• Vừa đọc và hình dung, tưởng tượng xem phần mềm /màn hình đó sẽ chạy như thế nào
• Thẩm định từng yêu cầu phần mềm để xác định xem chúng có khả năng thực hiện được hay không
• Xác định các rủi ro có thể xảy ra với từng yêu cầu cụ thể
Trang 1515
• Thảo luận với BA về những băn khoăn, vướng mắc, bất hợp lý, chưa rõ ràng trong tài liệu đặc tả yêu cầu
• Viết Q & A gửi cho Khách Hàng
• Dữ liệu đầu vào của test: định nhập cái gì để ra được kết quả mong muốn
• Việc xác định dữ liệu đầu vào của test thực sự là hoạt động tốn nhiều thời gian
• Dữ liệu test chính là phần Input dữ liệu đầu vào, để hệ thống xử lý và trả
ra Kết quả mong đợi
• Ví dụ: tester nhập dữ liệu test: 1.Nhập username = anhdt 2.Nhập password = abc@123 **Kết quả mong đợi / Expected result: **
• 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
• Mỗi bước thiết kế test nên chỉ ra rõ ràng những gì bạn mong đợi
• Phần mềm sẽ phải chạy đúng như Kết quả mong đợi, nếu ko giống thì sẽ là Lỗi ( bug/ defect) và test case đó là Fail
• File testcase cần có những step test đơn giản, minh bạch, dễ hiểu:
• Step test phải viết chi tiết rõ ràng để ngay cả khi tester khác đọc có thể thực hiện được
• Mục đích và phạm vi của testcase cũng được mô tả chi tiết
• Điều kiện tiền đề, data test cũng phải được ghi ở từng testcase nếu cần
• Testcase nên được review chéo bởi member trong team
• Không nên gộp quá nhiều kết quả confirm vào 1 case mà nên tách mỗi kết quả confirm ra từng case
• Khi tạo testcase nên đứng ở vị trí End user
• Testcase nên cover các trường hợp kiểm thử như: Phân lớp tương đương, giá trị biên, điều kiện normal và abnormal Cả các trường hợp free test không có trong đặc tả yêu cầu
• Chính xác, đầy đủ nghiệp vụ hệ thống
Trang 16• Trình bày mạch lạc thống nhất cho toàn bộ tài liệu
• Có khả năng tái sử dụng (có thể dễ dàng cập nhật và sửa đổi)
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Làm các bài tập thực hành như viết testcase của các chức năng cơ bản: Login, logout, register
- Viết thành công được test case, bao phủ hết các trường hợp
2.4 Execute test, log bug, verify bug, test API trên swagger
Thời gian: 10 ngày (1 tuần)
Nội dung:
- Sau khi có bộ testcase hoàn chỉnh, đồng thời lúc này developer cũng đã code hoàn thiện 1 số chức năng trong sprint hiện tại thì lúc này người kiểm thử (tester) sẽ thực hiện test các chức năng của sản phẩm dựa theo bộ testcase, đảm bảo rằng các chức năng hoạt động đúng như yêu cầu của khách hàng Bên cạnh
đó cũng là việc test UI/UX của sản phẩm, đảm bảo sản phẩm đúng theo như bản design Nếu như có lỗi (bug) tester sẽ thông báo với team dev cũng như log trên tool để mọi người theo dõi task Khi nào bug được fix thì nhiệm vụ của người
tester là test lại bug đó 1 lần nữa để đảm bảo rằng bug đã được fix
- Các API được cụ thể hóa trên swagger, tester lên đó để truyền dữ liệu, import và chỉnh sửa dữ liệu để đảm bảo rằng frontend đã trả đúng kết quả của backend,
backend đã trả kết quả đúng, … Thực hiện:
- Thực hiện kiểm thử trên sản phẩm project trong sprint 1
Kết quả: