Computer Science & Software Engineering

circuit board with microprocessors
Photo by Umberto on Unsplash

 

There are no consensus on what computer science or software engineering are, but below is a small, generalised introduction and how software testing compares.

 

Computer Science

Computer science is focused on the theory behind computing patterns, algorithms, models and processes. Research into computer science involves looking at new problems that can be solved with computers and algorithms, and therefore has strong foundations in applied mathematics.

Software testing isn’t computer science, as it’s not problem solving with algorithms. However knowledge of computer science is important for software testers when it comes to understanding how computers work and the challenges of programming. This knowledge helps when finding bugs but also when not to report bugs (Kaner, 2010).

 

Example

JavaScript uses floating point numbers so the following calculation would yield the following result:

0.1 + 0.2
0.30000000000000004

From a mathematics perspective this is incorrect, but it would also be incorrect for the tester to report a bug. Instead this is a known limitation of binary computing which anyone with basic computer science knowledge would understand. A developer would rightly dismiss this bug against any of their code and would rightly dismiss the tester as ignorant and irrelevant. There’s nothing the developer can do about it and it may be more than good enough for the current purpose.

However testers can look for problems caused by floating point numbers. For example, incorrect or missing code functions to handle the rounding errors may cause problems for end users. These may be hidden deep in the system and may not show themselves with simple checks, but testers armed with computer science knowledge can uncover them.

 

Software Engineering

Software engineering applies engineering principles to software development to build real-world applications to product and project quality. Software engineering can also include research into new software engineering principles and methods, such as agile, DevOps and continuous quality to achieve these goals, so therefore has strong foundations in management.

Software testing isn’t software engineering either, as it’s not about designing, building and maintaining software applications or the management of this process. However software testing is an important part of software engineering in the same way that all engineering disciplines include testing.

 

Development

Similarly, testing isn’t a development activity either, however testing may be considered part of development and testers may work on development teams, but generally people with the job title “tester” aren’t considered “developers”.

“Develop” is a verb which means to start, grow or build. In the case of software, this is the starting and maturing of ideas and programming code to solve a problem for someone.

Testing isn’t about developing a solution, it’s about investigating it for problems. So while some may consider testing to be a development activity, this website’s namespace uses a much narrower definition of development and instead places the testing activity alongside development within a software engineering project.

For definitions of the different activities with software engineering or project teams, see roles & activities.

 

References

  • Kaner, C., 2010. BBST Foundations 4A: Programming Fundamentals & Coverage. [online]. BBST courses. Available at: Link t.i. 00:18

Leave a Reply

Your email address will not be published.

You may also like these