什么是软件测试
软件测试就是发现程序中隐藏错误的一个过程,他主要在于检验预期结果与实际结果之间的差别
测试与调试的区别
测试是为了发现程序的缺陷,调试是为了解决问题
测试主要是测试人员来执行,单元和集成测试主要是开发人员,系统测试由测试人员。而调试只是开发人员。
测试在软件开发整个周期,而调试只是在开发阶段
为什么要做软件测试
首先我对测试这个职位很有兴趣。
其次测试是软件最终的一道防线。站在一个用户的角度来讲,肯定希望得到的是一个更加完善的产品。而我很乐意与开发人员进行沟通,帮助整个团队在开发过程中不断寻找缺陷。成为一个合格的把关人员。
测试与开发的区别
开发追求的是深度,对于某一方面技术更深
测试追求的是广度,专业度低。测试要求的技能更加广泛。
软件测试的目的和原则
是为了验证软件中有没有问题
要以客户需求为中心,遵循软件测试的规范流程。
什么是需求
需求主要有用户需求和软件需求
用户需求就是甲方提出的需求,
软件需求就是功能需求,需要实现的功能是什么。是测试的依据。
什么是缺陷或者bug
缺陷就是在需求正确的情况下,程序没有实现用户的合理预期功能要求的错误。
什么是测试用例
就是一系列为了实施测试提供的一组集合
测试会遇到问题
不知道是否全面,不知道覆盖率,对新版本的重复测试复杂,大量冗余测试影响效率。
软件生命周期
需求分析,计划,设计,编码,测试,运行维护
瀑布模型-适用于稳定的项目
需求分析,计划,设计,编码,测试
优点:有阶段性
缺点:不能使用需求的变化,风险高
螺旋模型-需求不是很明确
优点:对于风险大的项目很适合,强调风险分析
缺点:会投入大量的人员资金时间。
增量,迭代–适用于频繁变更
每一次迭代都意味着有需求的更改,测试人员需要频繁跟进。
敏捷
敏捷与其他的区别
注重人与人之间的沟通
轻文档
客户参与
及时响应变化
敏捷的测试
轻文档,不断找bug,多采用自动化测试,注重与开发人员的交流
scrum
PO产品经理 SM敏捷教练 T团队
PO负责整理用户故事,指定计划。
SM负责召开会议,协调项目
T主要负责每一次迭代
scrum流程
- PO整理用户故事,形成产品backlog
- PO召开计划会议,讲解用户故事,制定出本次的任务backlog
- 团队对每一个故事进行分解,交给各负责人,估算时长。
V模型
需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,验收测试。
系统测试主要包括:环境搭建,整理数据,执行测试, 缺陷管理,测试报告
缺点:测试人员没有尽早介入
W模型
用户需求 ------需求分析和设计------概要设计-----详细设计---编码------------集成-------实施---------交付
验收测试准备--系统测试准备-----集成测试准备-单元测试准备--单元测试--集成测试--系统测试--验收测试
测试与开发并行。有利于尽早的发现问题。
局限性:需求,设计,编码等是串行,上一阶段要完成才可以进行下一阶段,无法支持敏捷模式。
软件测试的生命周期
软件测试主要分为五部分,
首先是需求分析,测试人员参考需求分析说明书,分析测试的范围
然后制定测试计划,根据需求的范围编写测试计划,制定测试方案
之后进行测试用例编写,进行评审
执行测试,包括环境搭建,数据准备,测试执行,缺陷管理
最后进行测试评估,对测试结果进行分析
怎么描述bug
版本,环境,步骤,预期结果,实际结果。有的缺陷需要上传截图,日志信息等。
一次性描述一个BUG
bug有哪些等级
崩溃(数据库连接错误)
严重(数据丢失)
一般(边界值错误)
次要(界面不好看)
Bug生命周期
new 发现bug
Open 确认是Bug
开发人员确定是否修改
否:拒绝修改或者延期修改
开发人员标识成修改状态进行修改
测试人员继续测试,通过就关闭,不通过就重新修改
首先测试人员提交新的BUG入库,错误状态置为new,如果测试人员确认是错误,则分配给相应的开发人员,设置状态为open,如果不是,则拒绝修改状态置为Rejected状态,或者延期修改状态Dalay。开发人发修改bug,状态置为fixed,
,然后验证bug 已经解决完毕,将bug状态置为closed,如果没有解决置为Reopen。
发生争执怎么办????
1.首先检查自己描述的BUG是否准确
2.应该站在用户的角度上分析BUG
3.BUG定级要合理
4.可以在提出BUG的时候,附带上解决思路
5.不能争吵,及时沟通上级进行评审
测试用例的编写
什么是好的测试用例
表达清楚,没有二义性
可操作性强。
一条用例只有一个结果
可维护性好
覆盖率好
能发现更多的bug
说说什么是等价类
等价类就是根据需求将输入划分为若干等价类,从等价类中选出一个测试用例
有效等价类:是有意义的数据
无效等价类:不满足需求的集合
边界值是什么
边界值就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常和等价类一起使用。
因果图
能够只管表达出 输入 和 输出 之间的关系,适用于有多重输入条件,输出依赖于输入的情况。
有 恒等,与,或。非
正交排列法
主要是为了减少用例数目用尽量少的用例覆盖输入的两两组合
行数:实验次数是N
因素数:列的个数是C
两条性质:
每一列中各数字出现的次数都一样多
任何两列构成的有序数对出现的次数一样多
次数=因素*(因素的选择-1)+1
比如 姓名,学号,密码
用例次数=3*(2-1)+1
场景设计法
用事件触发来控制流程
根据各种业务流来设计用例
错误猜测法
可能会出现错误的地方,有针对性地设计测试用例
如:
1、校验中特殊字符空格的处理?
2、密码校验中的大小写?
3、姓名中的特殊字符?
4、密码发送是否明文
测试用例的粒度和评价
粒度小,写的过于复杂,会有效率问题和成本问题。
粒度大,太简略,则会失去测试用例的意义
应该考虑到:产品的质量要求,项目的要求,时间和资源的约束性。
如何提高用例的质量
同行评审,用户检查,项目组评审。