这周末去朋友家玩,一个周末都没有学习,再加上最近准备学习Django框架,安装有点问题,也一直在查资料,就没有再更新Python学习的模块,决定给自己其他的时间做点别的,所以在看软件测试的书籍,记下书上的的笔记。
软件开发生命周期模式:
- 大爆炸模式:简单,几乎什么前期文档资料都没有,重点在于开发软件和编程上
- 边写边改模式:前期只有简单地想法,来回修改测试
- 瀑布模式:构思、分析、设计、开发、测试、最终产品,它对于产品说明定义很在意,当完成一个阶段进入下一个阶段时,不能回溯。
- 螺旋模式:一开始不必详细定义产品细节,只需要定义重要的功能,然后实现后再接受客户的反馈,再进入下一个阶段,步骤:确定目标,可选方案和限定条件,明确并化解风险,当前阶段开发和测试,计划下一阶段,确定进入下一阶段的方法。
- 软件测试的实质:
测试原则:
- 完全测试程序是不可能的;
- 软件测试是有风险的行为;
- 测试无法显示潜伏的软件缺陷;
- 找到的软件缺陷越多,就说明软件缺陷越多;
- 并非所有的软件缺陷都要修复;
- 什么时候叫软件缺陷;
软件缺陷定义:
1.软件未实现产品说明书要求的功能;
2.软件出现产品说明书指明不应该出现的错误;
3.软件实现产品说明书未提到的功能;
4.软件未实现产品说明书虽然未明确提及但应该要实现的功能 - 产品说明书没有最终版;
- 软件测试在产品小组中不受欢迎;
- 软件测试是一项讲究条理的技术专业;
测试基础
测试方式:
黑盒测试:功能性测试,就想像软件产品是一个黑盒子,对于内部,你什么都看不见,你只能知道输入和输出。
白盒测试:就是能看见软件内部的结构,可以通过看产品的代码,来进行测试。
静态测试:也就是不运行程序测试,只是检查和审核
动态测试:使用和运行软件测试
-
检查产品说明书:
这是最理想的状态,在产品设计前期就参与测试,及早找出缺陷,可以节省大笔开销。对产品说明书测试属于静态黑盒测试,
-
测试软件:
采用动态黑盒测试,根据产品说明书进行测试,清楚输入和输出,定义测试用例就行了,但因为测试用例很多,如何合适选择测试用例就很重要。
测试方法:通过性测试,是先确认软件产品至少能实现什么功能,运用最简单的测试用例就行了,失效性测试,就是为了破坏软件
选择测试用例的方法:
- 等价类划分:测试相同目标或者暴露相同软件缺陷的一组测试用例,就是考虑把相似输入,相似输出,相似操作的分在一组。
测试用例的原则:
- 边界条件:第一个划分是认为是正确的数据,临近边界条件的有效数据,第二个是包含可能出现错误的数据。
- 次边界条件:2的幂和ASCⅡ
- 空值:
- 无效数据
数据测试和程序测试,数据包括键盘输入,鼠标点击,磁盘文件,打印输出等,程序是指可执行的流程,转换,逻辑和运算。
状态测试:通过不同的状态验证程序的逻辑流程,
逻辑流程测试:也需要建立等价划分,因为一个软件产品的状态很多,第一:先建立状态转换图,必须包含以下表示,软件可能进入的每一种独立状态,从一种状态转为另一种状态所需的输入和条件,进入或者退出某种的状态的设置条件及输出结果
检查代码
静态白盒测试:在不执行软件的条件下有条理的仔细审查软件设计,体系结构和代码,也叫结构化分析,对于一个软件产品,先进行静态黑盒测试,审查产品说明书,找到缺陷,再进行静态白盒测试,查看代码体系结构,有助于后面的动态黑盒测试,提供哪里容易出现问题 思路。
正式审查:正式进入静态白盒测试的过程,包括以下4个基本要素:1.确定问题2.遵守规则3.准备4.编写报告
审查的问题:
- 数据引用错误
- 数据声明错误
- 计算错误
- 比较错误
- 控制流程错误
- 子程序参数错误
- 输入输出错误
- 其他检查