论文标题

科学软件项目的敏捷测试驱动开发的实用指南

A practical guide towards agile test-driven development for scientific software projects

论文作者

Teschner, Tom-Robin

论文摘要

在过去的几年中,软件测试受到了很多关注,并且至关重要,以至于敏捷软件开发实践将软件测试置于其核心。敏捷软件开发成功地应用于大规模的工业软件开发中,但由于其颗粒状责任,并分配给了开发团队的各个成员,这些实践可能不适用于科学代码开发,尤其是在学术环境中,在学术环境中,该代码库是由单身人士开发,维持和使用的。即使是通过外部赠款资助的协作科学软件开发,最终用户通常仍然是开发团队的一部分。这与许多行业中的软件是如何开发的,在许多行业中,开发团队和最终用户是两个独立的实体。但是,有许多可以用于科学软件项目的良好代码开发实践。具体而言,本文的目的是采用敏捷软件开发的核心,并将其定制为科学和学术,单用户代码开发。在这项研究中,基于介子构建系统开发并提供了一个C ++启动项目,该系统为软件测试提供了本机支持。它用于展示如何开发许多科学和学术应用中发现的简单线性代数应用程序,以及如何通过Meson Build System来管理简单的单元,集成和系统测试。通过这种方式,我们能够最大程度地减少软件缺陷,并降低解释错误软件产生的错误数据的风险,这可能会导致得出错误的结论。每一层测试都会提供另外一层保护层,我们将探讨如何使用最小开销来合并这些保护,以生成无漏洞的软件。

Software testing has received much attention over the last years and has reached such critical importance that agile software development practices put software testing at its core. Agile software development is successfully applied in large-scale industrial software developments but due to its granular responsibilities with roles assigned to various members of the development team, these practices may not be applicable to scientific code development, especially in an academic environment, where it is not uncommon that the codebase is developed, maintained and used by a single person. Even for collaborative scientific software development, financed through external grants, the end-users are typically still part of the development team. This is in contrast to how software is developed in many industries, where the development team and end-users are two separate entities. There are, however, many good code development practices that can be adopted for scientific software projects. Specifically, the intention of this article is to take the centrepiece of agile software development and tailor it to scientific and academic, single-user code development. In this study, a c++ starter project is developed and made available, based on the meson build system, which provides native support for software testing. It is used to show how a simple linear algebra application, found in many scientific and academic applications, can be developed and how simple unit, integration and system tests can be created that are managed through the meson build system. In this way, we are able to minimise software defects and reduce the risk to interpret incorrect data generated by erroneous software that may result in the wrong conclusions to be drawn. Each layer of testing presents one additional layer of protection and we will explore how these may be incorporated with minimum overhead to produce bug-free software.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源