软件测试的原则
1所有的测试都应追溯到用户需求2应当把“尽早和不断地测试”作为座右铭3测试工作应该由独立的专业的软件测试机构来完成4 Pareto原则,测试发现的错误中80%很可能起源于20%的模块中。5设计测试用例时,应该考虑各种情况。6对测试出的错误结果一定要由一个确认的过程。7制定严格的测试计划8完全测试是不可能的,测试需要终止。9注意回归测试的关联性。10妥善保存一切测试过程文档。
软件测试的分类:1按测试方式分类:静态测试(不需要执行所测试的程序,查询代码十分符合规范,对程序的数据流和控制流进行分析),动态测试(选择实际测试用例运行测试程序,模拟用户输入)2、按测试方法分类:白盒测试(结构测试,基于代码的测试或基于设计的测试)黑盒测试(行为测试,功能测试或基于需求的测试,基于系统应该完成的功能进行测试)3按测试过程分类:单元测试 集成测试 系统测试 验收测试.4按测试目的分类:功能测试,健壮性测试,接口测试,性能测试,强度测试,压力测试,用户界面测试 安全测试 靠性测试 安装/反安装测试 文档测试 恢复测试 兼容性测试。
软件测试流程:1制定测试计划:软件测试背景,软件测试依据,测试范围的界定,风险的确定,测试资源,测试策略,时间表的制定,其他。2设计测试方案3测试准备和测试环境的建立4执行测试5测试评估6测试总结
软件测试人员的基本素质:1具有良好的计算机编程基础2具有创新精神和超前意识3不懈努力,追求完美4具有很强的沟通和交流能力5具有整体观念,对细节敏感6团队合作精神
如何制定软件测试计划:1认真做好测试资料的搜集整理工作:软件的类别及其构成,软件的用户界面,在所测试的软件设计第三方软件的情况下,必须对这个第三方软件的功能及其与所要测试的软件之间的联系有一定的了解2明确测试的目标,增强测试计划的实用性3检查“5W”规则,明确内容与过程4采用评审和更新机制,保证测试计划满足实际需求。
白盒测试:一种被广泛使用的逻辑测试技术,也称为结构测试或逻辑驱动测试。对象基本是源程序,是以程序的内部逻辑为基础的一种测试技术。分为:静态测试(一种不通过执行程序而进行测试的技术,关键是检查软件的表示和描述是否一致,是否存在冲突。出源代码的语法错误,编译器和人工检测方法如代码检测法,静态结构分析法)动态测试(需要软件执行,当软件系统在模拟的或真实的环境中执行之前,之中和之后,对软件系统行为的分析是主要特点)
黑盒测试:数据驱动测试,穷举输入测试,只有把所有可能的输入都作为测试数据使用,才能查出程序中所有的错误。分为功能测试(方法:等价类划分,边值分析,因果图,错误推测,功能图法等,主要用于软件确认测试)和非功能测试(性能测试,强度测试,兼容性测试,配置测试,安全测试等)
软件测试流程等价类划分概述(所谓等价类是指摸个输入域的子集,等价类划分是一种典型的、常用的黑盒测试方法。使用这一方法时,把所有可能的输入数据(即将程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据)作为测试用例。
有效等价类 (指对于程序规格说明来说,由合理的、有意义的输入数据构成的集合。利用它,
可以检验程序是否实现了规格说明预先规定的功能和性能)
无效等价类(指对于程序规格说明来说,由不合理的、无意义的输入数据构成的集合)
单元测试:对软件设计的最小单元——模块进行正确性检验的测试工作,主要测试模块在语法,格式和逻辑上的错误。主要采用白盒测试技术,辅之以黑盒测试技术
原则:1单元测试越早进行越好2单元测试应该依据《软件详细设计规格说明》进行。3对于修改过的代码应该重做单元测试,保证对已发现错误的修改没有引入新的错误。4当测试用例的测试结果与设计规格说明上的预期结果不一致时,测试人员应如实记录实际的测试结果。5单元测试应注意选择好被测试软件单元的大小。5单元测试应注意选择好被测试软件单元的大小6一个完整的单元测试说明应该包含正面测试和负面测试7注意使用单元测试工具。
集成测试:将经过单元测试的模块按设计要求把它们连接起来,组成所规定的软件系统的过程称“集成”。集成测试是单元测试的逻辑扩展,它的最简单的形式是将两个已经测试过的单元组合成一个组件,并测试它们之间的接口。多采用黑盒测试,适当辅以白盒测试技术。
原则:1所有公共接口都要被测试到2关键模块必须进行充分的测试3集成测试应当按一定的
层次进行4集成测试的策略选择应当综合考虑质量、成本和进度之间的关系5集成测试应当尽早开始,并已总体设计为基础6在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通7当接口发生修改时,涉及的相关接口必须进行再测试8测试执行结果应当如实的记录。
1非增量式集成测试:(采用一步到位的方法来进行测试,即对所有模块进行个别的单元测试后,按程序结构图将各模块连接起来,把连接后的程序当做一个整体进行测试)
2增量式集成测试:单元的集成是逐步实现的,集成测试是逐步完成。自顶向下增量式集成测试和自底向上增量式集成测试。
几种集成测试实施方案的比较
1非增量式集成测试模式是先分散测试,然后集中起来再一次完成集成测试,
2自顶向下测试的主要优点在于它可以自然的做到逐步求精,一开始便能让测试者看到系统的框架
3自底向上测试的优点在于,由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也没有困难
4三明治集成测试采用自顶向下,自底向上集成相结合的方式,并采取持续集成的策略,有助于尽早发现缺陷,也有利于提高工作效率。
5核心系统先行集成测试能保证一些重要功能和服务的实现,对于快速软件开发很有效果。
系统测试:指将通过集成测试的软件系统,作为计算机系统的一个重要组成部分,与计算机硬件,外设,某些支撑软件的系统等其他系统元素组合在一起所进行的测试,目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或矛盾的地方。完全采用黑盒测试技术
验收测试:在软件开发结束后,用户对软件产品投入实际应用以前,进行的最后一次质量检验活动。回答开发的软件产品是否符合预期的各项要求以及用户能否接受的问题。主要是验证软件功能的正确性和需求的符合性。
软件研发阶段的单元测试,集成测试,系统测试的目的是发现软件错误,将软件缺陷排除在
交付客户以前,而验收测试需要客户共同参与,是旨在确认软件符合需求规格的验证活动。
α测试是在软件开发公司内模拟软件系统的运行环境下的一种验收测试,即软件开发公司组织内部人员,模拟各类用户行为对即将面市的软件产品进行测试,试图发现并修改。
关键:尽可能逼真地模拟实际运行环境和用户对软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式。
β版本是经过α测试调整的软件产品,β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况,提出批评意见,一般包括功能性,安全可靠性,易用性,可扩充性,兼容性,效率,资源占用率,用户文档等方面,然后软件开发公司再对β版本进行改错和完善。α测试是对早期不稳定的软件版本验收测试,而β测试是对晚期的更加稳定的软件版本进行的验收测试。
回归测试:指软件系统被修改或扩充后重新进行的测试,为了保证对软件修改以后,没有引入新的错误而重复进行测试。一种可以用于单元测试,集成测试,系统测试和验收测试各个测试过程的测试技术。适用于较高阶段的测试过程,多在系统测试和验收测试环境下进行,以确保整个软件系统新的构造或新的版本仍然运行正确。
测试用例设计基本原则:1用成熟测试用例设计方法来指导设计2测试用例的正确性3测试用例的代替性4测试结果的可判定性5测试结果的可再现性6足够详细,准确和清晰的步骤
软件缺陷的生命周期:发现——打开:测试人员到软件缺陷并将软件缺陷提交给开发人员
打开——修复:开发人员再现,修复缺陷,然后提交测试人员去验证
审查状态:项目管理员或者委员会决定软件缺陷是否该修复。推迟状态:审查可能认定软件缺陷应该在将来的同一时间考虑修复,但是在该版本不修复。
如何分离再现软件缺陷:1确保所有的步骤都被记录2注意时间和运行条件上的因素3注意软件的边界条件,内存容量和数据溢出的问题4注意事件发生次序导致的软件缺陷5考虑资源依赖性和内存,网络,硬件共享的相互作用6不要忽视硬件
质量评测:提供对测试完全程序的评价,而在测试过程中对已发现缺陷的评测提供了最佳的软件质量指标,缺陷被标识为一种更改请求,在此更改请求中的测试对象是与需求不符。
测试项目管理的基本原则:1始终能够把质量放在第一位2可靠的需求3尽量留出足够的时间4
足够重视测试计划5要适当地引入测试自动化或测试工具6建立独立的测试环境7通用项目管理原则
软件测试文档的作用:1促进项目组成员之间的交流沟通2便于对测试项目的管理3决定测试的有效性4检验测试资源5明确任务的风险6评价测试结果7方便再测试8验证需求的正确性
软件测试人员的组织结构:组织结果是指用一定的模式对责任,权威和关系进行安排,直至通过这种结果发挥功能。因素:1垂直还是平缓2集中还是分散3分级还是分散4专业人员还是工作人员5功能还是项目:测试组织可以面向功能,也可以面向项目。
软件风险管理:软件风险是指开发不成功引起的损失的可能性,这种不成功事件会导致公司商业上的失败。风险分析:对软件中潜在的问题进行识别,估计和评价的过程。
软件测试成本管理的基本原则:1软件测试项目成本的控制原则1)坚持成本最低化原则2)坚持全面成本控制原则3)坚持动态控制原则4)坚持项目目标管理原则5)坚持责、权、利相结合的原则。措施:1)组织措施2)技术措施3)经济措施
面向对象程序与传统程序的一个主要区别在于:面向过程的程序鼓励过程的自治,但不鼓励
过程间交互;面向对象的程序则不鼓励过程的自治,并且将过程封装在类中,而类的对象的执行则主要体现在这些过程的交互上。
软件测试自动化工具的作用和优势:
1.产生可靠的系统①需求定义的改进②性能测试的改进③负载/压力测试的改进④高质量测量与测试最佳化⑤改进系统开发生存周期⑥增加软件信任度
2.改进测试工作质量①改进多平台兼容性测试②改进软件兼容性测试③改进普通测试执行④更好地利用资源⑤执行手工测试无法完成的测试⑥重现软件缺陷的能力
3.提高测试工作效率①测试计划制订---测试工作量增加②测试程序开发---测试工作量减少③测试执行---测试工作量减少/进度加快④对程序的回归测试---更方便/进度加快⑤测试结果分析---测试工作量减少/进度加快⑥错误状态/纠正监视---测试工作量减少/进度加快⑦报告生成---测试工作量减少/进度加快