西门子S7-200主机CPU224CN
西门子S7-200主机CPU224CN
测试手段的本质区别就是如何选择有限的测试集。针对特定条件确定*合适的选取准则是一个非常复杂的问题,在实践中需要运用风险分析技术和测试工程专门知识。*后是“预期”,必须能够确定所观察到的程序执行输出是不是可接受的,否则测试工作就是无用的。
软件测试是伴随着软件的产生而产生的。在早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。质量仍然是值得怀疑的。
上述的定义很抽象,我们还是根据经验,如果你想一股脑儿地把任何事情都做好,结果通常是什么都做不好,做事总是要分主次的。什么是重要的质量属性应当视具体产品的特征和应用环境而定,请读者不要受本书观点的限制。*简单的判别方式就是考察该质量属性是否被用户关注(即卖点)。
其中,软件测试是软件质量保证的关键步骤和重要手段,下面介绍软件测试的概念。
1.2 软件测试的概念
软件测试是软件开发的重要、必要部分,是通过找出缺陷和问题评估产品
间接改进产品质量的手段。从软件工程的观点看,预防程序问题要比改正问题重要得多。因此,必须首先把软件测试看做是检验预防程序错误的机制是否有效的主要手段,同时又是找出程序异常的手段。很迷茫。软件的质量不容易说清楚,下面列举说明,就以健康作类比吧。早先人们以为长得结实、饭量大就其中,功能性质量属性有3个:正确性、健壮性和可靠性;非功能性质量属性有7个:性能、易用性、清晰性、安全性、可扩展性、兼容性和可移植性。
为什么“10大”里面不包括可测试性、可维护性、灵活性呢?它们不也是很重要的吗?
答:它们是很重要的,但不是软件产品的卖点,所以挤不进“10大”行列。我认为如果做好了前述“10大”质量属性,软件将会自然而然地具备良好的可测试性、可维护性。人们很少纯粹地去提高可测试性和可维护性,勿要颠倒因果。至于灵活性,它有益处也有坏处,该灵活的地方已经被其他属性覆盖,而不该灵活的地方就不要刻意去追求。是健康,这显然是不科学的。现代人总是通过考察多方面的生理因素来判断是否健康,如测量身高、体重、心跳、血压、血液、体温等。如果上述因素都合格,那么表明这人是健康的。如果某个因素不合格,则表明此人在某个方面不健康,医生会对症下药。同理,我们也可以通过考察软件的质量属性来评价软件的质量,并给出提高软件质量的方法。
1.1.4 质量属性快速问答
一提起软件的质量属性,人们首先想到的是“正确性”。“正确性”的确很重要,
除了开发者本人谁也看不懂,也不会使用,这也是质量的问题。可见正确性只是反映软件质量的一个因素而已。
早在1976年,由Boehm等提出软件质量模型的分层方案。1979年,McCall等人改进Boehm质量模型又提出了一种软件质量模型。质量模型中的质量概念基于11个特性之上,而这11个特性分别面向软件产品的运行、修正、转移。它们与特性的关系如图1-1所示。McCall等认为,特性是软件质量的反映,软件质量可用做评价准则,定量化地度量软件属性克制软件质量的优劣,。在那次会议上第一次提出了软件工程(Software Engineering)这个概念。到今年(2013),软件工程整整走过了45年的历程。
在这段时间的发展中,人们针对软件危机的表现和原因,经过不断的实践和总结,越来越认识到:按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。
今天,尽管“软件危机”并未被彻底解决,但软件工程多年的发展仍可以说是硕果累累。下面给出一个软件工程的定义,然后简单讨论一下软件工程所包含的内容。
软件工程是一门研究如何使用系统化、规范化、数量化等工程原则和方法来进行软件的开发和维护的学科。
软件工程包括两方面的内容:软件开发技术和软件项目管理。
软件开发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。
统计数据表明,大多数软件开发项目的失败,并不是由于软件开发技术方面的原因。他们的失败是由于软件项目管理的不当所造成的。遗憾的是,尽管人们对软件项目管理重要性的认识有所提高,但在软件管理方面的进步远比在设计方法学和实现方法学上的进步小,至今还提不出一套管理软件开发的通用指导原则。下工夫。
③ 软件在使用过程中,没有磨损、老化的问题。软件在生存周期后期不会因为磨
老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这些修改有不可避免的引入错误,导致软件失效率升高,从而使软件退化。当修改的成本变得难以接受时,软件就会被抛弃。
④ 软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。
⑤ 软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。
⑥ 软件是复杂的,而且以后会更加复杂。软件是人类有史以来生产的复杂度*高的工业产品。软件涉及人类社会的各种行业,软件开发常常涉及其他领域的专业知识,这对软件工程师提出了很高的要求。
⑦ 软件的成本相当昂贵。软件需要投入大量、高强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销。
⑧ 软件工作牵涉很多社会因素。许多软件的开发运行涉及机构、体制和管理方式等问题,还会涉及人们的观念和心理。这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。