25 Feb, 2021
Kiểm thử phần mềm
Có nhiểu cảm nhận sai về kiểm thử phần mềm mà tạo ra nhiều lẫn lộn trong sinh viên.
Nhiều sinh viên nghĩ kiểm thử phần mềm là việc chán ngán vì người kiểm thử ngồi trước máy tính chờ đợi người phát triển đưa cho họ mã để kiểm thử. Nhiều sinh viên tin rằng kiểm thử là “việc tạm thời” với họ để thu được kinh nghiệm trước khi tiến lên việc phát triển. Một số công ti phần mềm thuê người với đào tạo giới hạn để là người kiểm thử vì họ không có đủ kĩ năng để làm việc như người phát triển. Đây là các lí do tại sao phần mềm có nhiều lỗi và thường không thực hiện đúng.
Kiểm thử là qui trình sáng tạo hỗ trợ cho tổng thể qui trình phát triển phần mềm. Điều này chỉ xảy ra khi người kiểm thử làm nỗ lực hướng tới hiểu đóng góp của họ vào qui trình phát triển và cách cải tiến luồng công việc dự án và trao đổi với các thành viên tổ dự án khác. Những người kiểm thử có kinh nghiệm bao giờ cũng cải tiến kĩ năng của họ, điều cho phép họ tiếp cận tới kiểm thử từ cách tiếp cận đa ngành. Họ bao giờ cũng lấy sáng kiến để bịt kín lỗ hổng giữa người phát triển và người dùng. Họ hiểu quan điểm của người dùng bằng việc hiểu môi trường doanh nghiệp rồi trao đổi với người phát triển lí do tại sao lỗi cần được sửa theo cách nào đó. Họ cũng hiểu quan điểm của người phát triển rồi trao đổi với người dùng tại sao những chức năng nào đó phải được ưu tiên theo cách nào đó. Đó là lí do tại sao những người kiểm thử có kinh nghiệm không bao giờ chờ đợi cho tới khi mã được viết xong và bắt đầu kiểm thử. Họ bắt đầu sớm trong dự án ngay trong pha yêu cầu bởi vì họ phải phát triển các trường hợp kiểm thử để làm kiểm nghiệm phần mềm đó đáp ứng yêu cầu của người dùng.
Ngay cả ngày nay, ít sinh viên hiểu qui trình kiểm thử. Họ tin rằng kiểm thử nghĩa là kiểm mã của người phát triển để tìm lỗi mà không hiểu rằng họ phải được tham gia vào toàn thể qui trình phát triển phần mềm. Nhiều người thậm chí không biết vòng đời phát triển phần mềm và tầm quan trọng của chất lượng trong dự án phần mềm. Nhiều sinh viên không nhận biết về mục đích và mục tiêu doanh nghiệp của dự án như một phần của chức năng doanh nghiệp lớn hơn của công ti. Không may, nhiều chương trình đào tạo vẫn hội tụ vào khía cạnh lập trình mà không dạy về qui trình phần mềm và vai trò của người kiểm thử phần mềm trong qui trình phát triển toàn thể. Đó là lí do tại sao có nhiều hiểu lầm giữa những người phát triển và người kiểm thử mà tạo ra xung đột không cần thiết. Nhiều người kiểm thử không hiểu người phát triển, thấy họ không thân thiện, và cảm thấy không thoải mái với họ. Họ thường tránh xa người phát triển mà họ đáng phải làm việc cùng. Họ không biết cách chia sẻ quan điểm của họ với những người phát triển và làm đóng góp quan trọng cho dự án. Cuối cùng nhiều người kiểm thử chấm dứt một cách thụ động bằng việc chỉ kiểm thử mã thay vì tham gia vào toàn thể qui trình phát triển.
Người kiểm thử có kinh nghiệm không hành động thụ động. Họ bắt đầu sớm bằng việc gặp gỡ với người dùng để cho họ có thể hiểu được kiểu kiểm thử mà được mong đợi từ người dùng. Điều này cũng giúp ưu tiên hoá khu vực kiểm thử mà có thể được người dùng kiểm nghiệm. Họ bao giờ cũng khởi đầu các cuộc họp đều đặn điều cho phép họ và những người phát triển trao đổi thông tin. Cả hai bên cũng hiểu loại phản hồi được mong đợi trong các cuộc họp này và cùng nhau phát triển một qui trình được xác định để nhận diện và giải quyết các vấn đề cùng nhau. Bằng việc có qui trình được xác định tốt, họ có thể cải tiến trao đổi và trách nhiệm của từng tổ để đảm bảo chất lượng cao và quan hệ năng suất cho dự án.
Ngày nay, nhiều người phát triển và kiểm thử phần mềm không hiểu tầm quan trọng của việc có qui trình được xác định. Không có qui trình, tương tác sẽ xảy ra ở mức cá nhân và xung đột thường xảy ra. Người kiểm thử đổ lỗi cho người phát triển phạm phải quá nhiều lỗi. Người phát triển phàn nàn rằng người kiểm thử không hiểu tư duy logic của họ. Có qui trình được xác định rõ sẽ khử bỏ loại xung đột này và tránh các vấn đề con người giữa các thành viên tổ dự án. Người kiểm thử không có kinh nghiệm không hiểu nhu cầu duy trì trao đổi tốt với người phát triển. Họ không biết cách tham gia sớm vào trong dự án bằng việc tham dự vào mọi pha phát triển. Nhiều người chỉ đợi cho tới khi mã được viết xong rồi bắt đầu kiểm thử. Lúc đó là quá muộn và đó là lí do tại sao nhiều sản phẩm phần mềm có lỗi. Kĩ năng trao đổi là tiêu chí bản chất trong kiểm thử. Có người có kĩ năng đúng tạo điều kiện cho người kiểm thử duy trì mối quan hệ tốt với người phát triển và cấp quản lí, trong khi vẫn cho phép người kiểm thử hiểu quan điểm của người phát triển và cẩn thận về bản chất của lỗi được trình cho sửa.
Chức năng kiểm thử yêu cầu người kiểm thử phải tỉnh táo và nhận biết về những thay đổi bên trong sản phẩm phần mềm dưới kiểm thử vào mọi lúc và có khả năng ra quyết định đúng và thời điểm được yêu cầu. Người kiểm thử bao giờ cũng phải tìm phương tiện để cập nhật tri thức và kĩ năng của mình vì điều đó giúp cải tiến hiểu biết của họ về công việc của người phát triển. Bằng đào tạo liên tục những người kiểm thử sẽ phát triển kĩ năng được cần của họ để hiểu các điểm tinh tế hơn của qui trình kiểm thử phần mềm và cho phép họ đưa ra phán đoán tốt về khu vực rủi ro cao nên được tập trung cho kiểm thử trong thời gian giới hạn đã cho.
Kiểm thử là chức năng rất quan trọng mà mọi công ti phải có để đảm bảo về chất lượng của sản phẩm của mình. Nó là một nghề xứng đáng được nhiều kính trọng. Kiểm thử là nói rõ về tiến bộ và bao giờ cũng phải được tuân theo bằng các trường hợp kiểm thử chính xác để đảm bảo chất lượng của sản phẩm cuối. Hội tụ vào khách hàng là tính năng then chốt trong phát triển sản phẩm phần mềm chất lượng và điều quan trọng là mọi thành viên tổ dự án đều hiểu nghĩa của chất lượng theo khía cạnh này. Thành công của nỗ lực kiểm thử tuỳ thuộc vào sản phẩm phần mềm thành công. Ngày nay, phần mềm đang được thực hiện trong môi trường phát triển nhanh, điều mấu chốt hơn là có những người phát triển có kinh nghiệm để ngăn ngừa những rủi ro của việc chuyển giao sản phẩm phần mềm được kiểm thử kém.
Mặc dầu những người kiểm thử tới với kĩ năng, kỉ luật, tính sáng tạo và kinh nghiệm đa dạng, chất lượng của sản phẩm phần mềm tuỳ thuộc vào giá trị của những cá nhân này trong việc đóng góp hướng tới nỗ lực kiểm thử và thành công chung của qui trình kiểm thử. Điều quan trọng là những người kiểm thử được đào tạo cần thiết trong việc hiểu phần của họ trong nỗ lực kiểm thử. “Thực hành kém” của việc thuê người với kĩ năng giới hạn, những người có vài tháng đào tạo, những người sẵn lòng làm việc ít nên bị khử bỏ. Có nhiều khảo cứu kết luận rằng: “Tiết kiệm tiền bằng việc thuê người không có kĩ năng, trả lương thấp làm người kiểm thử bao giờ cũng tốn kém cho công ti nhiều hơn do vấn đề chất lượng kém.” Kiểm thử là nghề chuyên nghiệp quan trọng. Người kiểm thử đóng vai trò mấu chốt trong phát triển phần mềm và họ xứng đáng được thừa nhận nhiều hơn nữa về đóng góp của họ.
—-English version—-
Software testing
There are many wrong perceptions about software testing that creates a lot of confusions among students. Many students think software testing is a boring job as testers sit in front of a computer waiting for developers gives them their code to test. Many students believe that testing is a “temporary job” for them to gain experiences before move up to developing job. Some software companies hire people with limited training to be testers as they do not have enough skills to work as developers. These are reasons why software have many defects and often fail to perform accordingly.
Testing is a creative process that supports the overall software development process. This only happens when testers make an effort towards understanding their contributions towards the development process and how to improve project workflow and communication with the other project members. Experienced testers always improve their skills that allow them to approach testing from a multi-disciplined approach. They always take the initiative to seal the gap between the developers and users. They understands the point of view of the users by understand the business environment then communicates to developers the reason why a bug needs to be fixed in certain way. They also understand the point of view of the developers then communicate to users why certain functions must be prioritized in certain way. That is why experienced testers never wait until the code is done and start testing. They start early in the project during requirements phase because they must develop test cases to validate that software meets users’ requirements.
Even today, few students understand the testing process. They believe that testing means check the code of developers for bugs without understand that they should be involved in the entire software development process. Many do not even know the software development lifecycle and the importance of quality in the software project. Many students are not aware of the business goals and objectives of the project as part of the larger business function of the company. Unfortunately, many training programs are still focusing on the programming aspect without teaching about software process and the roles of software testers in the overall development process. That is why there are many misunderstandings between developers and testers that create unnecessary conflicts. Many testers do not understand the developers, finding them unfriendly, and feeling uncomfortable with them. They often stay away from developers that they should work with. They do not know how to share their view with developers and make important contributions to the project. Eventually many testers end up passively by only testing the code rather than involve in the entire development process.
Experienced testers do not act passively. They start early by meet with users so that they can understand the type of testing which is expected of them. This also helps prioritize the testing areas that could be validated by users. They always initiate regular meetings that allow them and developers to exchange information. Both parties also understand the kind of feedback expected in these meetings and together develop a defined process to identify and solve problems together. By having the well defined process, they can improve the communication and the responsibility of each team to ensure a high quality and productive relationship for the project.
Today, many software developers and testers do not understand the important of having a defined process. Without a process, interaction will happen at the individual level and conflicts often happen. Testers blame developers of having too many bugs. Developers complain that testers do not understand their logical thinking. Having a well defined process will eliminate this kind of conflict and avoid personal problems between project team members. Inexperienced testers do not understand the need to maintain good communication with developers. They do not know how to involve early in the project by participate in all development phases. Many just wait until the code is done then start testing. It is too late and that is why many software products have defects. Communication skills are essential criteria in testing. Having the right people skills enables the tester to maintain a good relationship with developers and management, while allowing testers to understand developers’ viewpoints and being careful about the nature of bugs filed for fixing.
The testing function requires the tester to be alert and aware of changes within the software product under test at all times and to be capable of making the right decisions at the required time. Testers should always find the means of updating their knowledge and skills as it helps to improve their understanding of the work of developers. By continuous training testers will develop the needed skills to understand the finer points of the software testing process and allow them to make good judgment about which high-risk areas should be focused for testing given a limited time.
Testing is an very important function that every company must have to ensure the quality of its product. It is a profession that deserves a lot of respect. Testing is a progressive state and should always be followed through with accurate test cases to ensure the quality of the final product. Customer focus is a key feature in the development of a quality software product and it is important that all project team members understand the meaning of quality in this respect. The success of the testing effort depends in part on the careful evaluation of customer needs and feedback into the development of a successful software product. Today, software are being done in a rapid development environment, it is more critical to have experienced testers to prevent the risks of delivering a poorly tested software product.
Although testers come in varying skills, discipline, creativity and experience. The quality of the software product depends on the worth of these individuals in contributing towards the testing effort and the general success of the testing process. It is important that testers be given the required training in understanding their part in the testing effort. The “bad practice” of hiring people with limited skills, people with few months of trainings, people that is willing to work for less should be eliminated. There are many studies concluded that: “To save money by hiring low paying, unskilled people as testers will always cost the company much more due to poor quality issues.” Testing is an important professional position. Testers play a critical role in the software development and they deserve a much better recognition to their contribution.