软件测试概述
软件测试的IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果之间的差异。软件测试的发展趋势:
①测试工作将进一步前移。软件测试不仅仅是单元测试、集成测试、系统测试和验收测试,还对需求的精确性和完整性的测试技术、对系统设计的测试技术将成为新的研究热点。
②软件架构师,开发工程师,QA人员,测试工程师将进行更好的融合
③测试职业将得到更充分的尊重。
④设置独立的软件测试部门将成为未来软件公司的共识。
⑤测试外包服务将快速增长,和软件开发外包一样,软件测试外包将成为全球化的趋势。
软件测试工程师的素质:
责任心;沟通能力;团队合作精神;耐心、细心和信心;保持怀疑的态度,有缺陷预防的意识;不断学习的能力。
合格的测试工程师应具有的能力:
①一般能力:包括表达、交流、协调、管理、质量意识、软件开发过程方法、软件工程等;
②测试技能及方法:包括测试基本概念及方法、对测试工具的掌握、对专业测试标准的熟悉程度等;
③测试规划能力:包括风险分析及防范能力、测试目标及计划的制定能力等;
④测试执行能力:包括测试数据/脚本/用例的制定能力、测试比较及分析能力、缺陷记录及处理能力;
⑤测试分析、报告和改进能力:包括测试度量、统计技术、测试报告、过程监测及持续改进能力。
测试工程师的职责:
测试人员要了解项目需求内容,从用户的角度提出自己的测试看法;
测试人员要编写合理的测试计划并与项目整体计划有机地整合在一起;
测试人员要编写覆盖率高的测试用例;测试人员要认真仔细的实施测试工作,并提交测试报告以供项目参考;
测试人员要进行缺陷跟踪和分析。
软件测试基础软件概念
软件是计算机系统中与硬件相互依存的一部分,包括程序、数据、与其相关文档的完整结合。软件=程序+数据+文档。
软件的特点:
①软件是一种逻辑体,而不是具体的物理体,因而它具有抽象性;
②软件的生产与硬件不同,它没有明显的制造过程,对软件质量的控制,必须在开发方面下功夫;
③在软件运行和使用期间,没有硬件那样的机械磨损和老化问题,然而它存在退化问题,必须进行多次的修改和维护;
④软件的开发和运行常常受计算机系统的制约,对计算机系统有着不同程度的依赖性,为了解除这种依赖性,在软件开发过程中提出了软件移植问题。
⑤软件本身是复杂的,软件的复杂性可能来自它所反映问题的复杂性,也可能来自程序逻辑结构的复杂性。
⑥软件成本的昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力,它的成本比较高。
软件测试分类
单元测试:
单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
单元定义:
C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。如何进行单元测试:单元测试主要用白盒测试,先静态地检查代码是否符合规范,然后动态运行代码,检查其实际运行结果,检查程序的运行结果是否正确是一个最基本的要求,还要关注容错处理,程序的边界值处理等。
集成测试:
集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。
系统测试:
指将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
验收测试:
验收测试指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。在系统测试的后期,以用户测试为主或有测试人员等质量人员共同参与的测试。
α测试:指的是指的是由用户,测试人员、开发人员等共同参与的内部测试。
β测试:指的是内测后的公测,即完全交给最终用户测试验收测试的重要性:验收签字,收钱。