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ếtluận - Mở đầu - Chương 1: Tổng quan về doanh nghiệp và lý thuyết về kiểm thử phần mềm - Chương 2
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 TIN HỌC QUẢN LÝ
THỰC HIỆN KIỂM THỬ TỰ ĐỘNG TRÊN WEBSITE
GURU99 BANK
Đơn vị thực tập : TMA Solutions Bình Định
Giảng viên hướng dẫn : TS Nguyễn Thị Uyên Nhi
Trang 2• LỜI CẢM ƠN
Lời đầu tiên chúng em xin gửi lời cảm ơn tới TMA Solutions Bình Định đãcho chúng em cơ hội để được học hỏi và làm việc tại công ty Đặc biệt, chúng emxin cảm ơn anh Tây Hồ – người đã trực tiếp hướng dẫn, tạo điều kiện, cung cấpkiến thức cũng như tài liệu cho chúng em trong suốt kỳ thực tập tại công ty; vàcũng như sự hỗ trợ nhiệt tình từ các anh chị nhân viên, quản lý của team DG5,DC9 và của toàn công ty để chúng em có thể hoàn thành tốt đợt thực tập vừa qua
Chúng em cũng xin gửi lời cảm ơn đến quý thầy cô khoa Thống kê – Tin họctrường Đại học Kinh Tế - Đại học Đà Nẵng, đặc biệt chúng em xin cảm ơn côNguyễn Thị Uyên Nhi đã tận tình hướng dẫn cũng như luôn theo sát quá trìnhthực tập của chúng em để chúng em có thể hoàn thành kỳ thực tập thật tốt
Vì thời gian và kiến thức còn hạn hẹp nên bài báo cáo chắc chắn sẽ không thểtránh khỏi những thiếu sót Chúng em rất mong nhận được những ý kiến, đónggóp của công ty, quý thầy cô để chúng em có thể hoàn thành bài báo cáo tốt hơncũng như rút kinh nghiệm cho những lần về sau Em xin chân thành cảm ơn
Trang 3• LỜI CAM ĐOAN
Chúng em xin cam đoan đây là bài cáo thực tập nghề nghiệp của chúng em vàdưới sự hướng dẫn của Tiến sĩ: Nguyễn Thị Uyên Nhi Ngoài ra không có bất cứ
sự sao chép của người khác Nội dung báo cáo thực tập là sản phẩm mà chúng
em đã nỗ lực nghiên cứu trong quá trình được cô hướng dẫn cũng như tham giathực tập tại Công ty TMA Solutions tại Bình Định Các số liệu, kết quả trình bàytrong báo cáo là hoàn toàn trung thực, chúng em xin chịu hoàn toàn trách nhiệm,
kỷ luật của bộ môn và nhà trường đề ra nếu như có vấn đề xảy ra
Trang 4CHƯƠNG 1 : TỔNG QUAN VỀ DOANH NGHIỆP VÀ LÝ THUYẾT VỀ
1.1 Giới thiệu tổng quát về doanh nghiệp thực tập 4
1.2.1 Tìm hiểu thông tin về công việc thực tập Tester 4
1.3 Cơ sở lý thuyết về kiểm thử phần mềm 51.3.1 Giới thiệu về Kiểm thử phần mềm, mục tiêu của Kiểm thử 51.3.2 Quy trình phát triển phần mềm, nguyên tắc kiểm thử 6
1.3.4 Phân biệt Verification và Validation 7
Trang 51.3.5 Vòng đời phát triển phần mềm 7
2.2 Workflow về chức năng của trang web Guru99 Bank 14
2.3.1 Đặc tả yêu cầu chức năng New Customer 152.3.2 Đặc tả yêu cầu chức năng New Account 17
CHƯƠNG 3: THIẾT KẾ VÀ THỰC THI KIỂM THỬ CHO WEBSITE
Trang 6TÀI LIỆU THAM KHẢO 29
Hình 2.1 Giao diện trang quản lý của trang web Guru99 Bank 10
Hình 2.5 Giao diện hiển thị thông tin tạo khách hàng mới thành công 15
Hình 2.7 Giao diện hiển thị thông tin khi tạo tài khoản mới thành công 18
Hình 3 1 Thiết kế Test case cho chức năng New customer 19Hình 3 2 Thiết kế Test case cho chức năng New Account 20Hình 3 3 Kết quả Testcase ID: test_NC1_Uns 24Hình 3 4 Kết quả Testcase ID: test_NC7_Uns 24Hình 3 5 Kết quả Testcase ID: test_NA4_Uns 25Hình 3 6 Kết quả Testcase ID: test_NA11_Uns 25
Trang 7• DANH MỤC BẢNG BIỂU
Trang 8• DANH MỤC CÁC TỪ VIẾT TẮTSTLC: Software Testing Life Cycle
SDLC: Software Development Life Cycle
Trang 9• CHECK LIST CỦA BÁO CÁOSTT Nội dung công việc Có Không Ghi chú
1 Báo cáo được trình bày (định
dạng) đúng với yêu cầu
2 Báo cáo có số lượng trang đáp
ứng đúng yêu cầu (40-70
trang)
3 Báo cáo trình bày được phần
mở đầu bao gồm: Lý do chọn
đề tài, mục tiêu, phương pháp,
…
4 Báo cáo trình bày được cơ sở
lý thuyết phù hợp với nội dung
của đề tài (Tối đa 15 trang)
5 Nội dung chính của đề tài
được trình bày hợp lý như đặt
vấn đề rõ ràng, giải quyết vấn
đề và kết quả
6 Báo cáo có phần kết luận và
hướng phát triển của đề tài
(Kết luận về kết quả đề tài và
kết quả của bản thân thu được
qua quá trình thực tập tại
Trang 101 Mục tiêu của đề tài
- Nghiên cứu về đề tài “Thực hiện kiểm thử cho Website Guru99 Bank: Chứcnăng New Customer và New Account bằng cả phương pháp thủ công và tự động,giúp hiểu sâu hơn về kiến thức kiểm thử phần mềm Đề xuất ra một bộ test casecũng như quy trình kiểm thử tự động và cách thức lựa chọn test case hiệu quảcho hai chức năng New Customer và New Account
2 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Website Guru99 Bank
- Phạm vi nghiên cứu: Kiểm thử thủ công và kiểm thử tự động cho WebsiteGuru99 Bank
3 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ếtluận
- Mở đầu
- Chương 1: Tổng quan về doanh nghiệp và lý thuyết về kiểm thử phần
mềm
- Chương 2: Phân tích và thiết kế hệ thống
- Chương 3: Thiết kế và thực thi kiểm thử cho website Guru99 Bank
- Kết luận và hướng phát triển
Trang 11• CHƯƠNG 1: TỔNG QUAN VỀ DOANH NGHIỆP VÀ LÝ
THUYẾT VỀ KIỂM THỬ PHẦN MỀM
1.1 Giới thiệu tổng quát về doanh nghiệp thực tập
Công ty TNHH Giải pháp Phần mềm Tường Minh Bình Định (TMASolutions Bình Định) đượ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 (6tạ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) TMA Bình Định là dự án đầu tư quy mô lớn củaTMA Solutions Với bề dày 25 năm phát triển vững mạnh của TMA Solutions thìTMA Bình Định đang dần khẳng định vị thế của mình đối với nền CNTT tỉnhBình Định, góp sức cùng với tỉnh xây dựng Thung Lũng Sáng tạo Quy Nhơn trởthành trung tâm khoa học, công nghệ cao tại miền Trung
Tháng 6 năm 2018, TMA đã mở chi nhánh tại Bình Định Sau 5 năm, TMA BìnhĐịnh đã phát triển nhanh chóng với hơn 600 kỹ sư, trong đó có nhiều kỹ sư đanglàm việc tại TP.HCM đã trở về làm việc tại quê hương
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 QuyNhơn (Quy Nhon Innovation Park – QNIVY) với vốn đầu tư hàng trăm tỷ đồng.1.2 Tổng quan về vị trí việc làm
1.2.1 Tìm hiểu thông tin về công việc thực tập Tester
Tester là công việc của những người kiểm duyệt chất lượng phần mềmbằng cách cho chạy thử nghiệm nhằm phát hiện ra các lỗi, sai sót hay bất cứ vấnđề nào ảnh hưởng đến chất lượng phần mềm Tester phải đảm bảo sản phẩm phầnmềm đến tay khách hàng với mức rủi ro thấp nhất
Trang 12Trong giai đoạn lập kế hoạch thử nghiệm và chuẩn bị chạy thử nghiệm phần mềm các Tester thường xem xét và đóng góp vào kế hoạch kiểm tra, phân tích, đánh giá các yêu cầu và thông số kỹ thuật Trực tiếp xác minh, thẩm định hệ thống phần mềm có đáp ứng các yêu cầu kỹ thuật và yêu cầu nghiệp vụ không Hoàn thiện sản phẩm nhằm đáp ứng nhu cầu của khách hàng đặt ra về số lượng lẫn chất lượng.
1.2.2 Yêu cầu về kiến thức và kĩ năng
Yêu cầu về kiến thức và kỹ năng cho một Tester (Người kiểm thử) baogồm:
- Kiến thức về Testing
- Kiến thức về Quy trình phát triển phần mềm
- Kỹ năng kiểm thử tự động
- Kỹ năng ghi tài liệu kiểm thử
- Kiến thức về Bug Tracking
- Kiến thức về SQL
- Kỹ năng giao tiếp
- Kỹ năng xác định vấn đề
- Kỹ năng làm việc nhóm
- Kiến thức về môi trường và công cụ
- Kỹ năng giải quyết vấn đề
- Kiến thức về ngôn ngữ lập trình
1.3 Cơ sở lý thuyết về kiểm thử phần mềm
1.3.1 Giới thiệu về Kiểm thử phần mềm, mục tiêu của Kiểm thử
Kiểm thử phần mềm (software testing) là hoạt động nhằm tìm kiếm và phát hiện ra các lỗi của phần mềm, đảm bảo phần mềm chính xác, đúng và đầy
đủ theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt ra
Trang 13Mục tiêu chính của kiểm thử phần mềm thường được chia thành mục tiêu ngắn hạn, mục tiêu dài hạn và mục tiêu sau khi kiểm thử Trong đó, mục tiêu quan trọng của kiểm thử phần mềm không thể không nhắc đến bao gồm:
● Tìm lỗi phát sinh do lập trình viên tạo ra khi code
● Ngăn chặn lỗi và đáp ứng các yêu cầu của người dùng
● Mang đến cho khách hàng sản phẩm phần mềm chất lượng
● Có được sự tin tưởng của khách hàng và khẳng định uy tín
● Giảm chi phí và cải tiến quy trình (sau khi kiểm thử phần mềm)
1.3.2 Quy trình phát triển phần mềm, nguyên tắc kiểm thử
Quy trình phát triển phần mềm (Software Development Process) là mộtchuỗi các hoạt động được thực hiện để thiết kế, phát triển và triển khai một sảnphẩm phần mềm Có nhiều quy trình phát triển phần mềm khác nhau như làWaterFall, V Models, Agile Model, 'Scrum Methodology
Quy trình phát triển phần mềm có sáu giai đoạn cơ bản bao gồm:
● Thu thập yêu cầu (Requirements Gathering)
● Thiết kế (Design)
● Lập trình (Coding)
● Kiểm thử (Testing)
● Triển khai (Deployment)
● Bảo trì và hỗ trợ (Maintenance and Support)
Trong kiểm thử phần mềm có 7 nguyên tắc kiểm thử gồm:
1 Kiểm thử chỉ ra sự hiện diện của lỗi:
2 Kiểm thử mọi thứ là không thể:
3 Kiểm thử sớm tiết kiệm thời gian và tiền bạc
4 Lỗi gom thành nhóm
5 Đề phòng nghịch lý thuốc trừ sâu
6 Kiểm thử phụ thuộc vào ngữ cảnh
7 Quan niệm sai về phần mềm không có lỗi
1.3.3 Phân biệt Error / Fault / Failure
- Error: Là hành động của con người dẫn đến kết quả sai
Trang 14• Defect: Lỗi trong quá trình phát triển hoặc lỗi logic (coding or logic) làm cho chương trình hoạt động sai yêu cầu đề ra (Về cơ bản là giống định nghĩa bug) (Fault)
- Failure: Lỗi khi có kết quả sai lệch so với yêu cầu đặc tả, là sự khác biệt giữa kết quả thực tế trên màn hình và kết quả mong đợi của một thành phần, hệ thống hoặc service nào đó
1.3.4 Phân biệt Verification và Validation
Xác minh (Verification): Xác minh là quá trình đánh giá một hệ thống hoặc thành phần phần mềm để xác định xem nó có đáp ứng các yêu cầu đã chỉ định hay không Xác minh tập trung vào việc kiểm tra xem phần mềm đã được thiết kế và triển khai đúng và nhất quán với chức năng dự kiến
Xác thực (Validation): Xác thực là quá trình đánh giá một hệ thống hoặc thành phần phần mềm trong quá trình phát triển hoặc cuối cùng để xác định xem
nó đáp ứng mục đích và nhu cầu của người dùng cuối hay không Xác thực tập trung vào đánh giá hành vi, hiệu suất và chức năng của phần mềm trong ngữ cảnh thực tế
\
1.3.5 Vòng đời phát triển phần mềm
Mô hình thác nước (Waterfall Model): là mô hình vòng đời tuần tự tuyến tính Nó rất đơn giản để hiểu và sử dụng Trong mô hình Waterfall, mỗi giai đoạnphải được hoàn thành trước khi giai đoạn tiếp theo có thể bắt đầu và không có sự chồng chéo trong các giai đoạn
Mô hình V (V Model): là một mô hình phát triển phần mềm tuần tự, trong
đó các giai đoạn của quy trình phát triển phần mềm được ánh xạ theo kiến trúc hình chữ V Mô hình này tạo ra một liên kết giữa các giai đoạn phát triển và kiểmthử tương ứng
Mô hình Agile: là một phương pháp phát triển phần mềm linh hoạt và tuần
tự Thay vì một quy trình tuyến tính, Agile tập trung vào việc phát triển phần mềm một cách linh hoạt và phản hồi nhanh chóng Agile coi việc làm việc theo giai đoạn nhỏ (sprints) là quan trọng, trong đó các yêu cầu và ưu tiên có thể đượcthay đổi theo thời gian
Scrum là một phương pháp quản lý dự án theo Agile, tập trung vào việc tổchức và quản lý các hoạt động phát triển phần mềm Scrum chia dự án thành các đợt phát triển ngắn gọi là sprints, thường kéo dài từ 1 đến 4 tuần Mỗi sprint bao gồm việc lên kế hoạch, phát triển, kiểm thử và đánh giá
Trang 151.3.6 Các loại kiểm thử phần mềm
Manual testing
Manual Testing là một trong những công việc theo dạng kiểm thử phần mềm, hoặc là một chương trình được thực hiện bằng tay bởi các tester mà không thông qua bất kỳ công cụ hỗ trợ nào Nó hoạt động dựa vào mục đích phát hiện các lỗi bug từ nhỏ cho đến lớn trong phần mềm
Automation testing
Automation Test có thể hiểu rất đơn giản là thay vì test bằng tay, ta đểmáy thực hiện việc testing mà Tester phải làm (Khởi động hệ thống, nhập dữ liệuđầu vào, kiểm tra so sánh với dữ liệu đầu ra và ghi kết quả) Automation Testingđóng một vai trò quan trọng góp phần nâng cao năng suất kiểm thử, giảm thiểulỗi cũng như sự nhàm chán với việc kiểm thử bằng tay trong một thời gian dàihoặc lặp đi lặp lại
Automation Test là một quá trình xử lý tự động các bước thực hiện mộttest case và được thực hiện bởi phần mềm là Automation Testing Tool Mục đíchcủa Tester là tìm bug nhưng mục đích cuối cùng vẫn là hỗ trợ để làm ra sản phẩmtốt nhất
Security testing
Security Testing là quá trình kiểm thử phần mềm nhằm đảm bảo tính bảomật của hệ thống Mục tiêu chính của Security Testing là phát hiện các lỗ hổngbảo mật, ranh giới và yếu điểm trong phần mềm để giảm thiểu rủi ro tấn công vàbảo vệ thông tin quan trọng khỏi các mối đe dọa
API testing
API Testing (Application Programming Interface Testing) là quá trình kiểm thử các giao diện lập trình ứng dụng (API) để đảm bảo tính đúng đắn, hiệu suất và bảo mật của API đối với ứng dụng phần mềm
1.3.7 Các phương pháp kiểm thử phần mềm
Static Testing
Static Testing là một phương pháp kiểm thử phần mềm mà trong đó kiểmthử được thực hiện bằng cách xem xét hoặc đánh giá phần mềm mà không cần
Trang 16việc xem xét mã nguồn, tài liệu, mô hình hoặc các thành phần khác của phần mềm để phát hiện lỗi, khuyết điểm hoặc sự không phù hợp.
Dynamic Testing
Dynamic Testing là một phương pháp kiểm thử phần mềm mà trong đó kiểm thử được thực hiện bằng cách thực hiện các bộ kiểm thử và chạy phần mềmthực tế để đánh giá sự hoạt động và hiệu suất của nó Trong Dynamic Testing, phần mềm được chạy và các kết quả thực tế được so sánh với kết quả dự kiến để xác định sự khác biệt và tìm ra các lỗi và khuyết điểm
White Box Testing
Kiểm thử Hộp Trắng (còn gọi là Clear Box Testing, Open Box Testing, Glass Box Testing, Transparent Box Testing, Code-Based Testing hoặc
Structural Testing) là một phương pháp kiểm thử phần mềm trong đó tester biết về cấu trúc nội bộ / thiết kế Người kiểm tra chọn đầu vào để thực hiện các đườngdẫn thông qua mã và xác định đầu ra thích hợp Kiến thức lập trình và kiến thức thực hiện là rất cần thiết trong kiểm thử hộp trắng
1.3.8 Các mức độ kiểm thử phần mềm
Unit Testing
Unit test là mức độ kiểm thử nhỏ nhất trong quy trình kiểm thử phần mềm Unit test kiểm thử các đơn vị nhỏ nhất trong mã nguồn như method, class, module Do đó Unit test nhằm kiểm tra mã nguồn của các chương trình, các chức năng riêng rẽ hoạt động đúng hay không
Integration Testing
Kiểm thử tích hợp (Integration testing) hay còn gọi là tích hợp và kiểm thử (integration and testing, viết tắt: I&T) là một giai đoạn trong kiểm thử phần mềm Mỗi module phần mềm riêng biệt được kết hợp lại và kiểm thử theo nhóm.Kiểm thử tích hợp xảy ra sau kiểm thử đơn vị (Unit Test) và trước kiểm thử xác nhận Kiểm thử tích hợp nhận các module đầu vào đã được kiểm thử đơn vị,
Trang 17nhóm chúng vào các tập hợp lớn hơn, áp dụng các ca kiểm thử đã được định nghĩa trong kế hoạch kiểm thử tích hợp vào tập hợp đó, và cung cấp đầu ra cho
hệ thống tích hợp
System Testing
System Test hay còn được gọi là kiểm thử hệ thống, đây là quá trình kiểmtra, theo dõi của 1 ứng dụng phần mềm bất kỳ đã được tích hợp đầy đủ các chứcnăng cần thiết Bên cạnh đó dựa vào mô tả của dữ liệu cho trước để xác định lạihoạt động của hệ thống đã đúng với kế hoạch hay chưa
Acceptance Testing
Acceptance Testing (Kiểm thử chấp nhận) là một kiểm thử nhằm xác định
hệ thống phần mềm có đạt yêu cầu kỹ thuật hay không Bằng việc kiểm tra các hành vi của hệ thống qua dữ liệu thực tế, kiểm thử chấp nhận sẽ xác định có hay không việc hệ thống đáp ứng được các tiêu chí lẫn yêu cầu của khách hàng Một
số kỹ thuật được sử dụng trong Acceptance Testing đó là phân tích giá trị biên giới, phân vùng tương đương và sử dụng bảng quyết định
Trang 18• CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1 Tổng quan về hệ thống
2.1.1 Giới thiệu về hệ thống Guru99 Bank
Hệ thống "Guru99 Bank" là một ứng dụng ví dụ được sử dụng trong việchọc và thực hành kiểm thử phần mềm bằng Selenium và các công cụ kiểmthử tự động khác Nó được tạo ra bởi trang web Guru99, một nguồn tài liệuphổ biến về kiểm thử phần mềm và công nghệ thông tin
Hình 2.1 Giao diện trang quản lý của trang web Guru99 Bank
2.1.2 Chức năng của hệ thống
Các tính năng cơ bản trong "Guru99 Bank" bao gồm:
Login Người dùng có thể đăng nhập vào tài khoản của
họ bằng cách cung cấp tên người dùng và mật khẩu
New Customer Manager: Người quản lý có thể thêm thông tin
khách hàng mới bao gồm thông tin như tên, địa