目
什么是软件测试
软件测试的特点
什么是需求
用户需求
软件需求
从软件测试人员角度看需求
需求对测试人员的重要性
测试用例
BUG
软件生命周期
开发模型
瀑布模型
螺旋模型
增量迭代
敏捷
测试模型
V模型
W模型(双V模型)
软件测试就是验证软件产品特性是否满足用户的需求.
从这句话中可以看出:测试试图验证软件是"工作的",也就是验证软件功能执行的正确性;测试的活动是以测试人员"预期的结果"为依据,这里的"预期结果"指的是需求定义.
最常见的理解软件测试就是找bug,发现缺陷.
软件测试只是一个样本试验,具有不可穷尽性.
满足用户期望或正式规定文档(合同,标准,规范)所具有的条件和权能,包含用户需求和软件需求.
可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务,该需求一般比较简略.
又叫功能需求,该需求会详细描述开发人员必须实现的软件功能.
大多数公司在进行软件开发的时候会把用户需求转化为软件需求,开发人员和测试人员的直接依据就是软件需求.用户需求就是一句话,软件需求是一个文档(详细描述用户需求如何实现).
深入的了解需求一般需要召开需求评审会议,查阅文档和沟通.
需求是软件测试人员开展软件测试工作的依据.
在具体设计测试用例的时候,需要先搞清楚每一个业务需求对应的多个软件功能需求点,然后分析出每个软件功能需求点对应的多个测试需求点,然后针对每个测试需求点设计测试用例.
流程:业务需求->软件功能需求点->测试需求点->测试用例
从软件功能出发,无遗漏的识别出测试需求是至关重要的,这将直接关系到测试用例的测试覆盖率.
对于识别出的每个测试需求点,需要采用具体的设计测试用例的方法来进行测试用例的设计.
测试用例(Test Case)是为了实施测试而向被 测试的系统提供的一组集合,这组集合包含:测试环境,操作步骤,测试数据,预期结果等要素.
测试用例解决了两大问题:测什么和怎么测.
为什么要有测试用例
测试用例能够提高测试人员工作效率,降低测试人员工作的重复性问题.
测试用例是建立自动化的基础.
软件错误一般定义为程序与规格说明之间不匹配.
上述这个说法是片面的,准确的来说,当且仅当规格说明是存在并且正确,程序与规格说明之间的不匹配才是错误.
当需求规格说明书没有提到此功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误.
软件生命周期是指从软件产品的设想开始到软件不在使用而结束的时间.
整个时间段可以分为6个阶段:需求分析,计划,设计,编码,测试,运行维护.
需求分析:分析需求是否合理,需求是否完整.
计划:谁来开发,谁来测试,开发多久,测试多久.
设计:技术文档(设计哪些接口,库表,定时任务等),UI视觉稿
编码:进行代码开发
测试:执行测试用例,提交bug,验收,生成测试报告.
运行维护:项目上线,如果有线上问题,此时测试人员需要协助开发问题+解决问题.
特点就是线性的.
优点:每个阶段做什么,产出什么都非常清晰.
缺点:风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会.
适用的项目:小型的项目.
优点:每个阶段都会进行风险分析,避免一些线上问题的发生.
缺点:风险分析可能分析不准确,需要人力财力的投入.
适用项目:适用于比较大,风险比较多的项目.
增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一。增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。
2001年,以Kent Beck、Alistair Cockbum、Ward Cunningham、Martin Fowler等人为首的“轻量”过程派聚集在犹他州的Snowbird,决定把“敏捷”(Agile)作为新的过程家族的名称。
在会议上,他们提出了《敏捷宣言》(http://agilemanifesto.org/): 我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工怍,我们形成了如下价值观。
产品经理收集用户需求,项目经理根据需求进行优先级的划分,计划项目何时开始何时结束,由谁完成.
每日站会汇报昨天工作情况和今天的计划.
特点:左边是开发,右边是测试,适用于瀑布模型.
优点:测试被划分成多个类型
缺点:测试人员介入台湾,实现问题的时机太晚.
W模型由两个V字模型组成,分别代表测试与开发过程,图中也明显表示除了测试与开发的并行关系.
特点:测试的不仅是程序,需求,设计等同样要测试,测试与开发是同步进行的.
优点:测试人员介入的更早,能够及时发现问题.
缺点:测试人员和开发人员一定程度上还是串行的,不能拥抱变化,不能适用于敏捷.