Nếu đã đặt câu hỏi: "Tại sao phải kiểm thử phần mềm?" thì trước khi đi vào câu trả lời mình nghĩ bạn sẽ cần phải hiểu kiểm thử phần mềm là gì đã chứ nhỉ...
Kiểm thử phần mềm là gì?
Kiểm thử phần mềm là quá trình được sử dụng để xác định tính chính xác, hoàn thiện chất lượng của phần mềm máy tính được phát triển.
Nó bao gồm một tập hợp các hoạt động được thực hiện với mục đích tìm lỗi trong phần mềm để có thể sửa lỗi trước khi phát hành phần mềm cho người dùng cuối.
Kiểm thử phần mềm cũng giúp xác định lỗi, lỗ hổng hoặc kết quả thiếu hoặc trái với yêu cầu thực tế.
Kiểm thử phần mềm đơn giản là tìm lỗi phần mềm hoạt động không như mong muốn
Kiểm thử phần mềm có thể được thực hiện bằng tay (kiểm thử phần mềm thủ công - Manual Testing) hoặc sử dụng các công cụ tự động (kiểm thử phần mềm tự động - Automation testing). Một số người thích nói Kiểm thử phần mềm dưới dạng Kiểm thử hộp trắng và Kiểm thử hộp đen.
Kiểm tra rất là việc phải làm và phải làm tốt vì lỗi của phần mềm có thể sẽ làm bạn tốn tiền hoặc thậm chí gây ra nguy hiểm. Lỗi phần mềm có khả năng gây thiệt hại rất lớn về tiền tệ và con người, lịch sử có rất nhiều các ví dụ như vậy.
12 tai nạn vì lơ là kiểm thử phần mềm gây ra.
Đây là danh sách các tai nạn khủng khiếp, liên lụy hàng trăm ngàn người, tốn hàng tỷ đô la chỉ vì công tác kiểm thử phần mềm chưa được thực hiện tốt.
1. Vào tháng 4 năm 2015, Bloomberg ở London đã gặp sự cố do trục trặc phần mềm ảnh hưởng đến hơn 300.000 thương nhân trên thị trường tài chính. Nó buộc chính phủ phải hoãn việc bán nợ 3 tỷ bảng.
2. Nissan đã phải triệu hồi hơn 1 triệu xe khỏi thị trường do lỗi phần mềm trong các máy dò cảm ứng túi khí. Đã có báo cáo hai tai nạn do lỗi phần mềm này.
3. Starbucks đã buộc phải đóng cửa khoảng 60% các cửa hàng ở Mỹ và Canada do lỗi phần mềm trong hệ thống POS của mình vì họ không thể xử lý giao dịch.
4. Một số nhà bán lẻ bên thứ ba của Amazon, thấy giá sản phẩm của họ giảm xuống còn 1p do trục trặc phần mềm. Họ đã bị tổn thất nặng nề
5. Lỗ hổng trong Window 10. Lỗi này cho phép người dùng thoát khỏi các hộp bảo mật sandbox thông qua một lỗ hổng trong hệ thống win32k.
6. Năm 2015, máy bay chiến đấu F-35 trở thành nạn nhân của lỗi phần mềm, lỗi xảy ra khiến nó không thể phát hiện mục tiêu chính xác.
7. Máy bay Air300 A300 của China Airlines bị rơi do lỗi phần mềm vào ngày 26 tháng 4 năm 1994, vụ tai nạn đã cướp đi mạng sống của 264 người vô tội
8. Năm 1985, máy xạ trị Therac-25 của Canada bị trục trặc do lỗi phần mềm và đã truyền liều gây chết người cho bệnh nhân, khiến 3 người chết và 3 người khác bị thương nặng.
9. Vào tháng Tư năm 1999, một lỗi phần mềm gây ra sự thất bại của vụ phóng vệ tinh quân sự trị giá 1,2 tỷ đô la, tai nạn tốn kém nhất trong lịch sử.
10. Vào tháng 5 năm 1996, một lỗi phần mềm đã khiến tài khoản ngân hàng của 823 khách hàng của một ngân hàng lớn ở Hoa Kỳ được ghi có 920 triệu đô la Mỹ.
11. Gần đây, lỗi phần mềm đã khiến rất nhiều hệ thống xảy ra vấn đề dữ liệu bị mất cắp như Facebook, thegioididong,...
12. Trong tháng 9/2018, vụ việc Zalo và các dịch vụ khác của VNG cũng gặp sự cố không thể truy cập được.
và dưới đây là...
5 vụ lỗi phần mềm nổi tiếng nhất lịch sử.
Trong lịch sử của thế giới công nghệ có rất nhiều sự cố về phần mềm. Nhưng 5 sự số dưới đây được cho là nổi tiếng nhất.
1. Sự kiện đầu tiên sinh ra Bug
Đó sự kiện xảy ra vào ngày 9/9/1947, một chiếc máy tính Mark II ở trường Đại học Harvard vì lý do nào đó đã không hoạt động.
Bug đầu tiên được tìm thấy
Sau khi kiểm tra, các kỹ sư đã phát hiện ra nguyên nhân - một con bướm đã mắc kẹt bên trong máy tính. Sự cố máy tính được ghi nhận vào nhật ký lúc 3 giờ 45 phút chiều, trong đó có đoạn: “Con bọ (bug) thực tế đầu tiên đã được tìm thấy.”
Ngày nay, thuật ngữ “bug” (lỗi) trong lĩnh vực phát triển phần mềm không còn được hiểu theo nghĩa đen mà thuật ngữ Bug được nói đến một lỗ hổng hoặc lỗi trong một chương trình máy tính là nguyên nhân để chương trình không đưa ra được kết quả như mong muốn hoặc dẫn đến một tai nạn nào đó.
2. Sự kiện Y2K
Các nhà phát triển phần mềm đã không bao giờ nghĩ rằng phần mềm của họ có thể tồn tại qua năm 1999. Nhiều lập trình viên đã cho rằng viết "19" trước biến "năm" là không cần thiết.
Chính vì thế hầu hết biến "năm" chỉ được lưu bằng 2 số, ví dụ: năm 1999 được lưu là 99.
Sự kiện Y2K
Do đó khi sắp bước sang năm 2000, các phần mềm sẽ cập nhật về năm 1900 thay vì năm 2000. Chính vì thế mà nhiều người đã lo lắng rằng tên lửa hạt nhân sẽ được phóng ra, máy bay chở hàng trăm hành khách sẽ rơi...
Nhưng điều đó đã không xảy ra vì chúng ta vẫn ở đây.
Tuy nhiên, đã có hàng tỷ đô la được chi ra để tiến hành nâng cấp các phần mềm và thực tế đã ghi nhận: ở Tây Ban Nha, một trang web về thời tiết đã chuyển sang ngày 1-1-1900 và ở Úc, một số máy bán vé xe buýt đã không hoạt động
3. Vụ tên lửa Dhahran làm chết 28 lính Mỹ
Vào tháng 2/1991, trong cuộc Chiến tranh vùng Vịnh (hay còn được gọi là Chiến tranh vịnh Ba Tư hay là Chiến dịch Bão Táp Sa Mạc là cuộc xung đột giữa Iraq và liên minh gần 30 quốc gia) một tên lửa của Iraq đã đi lọt vào căn cứ Mỹ ở Dhahran làm chết 28 lính Mỹ.
Pin của Pattriot khiến phần mềm phát hiện mục tiêu chạy chậm 0.33 giây sau 100 giờ
Sự việc này sau đó được xác minh là nguyên do tính toán giờ của hệ thống phòng thủ tên lửa bị chậm do không tính toán đến sai số do pin gây ra. Sau mỗi giờ thì đồng hồ lại sai 1 mili giây và sau 100 giờ thì đã sai 0,33 giây.
Với 0,33 giây thì radar có thể phát hiện được tên lửa nhưng hệ thống phòng thủ không kịp khai hỏa. Và hậu quả dấn tới là 28 lính Mỹ thiệt mạng.
4. Sai số hơn 100km do lập trình theo Mét nhưng điều khiển lại dùng đơn vị Feet.
Nhầm lẫn giữa Feet và Mét khiến tàu vũ trụ Mars Climate Orbite lệch quỹ đạo hơn 100 km
Năm 1998, NASA phóng con tàu Mars Climate Orbiter để thăm dò khí hậu sao hỏa. Nhưng nó vĩnh viễn không thực hiện thành công nhiệm vụ của mình vì:
Người điều khiển mặt đất sử dụng đơn vị feet trong khi phần mềm lập trình chỉ sử dụng đơn vị mét. Việc này dẫn tới sai số quỹ đạo hơn 100 km. Dẫn đến việc bay quá gần khí quyển sao hỏa.
Và Mars Climate Orbiter đã biến thành bụi vũ trụ.
5. Thiệt hại 370 triệu USD do lỗi phần mềm chuyển từ 64 bit sang 16 bit.
Tên lửa đẩy Ariane 5 đã nổ tung sau khi phóng 30 giây.
Vào ngày 4/6/1996, chỉ sau 30 giây được phóng lên, tên lửa Ariane 5 đã nổ tung như pháo hoa.
Sự cố này sau đó được mô phỏng lại với một điều kiện tượng nhằm tìm ra nguyên nhâ đã cho thấy phần mềm máy tính đã chuyển dữ liệu sử dụng biến kiểu số động 64-bit sang biến sử dụng số 16-bít để biểu diễn phương nằm ngang.
Những biến này đã sử dụng một kích thước khác trong bộ nhớ là nguyên nhân hàng loạt lỗi ảnh hưởng đến tất cả máy tính trong tên lửa làm tê liệt hệ thống và đã kích hoạt hệ thống tự phá hủy.
Sự cố này đã làm bay màu 370 triệu USD chỉ trong tích tắc.
...
Có thể bạn nghĩ rằng những vụ lớn như thế này thì chỉ có các ông lớn, hi hữu.. còn mình thì bé tý, không ăn nhằm gì. Nhưng bạn đã sai hoặc thực sự bạn chưa làm việc nhiều trong lĩnh vực lập trình phần mềm.
Là một lập trình viên, bạn sẽ biết rằng: "Thằng Tester cực kỳ khó chịu vì lúc nào nó cũng tìm ra lỗi trong code của mình rồi bắt mình sửa. Nhưng trong thâm tâm lại thầm cảm ơn nó vì cũng may mà những lỗi này đã không xảy ra ở lúc Releases sản phẩm."
Tổng kết
Vậy đó, mình nghĩ chỉ cần bạn thấy những nguy cơ và tai nạn tốn kém như vậy thì bạn đã có cho mình câu trả lời "tại sao phải kiểm thử phần mềm" rồi chứ nhỉ?
Trong lập trình, Công việc lập trình là một công việc sáng tạo thì Kiểm thử phần mềm giúp cho thành quả của sự sáng tạo đó đến với mọi người một cách tốt nhất, tối thiểu hóa chi phí bảo trì, hạn chế rủi ro...
=> Tức là tiền về túi sẽ nằm yên trong túi của mình.
>> Nếu bạn muốn trở thành người đóng góp quan trọng cho một phần mềm tốt thì hãy xem ngay khóa học Chuyên viên Kiểm thử phần mềm trong hơn 4 tháng của NIIT - ICT Hà Nội này nhé.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp