AThe goal / purpose of testing is to demonstrate that the program works.
BThe purpose of testing is to demonstrate that the program is defect free.
CThe purpose of testing is to demonstrate that the program does what it is supposed to do
DTesting is executing Software for the purpose of finding defects.
Lời giải
Câu hỏi này yêu cầu bạn chọn định nghĩa tốt nhất cho khái niệm Testing. Có bốn lựa chọn khác nhau. Lựa chọn đầu tiên cho rằng mục tiêu của testing là chứng minh chương trình hoạt động. Lựa chọn thứ hai cho rằng mục tiêu của testing là chứng minh chương trình không có lỗi. Lựa chọn thứ ba cho rằng mục tiêu của testing là chứng minh chương trình thực hiện đúng chức năng. Lựa chọn thứ tư cho rằng testing là việc thực thi phần mềm để tìm kiếm lỗi. Trong bốn lựa chọn này, lựa chọn thứ tư là định nghĩa tốt nhất cho khái niệm Testing vì nó tập trung vào việc tìm kiếm lỗi trong phần mềm.
Các lỗi TF (Faults) được người dùng phát hiện thường là do các nguyên nhân sau:
Trước hết, nguyên nhân chính là do phần mềm và quá trình kiểm thử không tốt. Điều này có thể dẫn đến việc lỗi không được phát hiện trong quá trình kiểm thử, từ đó gây ra lỗi khi phần mềm được triển khai.
Ngoài ra, một số lỗi TF còn do sự kết hợp của nhiều yếu tố, bao gồm cả yếu tố may mắn. Tuy nhiên, trong thực tế, yếu tố may mắn không phải là nguyên nhân chính gây ra lỗi TF.
Vì vậy, để giảm thiểu số lượng lỗi TF, chúng ta cần phải tập trung vào việc phát triển và kiểm thử phần mềm một cách tốt hơn.
Khi một phần mềm đã được cấp giấy phép, bạn sẽ thực hiện các kiểm tra sau. Trước hết, bạn cần xác định giấy phép đã cấp cho phần mềm có phải là giấy phép mở (Open-source) hay không. Nếu là giấy phép mở, bạn sẽ kiểm tra xem phần mềm có tuân thủ các điều khoản của giấy phép hay không. Điều này bao gồm việc kiểm tra xem phần mềm có được sử dụng miễn phí hay không, có được chia sẻ mã nguồn hay không, và có được sử dụng cho mục đích thương mại hay không. Ngoài ra, bạn cũng cần kiểm tra xem phần mềm có chứa bất kỳ mã độc (malware) nào hay không. Nếu phần mềm không phải là giấy phép mở, bạn sẽ kiểm tra xem phần mềm có được sử dụng hợp pháp hay không, và có được sử dụng cho mục đích thương mại hay không. Cuối cùng, bạn sẽ kiểm tra xem phần mềm có tuân thủ các quy định về bảo mật và bảo vệ thông tin cá nhân hay không.
Bắt đầu thiết kế thử nghiệm trong giai đoạn định nghĩa yêu cầu là rất quan trọng để đạt được các mục tiêu thử nghiệm sau. Khi thiết kế thử nghiệm được bắt đầu từ giai đoạn định nghĩa yêu cầu, nó cho phép các nhà phát triển hiểu rõ hơn về yêu cầu của hệ thống và xác định được các trường hợp thử nghiệm quan trọng. Điều này giúp tăng cường sự tự tin vào hệ thống và đảm bảo rằng hệ thống hoạt động đúng như mong đợi. Ngoài ra, thiết kế thử nghiệm trong giai đoạn định nghĩa yêu cầu cũng giúp giảm thiểu các lỗi trong hệ thống và đảm bảo rằng hệ thống được hoàn thiện một cách đầy đủ.
Đáp án đúng: "Open, Assigned, Fixed, Closed". Vòng đời lỗi (bug life cycle, defect life cycle) mô tả các trạng thái mà một báo cáo lỗi đi qua: người kiểm thử phát hiện và ghi nhận lỗi nên lỗi ở trạng thái Open (mở, có nơi gọi New), trưởng nhóm duyệt rồi giao cho lập trình viên nên chuyển sang Assigned (đã giao), lập trình viên sửa xong thì đánh dấu Fixed (đã sửa), người kiểm thử chạy lại ca kiểm thử (kiểm thử xác nhận, retest) thấy lỗi không còn thì chuyển thành Closed (đóng); nếu lỗi vẫn còn thì mở lại (Reopened). "Open, Fixed, Assigned, Closed" sai vì lỗi chưa thể được sửa khi chưa giao cho ai chịu trách nhiệm. "Assigned, Open, Closed, Fixed" sai hai chỗ: không thể giao một lỗi chưa được ghi nhận, và không thể đóng lỗi trước khi sửa. "Assigned, Open, Fixed, Closed" tuy đặt Fixed trước Closed đúng thứ tự nhưng vẫn giao việc trước khi lỗi được mở.
BWill help ensure unchanged areas of the software have not been affected
CWill help ensure changed areas of the software have not been affected
DCan only be run during user acceptance testing
Lời giải
Một thử nghiệm hồi quy (regression test) là một loại thử nghiệm được sử dụng để xác minh rằng các phần của phần mềm chưa được thay đổi vẫn hoạt động bình thường sau khi thực hiện các thay đổi. Mục đích chính của thử nghiệm hồi quy là đảm bảo rằng các phần của phần mềm chưa được thay đổi không bị ảnh hưởng bởi các thay đổi mới. Điều này giúp đảm bảo rằng phần mềm vẫn hoạt động đúng và không có bất kỳ lỗi nào. Thử nghiệm hồi quy thường được thực hiện tự động và được chạy thường xuyên để đảm bảo rằng phần mềm luôn hoạt động tốt.
Công cụ quản lý yêu cầu là công cụ lưu trữ các tuyên bố về yêu cầu, kiểm tra tính nhất quán và cho phép ưu tiên các yêu cầu và cho phép các thử nghiệm riêng lẻ có thể theo dõi được đến các yêu cầu, chức năng và tính năng. Công cụ này giúp đảm bảo rằng các yêu cầu được thống nhất và dễ dàng theo dõi trong suốt quá trình phát triển sản phẩm. Nó cũng giúp xác định và ưu tiên các yêu cầu quan trọng nhất, từ đó giúp tối ưu hóa quá trình phát triển và giảm thiểu rủi ro.
Đáp án đúng: "During test planning.". ISTQB nêu rằng thủ tục và hạ tầng quản lý cấu hình (configuration management) phải được chọn, ghi lại và triển khai ngay khi lập kế hoạch kiểm thử, để mọi testware và phiên bản phần mềm được định danh, kiểm soát phiên bản và truy vết được từ đầu. "During test analysis." đã muộn: lúc này cơ sở kiểm thử và điều kiện kiểm thử đã được tạo ra, chúng cần được quản lý phiên bản từ trước. "During test execution." quá muộn: chạy kiểm thử mà không biết đang chạy trên phiên bản nào, với ca kiểm thử phiên bản nào thì kết quả không tái hiện được. "When evaluating exit criteria" là gần cuối quy trình, khi đó quản lý cấu hình không còn phát huy tác dụng phòng ngừa.
CThe expected outcome is specified before execution.
Ditis unlikely to delay progress.
Lời giải
Để một trường hợp kiểm thử hiệu quả, điều quan trọng nhất là nó phải được thiết kế để phát hiện lỗi nếu có. Điều này có nghĩa là trường hợp kiểm thử phải được tạo ra để kiểm tra xem sản phẩm hoặc phần mềm có hoạt động đúng như mong đợi hay không. Nếu trường hợp kiểm thử không được thiết kế để phát hiện lỗi, thì nó sẽ không thể giúp chúng ta xác định được vấn đề và sửa chữa chúng. Vì vậy, việc thiết kế trường hợp kiểm thử để phát hiện lỗi là bước quan trọng đầu tiên trong quá trình kiểm thử.
ATesters spend more energy early in the product trying to find bugs than preparing to do the rest of the project's work more efficiently
BManagers might not realize that the testing effort is ineffective, late in the project, because they expect a low rate of bug finding, so the low rate achieved doesn't alarm them.
CIt can increase the end-of-project pressure on testers to not find bugs, or to not report bugs.
DAll of the others
Lời giải
Đáp án đúng: "All of the others". Mô hình tăng trưởng độ tin cậy thống kê (statistical reliability model) dự báo tốc độ tìm lỗi theo thời gian, ví dụ kỳ vọng nhiều lỗi lúc đầu rồi giảm dần, và nếu quản lý lịch dự án bám vào đường cong đó thì phát sinh nhiều rủi ro; cả ba phát biểu đều là rủi ro thật nên phương án gộp đúng. Phát biểu "Testers spend more energy early in the product trying to find bugs" đúng: để khớp đường cong dự báo, tester dồn sức tìm lỗi sớm thay vì chuẩn bị làm phần còn lại của dự án hiệu quả hơn, nhưng nó chỉ là một rủi ro nên chọn riêng nó là thiếu. Phát biểu "Managers might not realize that the testing effort is ineffective" đúng: cuối dự án quản lý vốn chờ tỉ lệ tìm lỗi thấp, nên tỉ lệ thấp do kiểm thử kém hiệu quả không làm họ cảnh giác; chọn riêng nó cũng thiếu. Phát biểu "increase the end-of-project pressure on testers to not find bugs" đúng: khi lịch phụ thuộc vào việc đường cong đi xuống, tester bị áp lực không tìm hoặc không báo lỗi; chọn riêng nó cũng bỏ sót hai rủi ro kia.
Phương pháp kiểm tra được sử dụng để xác minh rằng hệ thống có thể hoạt động đúng khi giới hạn nội bộ của chương trình hoặc hệ thống đã được vượt quá là Stress Testing. Stress Testing là một loại thử nghiệm được thiết kế để đánh giá khả năng chịu đựng của hệ thống khi nó được đặt dưới áp lực cao. Điều này có thể bao gồm việc gửi một lượng lớn dữ liệu vào hệ thống, tạo ra một lượng lớn yêu cầu đồng thời hoặc thử nghiệm hệ thống với các dữ liệu không bình thường. Mục tiêu của Stress Testing là xác minh rằng hệ thống có thể hoạt động đúng ngay cả khi nó được đặt dưới áp lực cao và có thể xử lý được các yêu cầu mà không bị lỗi hoặc gián đoạn.
Maintenance releases và các trung tâm hỗ trợ kỹ thuật là những ví dụ về chi phí chất lượng nào? Chi phí chất lượng là những chi phí mà doanh nghiệp bỏ ra để đảm bảo chất lượng sản phẩm hoặc dịch vụ của mình. Trong đó, chi phí ngăn ngừa (Prevention) là những chi phí mà doanh nghiệp bỏ ra để ngăn ngừa các vấn đề chất lượng xảy ra. Maintenance releases và các trung tâm hỗ trợ kỹ thuật là những ví dụ về chi phí ngăn ngừa vì chúng giúp doanh nghiệp sửa lỗi và cải thiện chất lượng sản phẩm hoặc dịch vụ của mình. Điều này giúp doanh nghiệp tránh được các vấn đề chất lượng và giảm thiểu chi phí sửa lỗi sau này.
SSS ae là một phiên bản rất sớm được thiết kế cho phân phối hạn chế đến một số khách hàng quan trọng và cho marketing để mục đích trình diễn. Đây là giai đoạn đầu tiên trong quá trình phát triển phần mềm, khi mà sản phẩm vẫn còn nhiều lỗi và chưa được hoàn thiện. Các phiên bản này thường được sử dụng để thu thập phản hồi từ khách hàng và để thử nghiệm các tính năng mới. Trong trường hợp này, SSS ae được mô tả là một phiên bản được thiết kế cho phân phối hạn chế, cho thấy nó không phải là một phiên bản hoàn chỉnh và đã được thử nghiệm kỹ lưỡng.
Để đạt được 100% quyết định trong việc kiểm thử, chúng ta cần xem xét các quyết định trong đoạn mã đã cho. Đoạn mã này có thể được viết bằng ngôn ngữ lập trình nào đó, nhưng chúng ta sẽ giả định nó là Java. Đoạn mã có thể như sau:
Lời giải
if(x >5){
System.out.println("x lớn hơn 5");} else {
System.out.println("x nhỏ hơn hoặc bằng 5");}
Trong đoạn mã này, có hai quyết định: x lớn hơn 5 và x nhỏ hơn hoặc bằng 5. Để đạt được 100% quyết định, chúng ta cần có ít nhất hai test case: một test case để x lớn hơn 5 và một test case để x nhỏ hơn hoặc bằng 5. Tuy nhiên, có thể có một số trường hợp khác, chẳng hạn như x bằng 5, mà chúng ta cũng cần phải xem xét. Vì vậy, tổng số test case cần thiết để đạt được 100% quyết định là 3.
Nếu một thí sinh được cho một bài kiểm tra 40 câu hỏi, cần đạt 25 điểm để đạt yêu cầu (61%) và cần đạt 80% để đạt điểm danh dự. Để tìm lớp tương đương, chúng ta cần xác định các điểm số mà thí sinh đạt được để đạt được điểm danh dự và điểm yêu cầu. Lớp tương đương là tập hợp các điểm số mà thí sinh đạt được để đạt được điểm danh dự hoặc điểm yêu cầu. Trong trường hợp này, các điểm số 23, 24 và 25 là lớp tương đương vì thí sinh đạt được 61% điểm số trong cả ba trường hợp này.
Đáp án đúng: "Breadth Test and Depth Test". Kiểm thử bảo trì (maintenance testing) diễn ra khi hệ thống đang vận hành bị sửa đổi, nâng cấp, chuyển môi trường hoặc gỡ bỏ. Cách tiếp cận của nó gồm hai chiều: kiểm thử theo chiều sâu (depth test) để kiểm kỹ chính phần vừa thay đổi, và kiểm thử theo chiều rộng (breadth test) để rà hồi quy trên các phần khác của hệ thống xem thay đổi có gây ảnh hưởng ngoài ý muốn hay không, phạm vi được quyết định qua phân tích tác động (impact analysis). "Re-testing" chỉ là việc chạy lại ca kiểm thử đã thất bại sau khi lỗi được sửa, là một hoạt động nằm bên trong chứ không phải phương pháp tổng thể. "Confirmation Testing" là tên gọi khác của re-testing, nên cũng chỉ là một phần của chiều sâu. "Sanity Testing" là phép kiểm nhanh xem bản dựng có đủ ổn định để kiểm tiếp hay không, không phải phương pháp riêng của kiểm thử bảo trì.
Strategy tích hợp là một phần quan trọng trong quản lý dự án. Có nhiều phương pháp tích hợp khác nhau, bao gồm cả Design based, Big-bang, Bottom-up và Top-down. Tuy nhiên, Design based không phải là một phương pháp tích hợp. Thay vào đó, nó là một phương pháp thiết kế, được sử dụng để tạo ra một bản thiết kế chi tiết cho dự án trước khi bắt đầu triển khai. Big-bang, Bottom-up và Top-down là các phương pháp tích hợp khác nhau, mỗi phương pháp đều có ưu và nhược điểm riêng. Big-bang là một phương pháp tích hợp toàn diện, trong đó tất cả các phần của dự án được tích hợp cùng một lúc. Bottom-up là một phương pháp tích hợp từ dưới lên, trong đó các phần nhỏ của dự án được tích hợp trước và sau đó được kết hợp lại. Top-down là một phương pháp tích hợp từ trên xuống, trong đó các phần lớn của dự án được tích hợp trước và sau đó được chia nhỏ hơn.
Đáp án đúng: "Test data.". ISTQB nói lượng kiểm thử cần làm (how much testing is enough) phụ thuộc vào mức độ rủi ro, gồm rủi ro kỹ thuật, an toàn và kinh doanh, cùng các ràng buộc của dự án như thời gian, ngân sách và yêu cầu hợp đồng, pháp lý. Dữ liệu kiểm thử chỉ là đầu vào dùng để chạy các ca kiểm thử đã quyết định làm, nó được chuẩn bị theo khối lượng kiểm thử chứ không quyết định khối lượng đó. "Risks involved" là yếu tố quyết định quan trọng nhất: chỗ rủi ro cao phải kiểm thử kỹ hơn. "Contractual requirements" quyết định lượng kiểm thử vì hợp đồng có thể ấn định mức độ phủ hay loại kiểm thử bắt buộc. "Legal requirements" cũng vậy: các quy định pháp lý, ví dụ trong ngành y tế, hàng không, buộc phải đạt mức kiểm thử nhất định.
BFirm about insisting that a bug is not a 'feature' if it should be fixed
CDiplomatic, sensitive to the way they may react to criticism
DAll of the others
Lời giải
Khi báo cáo lỗi phát hiện cho các nhà phát triển, các kiểm thử viên nên thể hiện sự tôn trọng và chuyên nghiệp. Điều này có nghĩa là họ nên trình bày các lỗi một cách rõ ràng, cụ thể và hữu ích. Họ nên tránh sử dụng ngôn ngữ tiêu cực hoặc gây phẫn nộ, mà thay vào đó, họ nên tập trung vào việc giải quyết vấn đề. Điều này sẽ giúp các nhà phát triển hiểu rõ hơn về lỗi và có thể giải quyết nó một cách hiệu quả hơn. Ngoài ra, các kiểm thử viên cũng nên tránh việc tranh cãi hoặc gây mâu thuẫn với các nhà phát triển, vì điều này có thể gây ra sự bất đồng và làm chậm quá trình phát triển.