CHƯƠNG 1. TỔNG QUAN VỀ CÔNG TY TMA 1. Giới thiệu tổng quát về doanh nghiệp thực tập 1.1 Quá trình phát triển Đượ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). Tháng 6 năm 2018, TMA đã mở chi nhánh tại Bình Định. Sau 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.2 Tầm nhìn và sứ mệnh Là trung tâm phần mềm đầu tiên tại Thung lũng Sáng tạo Quy Nhơn, 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.
Công viên Sáng tạo TMA bao gồm Trung tâm Phát triển Phần Mềm, Xưởng Phần mềm, Trung tâm R&D, Trung tâm Khoa học Dữ liệu, Học viện Công Nghệ.3 Lĩnh vực hoạt động - Trí tuệ nhân tạo / máy học: • Phân tích ngôn ngữ tự nhiên (NLP) • 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: • 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: • Công nghiệp • Điện tử • Xe hơi • Viễn thông • Y tế Giao thông • Quản lý học sinh • Quản lý tài sản 1.2 Tổng quan về vị trí Kiểm thử phần mềm 1.1 Vị trí thực tập Kiểm thử phần mềm còn được gọi là Tester, là người chịu trách nhiệm kiểm tra và đảm bảo chất lượng của phần mềm hoặc ứng dụng trước khi chúng được phát hành. Kiểm thử yêu cầu kiến thức về các quy trình và phương pháp kiểm thử. Công việc của Tester bao gồm tạo ra các kịch bản kiểm thử, thực hiện các ca kiểm thử, tìm kiếm và ghi nhận các lỗi, sự cố hoặc không thỏa mãn yêu cầu, và tạo 3 báo cáo chi tiết về kết quả kiểm thử. Có khả năng chỉ ra các lỗi và sự cố trong phần mềm, hiểu rõ yêu cầu của khách hàng và tích hợp kiến thức về thiết kế và phát triển phần mềm để đảm bảo sự hoạt động chính xác và nhất quán của sản phẩm.2 Cơ hội nghề nghiệp Có cơ hội phát triển lớn, có thể làm việc ở môi trường làm việc trong nước và có cơ hội đi làm tại các nước phát triển như Nhật, Mỹ, Canada.
Mức lương: Tùy vào khả năng mà mức lương khởi điểm từ 5 triệu - 20 triệu 4 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VỀ KIỂM THỬ PHẦN MỀM (TESTER) 2.1 Tổng quan về kiểm thử phần mềm 2.1 Kiểm thử phần mềm là gì ? Kiểm thử phần mềm là một quá trình kiểm tra và đánh giá chất lượng một chương trình hoặc ứng dụng. 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 bảo chất lượng của sản phẩm và phòng ngừa và phát hiện lỗi.
Và đượ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. 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. Có 2 phương pháp kiểm tra: - Manual Testing (kiểm thử Thủ công) - Automation Testing (kiểm thử Tự động) 2.2 Kiểm thử phần mềm tự động là gì ? Kiểm thử phần mềm tự động còn được gọi với các tên khác là Automation Testing. Kiểm thử phần mềm tự động có thể hiểu rất đơn giản là thay vì kiểm thử bằng tay thì ta dùng các công cụ để hỗ trợ thực hiện kiểm thử 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 hiệu quả kiểm thử, giảm thiểu lỗi cũng như sự nhàm chán với việc kiểm thử bằng tay trong 5 một thời gian dài và việc lặp đi lặp lạ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 và được thực hiện bởi phần mềm là Automation Testing Tool.3 Các kỹ năng cần khi kiểm thử phần mềm Để kiểm tra trên source code của các lập trình viên, các Tester cần phải hiểu một ít kiến thức về lập trình. Cần phải có được những kỹ năng thiết kế, lập trình, phân tích và hiểu biết về các ứng dụng khác nhau của các phần mềm. Người làm công việc kiểm thử cũng cần có trình độ tiếng Anh để đọc, hiểu, viết được tài liệu chuyên ngành.
Tester phải có tính cẩn thận, tỉ mỉ, nhạy bén, cần phải phải học nhiều để có tầm nhìn rộng, biết được xu hướng thị trường để tư vấn và đưa ra quan điểm của mình về sản phẩm.4 Tầm quan trọng của kiểm thử phần mềm Tester là nghề vô cùng quan trọng, nó là một phần không thể thiếu và quan trọng trong kiểm thử phần mềm. Hai chữ "kiểm thử" nghe có vẻ đơn giản, nhàn rỗi đây là một giai đoạn giúp cho sản phẩm được hoàn thiện nhằm đáp ứng yêu cầu đặt ra của khách hàng. Sản phẩm hoàn thiện đưa đến tay người dùng tăng thêm niềm tin và sự uy tín của công ty đối với khách hàng. Nếu không có kiểm thử phần mềm thì phần mềm sẽ xảy ra lỗi.
Chính vì vậy, Tester là vị trí không thể thiếu và công việc này quyết định khá nhiều vào sự thành công chung của dự án.2 Các kỹ thuật kiểm thử phần mềm 2.1 Kiểm thử hộp trắng (White Box Testing) Kiểm thử hộp trắng là kiểm tra mà các Tester tìm kiếm lỗi bên trong code, cấu trúc của mã, biết được hoạt động bên trong mã để tìm đoạn mã phù hợp. Mục đích là kiểm thử bao phủ nhiều nhất các câu lệnh và các rẽ nhánh trong mã nguồn nếu có thể. Ưu và nhược điểm là dễ dàng tìm ra loại dữ liệu nào kiểm tra ứng dụng hiệu quả và tối ưu mã hóa. Song kiểm thử hộp trắng có nhược điểm không xem được mọi ngóc ngách để tìm lỗi tiềm ẩn vì nhiều đường dẫn không được kiểm tra và khó thực 6 hiện vì yêu cầu các công cụ chuyên dụng như bộ phân tích mã và công cụ sửa lỗi.2 Kiểm thử hộp đen (Black Box Testing) Kiểm thử hộp đen là kiểu kiểm tra mà Tester thực hiện kiểm tra không chú ý gì đến code, nói một cách dễ hiểu là không có bất kỳ kiến thức về hoạt động bên trong của ứng dụng.
Việc kiểm tra xảy ra dựa trên các đặc tả bên ngoài như giao diện, cũng có thể hiểu như kiểm tra hành vi, chỉ hành vi bên ngoài của ứng dụng là được đánh giá và phân tích. Mục đích là kiếm các trường hợp và chương trình không thực hiện theo các đặc tả của nó. Ưu và nhược điểm là phù hợp và hiệu quả với các đoạn mã lớn và truy cập mã không cần thiết. Phân biệt ra người dùng với nhà phát.
Bên cạnh đó kiểm thử hộp đen có nhược điểm là phạm vi hạn chế do thiếu kiến thức và người kiểm tra không nhắm mục tiêu cụ thể hoặc khu vực xảy ra lỗi.3 Kiểm thử hộp xám (Gray Box Testing) Kiểm thử hộp xám là sự kết hợp giữa kiểm thử hộp đen và kiểm thử hộp trắng. Trong đó ta quan tâm đến dữ liệu đầu vào và đầu ra trong kiểm thử hộp đen và có sự hiểu biết về cấu trúc của hệ thống cũng như quyền truy cập về cơ sở dữ liệu. Mục đích là tìm kiếm và xác định các lỗi do cấu trúc không đúng hoặc được sử dụng không đúng cách. Ưu và nhược điểm của kiểm thử hộp xám là cung cấp các lợi ích của kiểm thử hộp đen và kiểm thử hộp xám.
Kiểm tra được thực hiện từ quan điểm của người dung hơn là quan điểm của nhà thiết kế. Song nhược điểm là có thể mất nhiều thời gian để kiểm tra từng đường dẫn.3 Các cấp độ kiểm thử phần mềm Hình 2.3 Các cấp độ kiểm thử phần mềm 2.1 Kiểm thử đơn vị (Unit Testing) Kiểm tra đơn vị là kiểm tra từng đơn vị hoặc một thành phần riêng lẻ. Nó là phần nhỏ nhất của một ứng dụng như hàm, lớp, thủ tục, giao diện. Kiểm thử đơn vị thường có kích thước nhỏ, chức năng hoạt động đơn giản, không gây nhiều khó khăn trong việc kiểm thử, ghi nhận và phân tích kết quả do đó nếu phát hiện lỗi việc tìm kiếm nguyên nhân và sửa lỗi cũng đơn giản và tốn ít chi phí hơn.
Khi mà lập trình viên hoàn thành xong một chức năng hay màn hình nhỏ nào đó thì sẽ kiểm tra lại. Mục đích nhằm xác nhận rằng mỗi đơn vị của phần mềm hoạt động có đúng chức năng, có chính xác không. Người thực hiện: Nó đòi hỏi kiến thức về lập trình cũng như về thiết kế nên kiểm thử đơn vị được thực hiện bởi lập trình viên.2 Kiểm thử tích hợp (Integration Testing) Kiểm tra tích hợp là các đơn vị/mô-đun được tích hợp lại một cách hợp lí và được kiểm thử theo nhóm. Trong quá trình kiểm thử phần mềm thì các mô đun được kiểm thử độc lập, riêng rẻ thông qua kiểm thử đơn vị, sau đó sẽ được tích hợp lại thành một hệ thống hoàn chỉnh.
Mục đích: Là tìm ra sự khiếm khuyết trong sự tương tác giữa các mô đun 8 được tích hợp lại với nhau, đảm bảo các thành phần hoạt động đúng và tương tác với nhau một cách chính xác.Phát hiện lỗi giao tiếp xảy ra giữa các đơn vị. Phương pháp để kiểm thử tích hợp: • Bottom up: Kiểm tra từ dưới lên, kiểm tra từ những thành phần cơ bản nhất của hệ thống và kiểm tra lên những thành phần cao hơn.