CHƯƠNG 1. TỔNG QUAN VỀ CÔNG TY 1. Giới thiệu tổng quát về doanh nghiệp thực tập 1. Tổng quát về 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ệ hàng đầu thế giới từ 30 quốc gia TMA hiện có 6 chi nhánh tại Việt Nam (5 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).
Tháng 6 năm 2018, TMA đã mở chi nhánh tại Bình Định. Sau hơn 4 năm, TMA Bình Định đã phát triển nhanh chóng với hơn 400 kỹ sư, trong đó có nhiều kỹ sư đang là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 Quy Nhơn (Quy Nhon Innovation Park – QNIVY) với vốn đầu tư hàng trăm tỷ đồng.1 TMA Solutions Bình Định 1. Lĩnh vực hoạt động ● Tài chính, Ngân hàng và Bảo hiểm 2 ● Sức khỏe/Y tế ● Nông nghiệp & Chế biến thực phẩm ● Khách sạn & Du lịch ● Thương mại điện tử & phân phối ● Giáo dục ● Vận tải & Logistic ● Viễn thông 1.
Tổng quan về vị trí việc làm Hình 1.2 Testing ● Tìm hiểu về tester-Họ là ai: Tester (kiểm thử viên) là người khai phá hệ thống để tìm và báo cáo lại các lỗi tiềm ẩn của hệ thống phần mềm. Và là người có cách nhìn nhận phần mềm tổng quát nhất, ngoài kiến thức chuyên môn thì kiểm thử viên còn phải nắm vững những công cụ hỗ trợ việc kiểm thử. Không những thế các tester còn thường rất mạnh về kỹ năng giao tiếp đặc biệt là hai kỹ năng báo cáo và đặt câu hỏi. 3 ● Tester là làm những công việc gì? Thông thường, trong một dự án kiểm thử phần mềm, tester phải đảm nhiệm những công việc sau: • Phân tích và hiểu rõ các bản mô tả yêu cầu của khách hàng • Xác định hạng mục và quy mô kiểm thử • Hoạch định kiểm thử và xây dựng test plan (kế hoạch kiểm thử) • Xác định test condition (điều kiện kiểm thử) của hạng mục kiểm thử • Thiết kế test case (trường hợp kiểm thử) dựa trên test condition • Xây dựng và sắp xếp test case thành test procedure (phương cách kiểm thử) • Thu thập, tập hợp và lưu trữ test data (dữ liệu kiểm thử) • Thực hiện kiểm thử và tìm ra lỗi có trong phần mềm • Thực hiện tất cả các test level (mức độ kiểm thử) của quy trình kiểm thử • Phân tích kết quả thu được sau mỗi test level khác nhau • Đưa ra đề xuất để cải thiện các quy trình của vòng đời phát triển phần mềm • Báo cáo lỗi cho cấp trên như PM (Project Manager-Quản lý dự án), trưởng nhóm,… • Kiểm duyệt lại lỗi sau khi dev (Developer-Lập trình viên) thông báo đã sửa lỗi • Phát triển automated test script (kịch bản test tự động) khi cần thiết • Hỗ trợ khách hàng kiểm thử phần mềm • Tham gia vào quá trình ra mắt phần mềm và tiếp tục hỗ trợ sau khi đã ra mắt 4 CHƯƠNG 2.
TỔNG QUAN VÀ LÝ THUYẾT VỀ KIỂM THỬ PHẦN MỀM 2. Cơ sở lý thuyết về kiểm thử phần mềm 2. Kiểm thử phần mềm là gì? 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ó bao gồm việc kiểm tra, phân tích, quan sát và đánh giá các khía cạnh khác nhau của sản phẩm.
Người kiểm thử phần mềm (Tester) sử dụng kết hợp các công cụ thủ công và tự động. Sau khi tiến hành kiểm thử, Tester báo cáo kết quả cho team phát triển. Mục đích là xác định các lỗi, khiếm khuyết hoặc các yêu cầu còn thiếu so với yêu cầu thực tế. Mục đích của kiểm thử phần mềm • Đảm bảo chất lượng phần mềm • Ngăn ngừa và phát hiện lỗi • Cung cấp thông tin hỗ trợ ra quyết định cho giai đoạn tiếp theo • Xác minh và xác thực người dùng • Phát hiện ra lỗi trước khi khách hàng phát hiện ra 5 2.
Nguyên tắc kiểm thử Hình 2.3 Nguyên tắc kiểm thử Có 7 nguyên tắc kiểm thử phần mềm • Kiểm thử cho thấy sự hiện diện của lỗi: mục tiêu của kiểm thử phần mềm là tìm ra lỗi chứ không phải chứng minh phần mềm không có lỗi, chúng ta chỉ có thể giảm số lượng lỗi về mức tối thiểu chứ không thể đảm bảo phần mềm 100% không còn lỗi. • Kiểm thử toàn diện là không thể: vì mỗi dự án đều sẽ có thời gian và chi phí nhất định chúng ta chỉ kiểm thử các chức năng chính cũng như là các yêu cầu của khách hàng chứ không thể bao quát tất cả các trường hợp được. • Kiểm thử sớm: lỗi phát hiện càng sớm càng tốt nó sẽ không ảnh hưởng đến các giai đoạn sau chưa tiến hành cũng như tiết kiệm thời gian chi phí cho dự án. 6 • Phân cụm lỗi: các nghiên cứu đã chỉ ra rằng các lỗi trong phần mềm thường tập trung ở các khu vực hoặc mô đun cụ thể.
Bằng cách tập trung nỗ lực kiểm thử ở khu vực đó có thể phát hiện ra một số lỗi đáng kể và cải thiện chất lượng tổng thể của phần mềm. • Nghịch lý thuốc trừ sâu: việc lặp đi lặp lại các trường hợp kiểm thử giống nhau chúng ta sẽ không phát hiện ra các lỗi mới. • Thử nghiệm phụ thuộc vào ngữ cảnh: các loại phần mềm khác nhau thì sẽ kiểm thử khác ví dụ như trang thương mại điện tử và app mobile. • Không có sai lầm ngụy biện: cho dù một phần mềm 99% không có lỗi nhưng không đúng với yêu cầu của khách hàng thì phần mềm đó cũng không sử dụng được.
Error/Fault/Failure • Error là hành động của con người dẫn đến kết quả sai. • Fault lỗi xảy ra khi làm sai các step, process hoặc chuẩn bị dữ liệu. • 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 đó. Verification & Validation 1) Verification (xác minh) Là quá trình xác nhận rằng phần mềm đáp ứng đặc điểm kỹ thuật của nó, được thực hiện thông qua kiểm tra và hướng dẫn.
2) Validation (xác thực) Là quá trình xác nhận rằng nó đáp ứng các yêu cầu của người dùng. Đó là thử nghiệm thực tế. QA & QC 1) Quality Assurance (Đảm bảo chất lượng) Là một tập hợp các hoạt động cần thiết có kế hoạch và có hệ thống để mang lại sự tin cậy đầy đủ rằng các sản phẩm và dịch vụ sẽ phù hợp với các yêu cầu cụ thể và đáp ứng nhu cầu của người dùng. Sản phẩm đó có đúng không? 7 2) Quality Control (Kiểm soát chất lượng) Là quá trình so sánh chất lượng sản phẩm với các tiêu chuẩn áp dụng và hành động được thực hiện khi phát hiện sự không phù hợp.
Đó có phải sản phẩm phù hợp không. Các loại kiểm thử phần mềm 1) Manual testing (kiểm thử thủ công) Tức là chúng ta sẽ không sử dụng bất kỳ tool hay script nào để kiểm thử mà thay vào đó tester sẽ đóng vai trò như là người dùng cuối để kiểm tra xem có lỗi không mong muốn nào xảy ra không. Có nhiều giai đoạn khác nhau để kiểm thử thủ công như là kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống và kiểm thử chấp nhận người dùng. Tester sẽ dựa vào plan, các trường hợp kiểm thử và kịch bản để kiểm tra phần mềm.
2) Automation testing (kiểm thử tự động) Là khi tester viết các tập lệnh và sử dụng một phần mềm khác để kiểm tra sản phẩm. Quá trình này liên quan đến việc tự động hóa một quy trình thủ công, nhanh chóng và lặp đi lặp lại. Các phương pháp kiểm thử phần mềm 1) Static testing Kiểm thử tĩnh-xác minh là một kỹ thuật kiểm thử phần mềm được sử dụng để kiểm tra các lỗi trong ứng dụng phần mềm mà không cần thực thi mã. Kiểm thử tĩnh được thực hiện để tránh lỗi ở giai đoạn phát triển ban đầu vì việc xác định lỗi và giải quyết lỗi sẽ dễ dàng hơn.
Nó cũng có thể tìm ra các lỗi có thể không được tìm thấy bằng Dynamic testing. Hai loại kiểm thử tĩnh chính là: ● Kiểm tra thủ công: kiểm tra thủ công bao gồm phân tích mã được thực hiện thủ công, còn được gọi là đánh giá ● Phân tích tự động bằng các công cụ: phân tích tự động về cơ bản là phân tích tĩnh được thực hiện bằng các công cụ. 2) Dynamic testing 8 Kiểm thử động-xác thực là một phương pháp kiểm thử phần mềm được sử dụng để kiểm tra hành vi động của mã phần mềm. Mục đích chính của kiểm thử động là kiểm tra hành vi của phần mềm với các biến động hoặc các biến không cố định và tìm ra các điểm yếu trong môi trường thời gian chạy phần mềm.
Mã này phải được thực thi để kiểm tra hành vi động. Mục đích chính của kiểm thử động là đảm bảo rằng phần mềm hoạt động bình thường trong và sau khi cài đặt phần mềm, đảm bảo ứng dụng ổn định không có bất cứ sai sót lớn nào. Kiểm thử động được phân thành hai loại: ● Kiểm thử hộp trắng ● Kiểm thử hộp đen 3) White box testing Kiểm thử hộp trắng là phương pháp kiểm thử phần mềm trong đó người kiểm thử biết cấu trúc/thiết kế bên trong. Mục đích chính của kiểm thử hộp trắng là để kiểm tra xem hệ thống đang hoạt động như thế nào dựa trên mã.
Những người kiểm thử hộp trắng là những người có kiến thức về lập trình. 4) Black box testing Kiểm thử hộp đen là một phương pháp kiểm thử trong đó người kiểm thử không biết cấu trúc/mã/thiết kế bên trong. Mục đích chính của thử nghiệm này là để xác minh chức năng của hệ thống được kiểm thử và loại kiểm thử này yêu cầu thực hiện bộ kiểm thử hoàn chỉnh và chủ yếu được thực hiện bởi người kiểm thử và không cần bất kỳ kiến thức lập trình nào. Kiểm thử hộp đen được phân ra 2 loại: ● Kiểm thử chức năng (Kiểm thử đơn vị, tích hợp, hệ thống và chấp nhận) ● Kiểm thử phi chức năng (Kiểm thử hiệu suất, phục hồi, khả năng tương thích, bảo mật, khả năng sử dụng) 9 2.