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