章节 2.1 可靠的软件 – 灵活,可靠的软件 使用设计模式和敏捷开发

可靠性和测试

学习目标

学习使软件变得可靠,对于想成为具有竞争力和成功的开发人员是非常重要的。本书大部分将致力于使软件不会失败的开发习惯,技能和实践。本章节的目标是介绍一些关于可靠性软件的一般概念和定义以及用测试作为特定技术实现,来为前面提到的实践和技术打下基础。

这一章节 特别地

  • 给你介绍可靠性的思想
  • 给你介绍在整个本书中用到的测试术语和定义:什么是测试,测试用例,故障等
  • 介绍一个实实在在的Java工具,JUnit,对可管理和执行自动化测试有很大的帮助

2.1 可靠的软件

在计算的早期,程序一般使用者就是编程人员,比方说,一个物理学家可能写个程序来帮助于数值分析来自实验室的数据。如果程序崩溃或运行失常, 那么破坏仅局限于修改程序以改正错误。在近20年,计算机的大量采用,显著地改变了对可靠的程序的需求。现在一般计算机用户不是计算机编程人员且不会接受软件不能工作。现在用户期望软件能正常工作,可靠性是在生产软件时质量方面一直奋斗的目标。可靠性可以被定义为多种方式但我将用ISO9126(ISO/IEC 国际标准2001)标准。

定义:可靠性(ISO 9126)

软件产品在一定条件下能维持一定水平的性能的能力

关于这个定义的核心方面是…维持一定水平的性能,在我们的环境“性能”就是执行必须的功能且不失败的能力:让用户使用软件产品进行工作。非正式化情况下开发者称之为“系统可工作”。

可靠性是使软件有用必须具备的质量之一。另一个质量可能是,它必须执行得很快且高效以至于给用户的反馈不会花太长时间。它必须可用,因此用户可以高效地了解和使用软件,等。下一个章节将“可维护性”作为一个重要的质量来讨论,然而可靠性是质量核心,因为如果软件不可靠那么其它大量的质量将会变得不相干。比如,如果答案是错的,那么即使系统能很快的反馈也将没什么用处。

可靠性是对于软件来说期望很高的一项质量,且研究组织和行业协会已产生大量的技术关注于达成可靠性。下面是一些例子:

  • 编程语言构建。现代编程语言包括了许多语言构建和技术来防止一些在早期机器代码和编程语言很常见的微妙的缺陷,打个比方,最初的BASIC语言没有本地变量,因此你可能会毁坏一个程序的行为,如果你意外地在程序中不相干的地方使用了同一个变量名
  • 检阅。检阅是一个比较正式的会议,检阅人员带着找缺陷的目的来阅读代码。设计和文档也可以被检阅。检阅的好处是可以发现在代码执行时发现不了的缺陷,比方说,不好的变量命名,不好的代码格式,误导和缺失的注释等。这项技术不好的地方是它是手动的且很花时间
  • 测试。测试是执行软件系统来找出它不能执行的所需功能的情况。测试的好处是它可以很大程度上是自动化的,但不好的地方是它只能检测出和运行时行为相关的缺陷。

我采用了Java或类似的现代面向对象的编程语言,因此这些语言比其它老的类似C, Fortran和BASIC语言有更好的可靠性。检阅是一项重要的技术可以捕获许多不同类型的缺陷,但在本书中我不会做进一步讨论。测试是一项众所周知的技术,但敏捷开发运动特别是测试驱动开发技术使其有了新生。因此我将强调测试和测试驱动开发。本章的剩余部分就致力于用测试的基本定义和工具来打造使用这些技术的基础。

翻译自书籍:Flexible, Reliable Software Using Patterns and Agile Development, Henrik Baerbak Christensen

后面的翻译将陆续更新…  下一篇,2.2 测试的术语

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DevOps时代的专栏

中国银行 DevOps 历程、 效果及展望

? 讲师 | 张新 编辑 | 白凡 作者简介: ? 个人简介:张新,曾从事中国银行软件设计开发工作,熟悉银行业务系统和开发过程;现作为中国银行软件中心DevO...

4614
来自专栏星流全栈

技术的执念

1084
来自专栏JAVA高级架构

开发十年,就只剩下这套Java开发体系了

以前我一直被公司和技术牵着走,并不是自己在选择技术,而是不自觉地被推到了这个位置上。想想有多少人对于自己将来要从事的职业和技术类型进行过深入思考和比较呢?当我跳...

1182
来自专栏互联网杂技

30秒钟评价一个网页

当你已经做好准备要开发一个网站时,你一定希望你开发出的网站能给用户最好的用户体验。 能够准确快速的评价一个网站是一门艺术,也是一门科学,但这种艺术或科学是可以很...

3579
来自专栏Java架构

微服务是传统企业电商解决方案的银弹吗?

近几年,微服务成为最流行的技术名词之一,尤其受到亚马逊、阿里等电商巨头的影响,很多传统企业在实施电商过程中也纷纷往微服务架构靠拢,相比单体架构,微服务确实有很多...

2246
来自专栏何俊林

开发十年,只剩下这套Java开发体系了

蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力、培训、出国、大公司的经历,还有很多很好的朋友。

1223
来自专栏Albert陈凯

2018-08-01 编程十年,Java技术线路

https://my.oschina.net/u/3779583/blog/1862418

771
来自专栏CSDN技术头条

如何在三年内快速成长为一名技术专家

作者 | 清英 文章来源GitChat,CSDN独家合作发布,查看交流实录:http://gitbook.cn/books/59b69dc608f7233e6...

1876
来自专栏Java架构

阿里十年,只剩下这套Java开发体系了

蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力、培训、出国、大公司的经历,还有很多很好的朋友。但再仔细一想,这十年中我至少浪费了五年时间,这五年可...

1624
来自专栏Java大联盟

Java进阶之路——从初级程序员到高薪架构师

要记住公司招人是解决问题的,基于现有问题出发,大家一般心里会有一个大致的解决方案,而这个解决方案通常是由若干种技术组合而成。

2012

扫码关注云+社区

领取腾讯云代金券