Difference Between Review And Inspection In Software Testing
Static testing is to improve the quality of software products by finding errors in early stages of the development cycle. This testing is also called as Non-execution technique or verification testing. Hence Dynamic testing is to confirm that the software product works in conformance with the business requirements. It is review of a software work product by colleagues of the producer of the product for the purpose of identifying defects and improvements. Inspection: It is a type of peer review that relies on visual examination of documents to detect defects, e.g. Violations of development standards and non-conformance to higher level documentation. The most formal review technique and therefore always based on a documented procedure.
What is Software Inspection?Inspection is necessary to review a product. In software development, software or code inspection refers to peer review of any product by experts who try to unravel defects, if any, present in the system using a well defined method. In an inspection process, the objective is to identify defects, and the inspected parts are generally and.The process of inspection begins like this- a team gathers to plan about the inspection process. A moderator is chosen in the team to carry out the meeting. There is an inspector who approves the product, so when the team meeting is done, they carry out a detailed study about the product and noting the defects as well. So the software inspection is a walk through which is conducted in a well planned manner.
Inspection Types:. Code Review -The can be described as a process of examination/inspection in which a piece or block of code is treated as a defect. The code is a defect if it does not deliver the right functionality, or may be sometimes the code could be improved in terms of its performance. Peer Review -Peer means group, so in this kind of inspection a group of people who have requisite knowledge and skills, review the product. It therefore ensures a structured review process, product check-list and reports.Benefits of Inspection:.
Developing new perspective - The process of finding defects can be really useful for those who haven't indulged in such an activity before. They shall develop a fair idea about such aspects and it's rectification. Knowledge Sharing - A person who has fair share of knowledge can spread it further regarding design specifications and specific software artefacts and also defect detection methods. Early fault finding - Early detection definitely proves to be an advantage always. In this case also prior detection helps in cost reduction.
In a code review, the source code is read by a human. This is often someone other than the original developer, but that's not a requirement. For example, the Personal Software Process enables personal code reviews guided by checklists of specific problems to identify.
Alternatively, there are that involve other people - pair programming, over-the-shoulder checks, and formal inspections.Regardless of the technique used, there are a number of reasons why a code review would be performed, although some techiques lend themselves better to specific purposes. For example, a large amount of code written by a new developer could be reviewed to ensure that they are following the team's conventions and are understanding the design and implementation goals of the team. Code reviews also allow for checking for logic errors and security problems. Tests can also be reviewed to ensure that the test cases correspond to requirements and that they are providing appropriate coverage.Static analysis of code is performed by various tools scanning the source files, and in some cases, the binary files, to identify potential problems, ranging from indexing errors to unneeded assignments to security holes. These tools typically produce reports that indicate the location and severity of possible issues.Often, static analysis and code reviews are used together to provide coverage. In my experiences, individual developers run static analysis over their own code prior to a code review.
After reviewing the results of the static analysis, they correct any issues that might cause problems, then submit their code for review. By finding and correcting problems that are easily identified automatically, the human code reviewers can focus their efforts on a different subset of problems. One thing I haven't yet come across any static code analysis tool which will catch is logic mistakes.
Difference Between Review And Inspection In Software Testing System
For example, the code may be absolutely beautiful and perfect from every technical angle, but if a method TransferMoney calls targetAccount.withdraw rather than targetAccount.deposit, that's a pretty glaring error which any half-way thorough code review is going to catch because the human doing the code review is likely better at understanding the intended semantics of the TransferMoney method. Similar mistakes can be made in ways that are far from as obvious, particularly to the developer writing the code.Static analysis can only figure out if the code is correct technically, it cannot do much about the business logic implemented by that code.
I'm in agreement with the other answers as to static analysis and code reviews. I'd like to add a couple points that I feel are important to both.For static analysis (at least for c#) there are some really nice tools (FXCop) that are able to identify implementation issue such as the disposable pattern. It's also a good tool to identify some code smells, such as coupling or cyclomatic complexity. I'm not suggesting they are perfect, but I've found a number of these useful for identifying issues.As for code reviews, the biggest thing code reviews are used for where I work is to break down knowledge silos and teach others what is it you have written. Usually a great conversation comes from the review about how code is written, challenging others with different view points, learning new conventions, etc.As you can see, they are very different tasks both of which have use to most developers.
Computers are also really good at finding things that violate very specific rules where humans are better at the opposite.I hope you are asking so that you can utilize both, and not to choose one over the other.