转眼间,10年的光阴转瞬即逝,在这些年我经历了许多,也成长了许多!其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然,我说的是最基础的功能测试的岗位需求已经很少了,而自动化、性能、安全乃至于以后可能出现的大数据测试、AI测试仍存在着非常多的机会。许多的年轻人在入行之后很多时候都有就这样的一段经历,比如明明自己就很忙,每天忙的像条狗一样,却还要被老大批。每个人都是这样一步步过来得,我在这里分享一下我得经验,如何有效得进行测试,
![](https://upload-images.jianshu.io/upload_images/11349666-49e4a8535adafbaa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/240/format/webp)
1、验证需求
为每个需求提供 质量度量标准,具体而言就是针对需求划分2个分类:满足需求分类和不满足需求分类。要明确满足需求和不满足需要的具体度量标准,是模糊的需求明确化。对于不易明确化的需求,可以进行需求划分,把大需求划分为若干个可以明确的小需求。验证需求时需要验证的属性:
- 正确性:根据用户的需求进行验证。是否正确的完成了用户的真实需求。
- 完整性:用于保证需求中没有遗漏任何必须的元素。避免遗漏原始需求。
除了功能性需求之外,非功能性需求也需要验证,具体包括:性能、安全、可用性、兼容性、可访问性等。非功能性需求可以分为系统级需求和功能级需求。非功能性需求检查表如下:
- 一致性:是否有互相矛盾的情况。排除有歧义的地方。
- 可测性:需求是否可以测试并且有准确的预期输入和结果。否则需要提醒相关风险。
- 可行性:保证需求可以在有效的资源内被完成。比如:预算、进度、技术等。
- 必要性:确认需求是否为必须,如果去除是否有任何问题。
- 优先级:为每个需求确定其优先级,便于后期在必要时对需求进行取舍。
- 明确性:需求的陈述需要精确且可测量。比如:性能指标不能以很快来描述。
- 可追溯性:明确需求被哪些功能模块所调用。保证在需求变化的时候可以追溯影响的范围。
2、注意在现存系统上进行开发和测试
基于现存的系统进行开发或者重构,往往会有很多问题。比如:新旧系统的一致性等。如果要避免2个版本的并行开发的问题,则需要按照如下流程来管理开发项目:
- 使用确定版本作为基准版本
- 把该版本程序进行文档化【如果有则可省略】
- 基准版本有更新时也要文档化
- 固化形成的有效开发过程
- 学习找不到资料?这里向大家推荐一个学习资料分享群:175317069,里面有大牛已经整理好的资料,有自动化,jmeter,性能测试,接口等等的资料,欢迎加群一起交流学习哦!
3、了解手头的任务和相关的测试目标
判断一个程序功能是否正确的要素:
- 合法输入有正确的返回
- 非法输入有对应的提示
- 不论何种输入程序都不应挂起、崩溃或退出
- 可以在预定的时间内一直正常运行
- 实现了功能性、非功能性需求
了解测试目标的途径如下:
- 理解系统。从更高的层次来理解需求,而非独立的思考需求本身
- 尽早介入
- 理解企业文化和过程。为更好的适应和提出改进意见做准备
- 实现的范围
- 测试期望。高层、客户对测试的期望
- 吸取教训
- 工作量大小
- 解决方案的类型。复杂的解决方案,还是简单的解决方式
- 技术选择。根据技术栈确定待测对象
- 预算。根据预算来确定投入的测试工作量
- 时间表。根据时间表来调整测试时间
- 版本提测方式。迭代提测还是大版本提测
在对系统有了全面的了解后,就可以知道系统的规模和相应的工作量、客户的问题及潜在的风险。通过这些信息来了解当前的测试任务,并据此确定测试目标及对应的测试框架。最终形成测试计划或者测试策略文档。
4、获得有效的测试数据
野蛮的遍历所有的测试输入数据和测试输出数据组合是不可取的,所以需要通过合适的测试设计来获得有效的测试数据。测试数据需要覆盖系统级的所有功能。而评审测试数据时需要从如下几点考虑:
- 深度。需要了解测试数据的数量和规模
- 广度。考虑测试数据的内容变化,比如:划分类型和区域
- 范围。对于验证的结果进行范围确定,不能多、不能少、不能错
- 测试过程中保证数据的完整性。避免测试数据互相影响,不同人员操作相互影响。
- 条件。为特定测试场景准备一些基础数据,从而高效实现测试执行。
最后,如果可以的话尽量使用客户或者线上已有的测试数据,这样的数据即丰富有真实,尽可能的模拟了线上用户操作。
5、根据功能优先级安排测试工作
功能列表可以按照不同的标准来划分优先级:
- 风险由高到低
- 复杂度由高到低
- 客户的需要
- 预算的限制
- 时间的限制
- 人员的限制
最终可以针对不同维度对某个需求进行打分,然后综合各维度的得分,最后就可以得到一个功能列表的优先级综合得分。
做到这些带你我不敢说你是个优秀得测试员,但你至少是个合格得测试员,除了这些软实力方面得在资深得技能掌握方面也是必须要过硬,这样才能成为一个优秀得测试员,以下是我总结得一些需要提升得技能希望对你能有帮助!这里向大家推荐一个学习资料分享群:175317069。