
Computer Science
Computer science is the theory and academic study of 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.
While testing closely follows science, software testing isn’t computer science, as it’s not about research into new applications for computers and algorithms. However some knowledge of computer science is important for software testers when it comes to understanding how computers work and the challenges of computer programming when it comes to identifying and reporting 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 this as a bug against any software program. Instead this is a known limitation of floating point operations in binary computing. A developer would rightly dismiss this bug against and software application that it’s reported against and rightly dismiss the tester as ignorant and irrelevant.
However testers can look for problems caused by rounding errors in floating point numbers. For example, incorrect or missing code functions to handle the rounding errors could pass this onto 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 projects to design, build, test, document and maintain real-world applications to help people solve problems, achieve a goal or complete a task. Software engineering can also include research into new software engineering principles and methods, such as agile, DevOps and continuous quality to achieve this, so therefore has strong foundations in project management.
Software testing isn’t software engineering in itself, but forms a critical part of all engineering disciplines including software. Rather software engineering covers all areas of software projects with software engineers having knowledge of development, testing, documenting, operations/support and cross-functional management of the entire process. All software engineers are testers too, but not all software testers (or developers, operations, tech support, managers etc) are engineers.
Development
Testing isn’t a development activity either, however testing may be considered part of software development (similar to engineering) 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 cross-functional software engineering project.
For definitions of the different activities with software engineering or project teams, see roles & activities.
Citations
- Kaner, C., 2010. BBST Foundations 4A: Programming Fundamentals & Coverage. [online]. BBST courses. Available at: Link t.i. 00:18