学习软件测试的基础理论已经有很久了,这里就当做是自己的一个巩固与提升吧,想要学习测试理论基础,但是又不知道从何下手的可以关注我的博客,不定期更新!我也就不废话了,直接上干货。
软件测试的方式:
1.验证:是指在软件生命周期的各个阶段,用下一阶段的产品来检查是否满足上个阶段的规格定义。
例如:通过设计来验证需求定义的规格是否正确,通过编码来验证设计的合理性,通过测试来验证编码的正确性
2.确认:检查每个阶段结束时的工作成果是否满足软件生命周期的需求文档中定义的各项规格和要求
例如:软件设计完成后,需要通过评审来判断是否满足需求定义;编码完成后,需要通过代码审查等方式来检查编码是否满足了各项需求的规格定义;测试阶段,通过评审测试用例,测试计划,测试报告、缺陷覆盖等材料来判断测试是否覆盖了各项需求。
测试原则:
1.good enough 原则:不能盲目追求最佳的测试效果而投入过多的测试资源。应该根据项目实际要求和产品的质量要求来考虑测试的投入。
2.Pareto 原则:(28原则)80%的Bug在分析,设计,评审阶段就能被发现和修正,剩下的16%由系统的软件测试来发现,4%由用户长时间使用过程中才能暴露出来。
3.尽可能早开展测试:越早发现错误,修改的代价越小;越迟发现错误,修复软件需要付出的代价就越高。
4.在发现较多错误的地方投入更多的测试:发现某个模块的Bug有集中出现的迹象,就要应该对这些缺陷集中的模块进行更多的测试和回归验证
5.同化效应:一个测试人员在同一个项目待得时间越久,越可能忽略一些明显的问题。交叉测试能避免一些测试的盲点,充分利用不同人员对待软件的不同视角和观点。通过引入新的测试思维来打破测试的局限和僵局。
测量的目的分为两大类:
1. 一类是为了验证程序能正常工作的测试。
2. 另一类是为证明程序不能正常工作的测试
第一类步骤:需求和设计的评审、设计阶段的测试、系统全面的测试。
对需求文档、设计(功能设计、实现设计)文档进行可测试性、明确性、完整性、正确性等方面的审查。
基本策略:
1. 先执行简单测试用例,再执行复杂测试用例
2.先验证单一的基本功能,再验证组合的功能
3.先解决表面的、影响面积大的Bug,再解决深层的、不易重现的Bug
是阶段性的,通常叫作“Bug Bash”,尽可能的寻找出Bug
缺陷管理
主要有三种角色,项目经理,开发人员和测试人员,三者分工明确,接口清晰。项目经理负责定义需求、编写需求规格说明书和设计文档;开发人员负责编写代码来实现和设计的规格定义;测试人员负责测试开发人员编写的代码是否符合项目经理定义的规格要求。
3.性能:
基准测试:侧重于比较测试(新的或未知)对象与已知的参照负载和系统的性能
竞争测试 :侧重于核实测试对象对于多个主角对相同资源的请求处理是否可以接受的测试
负载测试:用于在测试的系统保持不变的情况下,核实和评估系统在不同负载下操作极限的可接受性
性能曲线测试:监测测试对象的计时配置文件,包括执行流,数据访问,函数和系统调用,以确定并解决性能瓶颈和低效流程。
强度测试:侧重于确保系统可在遇到异常条件是按预期运行。
5.RUP对测试阶段的划分
1.单元测试,在迭代的早期实施,侧重于核实软件的最小可测试元素。
2.集成测试,为了确保当把实施模型中的构件集成起来执行用例时,这些构件能够正常运行。
3.系统测试,当将软件昨晚整体运行或实施明确定义的软件行为子集时可进行的测试
4.验收测试,是部署软件之前的最后一个测试操作。
用例八大要素:1. 用例编号 2.测试项目3.用例名称 4.重要级别 5. 预制条件 6测试输入 7操作步骤 8 预期结果