软件测试即是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程
真正的软件测试是在深入理解需求的情况下、要具备开发的一些相关知识、拥有软件测试的理论体系和技术能力
应尽早的开始软件测试并不断的进行软件测试,软件项目一启动,软件测试也就是开始。由于软件的复杂性和抽象性,在软件生命周期各阶段都可能产生错误,贯穿于整个软件开发生命周期,所以不应把软件测试仅仅看作是一个独立阶段,而应当把它贯穿到软件开发的各个阶段去。在需求分析和设计阶段就应开始进行测试工作,编写相应的测试计划及测试设计文档,同时坚持在开发各阶段进行技术评审和验证,这样才能尽早发现和预防错误,杜绝某些缺陷和错误,提高软件质量。尽早开展测试准备工作使测试人员能够在早期了解到测试的难度,预测测试的风险,有利于制定出完善的计划和方案,提高软件测试及开发的效率,规避测试中存在的风险。尽早开展测试工作,有利于测试人员尽早发现软件中的缺陷,大大降低错误修复的成本。测试工作进行得越早,越有利于提高软件的质量,这是预防性测试的基本原则。
回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见
测试用例应该确定期望输出结果。如果无法确定测试期望结果,则无法进行检验。必须用预先精确对应的输入数据和输出结果来对照检查当前的输出结果是否正确,做到有的放矢
软件的问题各种各样,有需求层面的,有设计层面的,有编码层面的,有优化层面的
软件测试的的目的是:尽可能发现bug
测试的阶段:单元测试、集成测试、确认测试、系统测试、验收测试(回归测试)
软件测试的类型:功能测试,性能测试,兼容性测试,安全测试,配置测试
软件测试的基本流程:需求评审,ui评审,测试计划,设计用例,用例评审,执行测试(维护更新用例),测试报告
性能测试基本流程:制定测试计划,制定性能测试方案,开发测试脚本,设计测试场景,执行测试场景,分析测试结果
好的用例是:发至今尚未发现的bug
设计用例的目的:1.增加测试覆盖率,避免遗漏;2.供查阅
测试用例组成:用例id 测试数据规格要求,测试执行步骤,预期输出结果
设计用例常用边界值分析法,等价类划分,错误猜测法大多数用于经验丰富的测试人员,其次还有因果图法,正交试验,判定表法
提测的邮件:最好包括需求描述,发布方案描述(源路径和目标路径),数据库变更
测试手段:
1.修改数据库,例修改审核状态;造数据,例订单评价;使用常用sql达成测试目的
2.response 打断点 ,标题超长,无图无图
3.重定向,app是线上的包重向
4.seo站长工具
5.抓包,数据绑定错误
6.python
运行脚本,自动连接到服务器,发布代码,重新启动某进程
困难:
python只能对单个文件上传,对多个文件上传只能用递归;若是目录下包含子文件夹还有先新建目录
递归目录,服务器的目录还要和本地一致,先是用索引截取还采用替换
远程sudo命令的运行
在自己写的时候,是要去看别人写的,但是那是别人的东西,是别人根据他自己的实际情况写的,那不是自己的东西,和自己的实际情况是有所出入的,例如sudo;在借鉴别人的东西的时候,借鉴的是他的方法,他的思路,然后写出符合自己实际情况的代码,输出自己想要看到的代码
同样是功能测试,看待bug的清晰度是完全不
bug包括:id 主题 优先级 创建人 指派人 状态 数据准备 复现步骤 实际结果 预期结果
bug的生命周期:提交,确认,分配,修复,验证,关闭/重新打开
bug等级划分:
致命,功能性的bug,影响功能模块的使用,例如,提交信息不能保存;功能设计与需求业务逻辑严重不符
严重,功能未实现,例如小细节未实现
一般,边界条件错误,例如,标题过长显示不规范
建议,建议性的bug,文案提示描述不清晰
自动化测试的优缺点:
优:1.性能测试中不可替代的优势
2.回归测试
3.使测试人员有更好的精力去设计好的测试用例
4.具有一致性,复用性
缺:1.不能取代手工测试
2.本身无想象力
3.缺陷越多,测试失败率越大(如测试环境比较low)
性能测试:通过自动化测试工具,模拟多种正常,峰值,异常负载条件下,对系统各项性能指标进行测试
性能指标:吞吐量,响应时间,cpu,内存
1.并发测试
2.负载测试,找出系统最大负载
3.压力测试,在最大负载下运行,确定在什么负载条件下,系统性能处于失效状态,以此获得系统能够提供最大的服务级别的测试
4.配置测试,找出最优配置
5.可靠性测试,在给定压力下可持续时间
6.疲劳强度测试,在系统稳定运行情况下,能够支持的最大并发用户数或是日常运行用户数
单元测试的测试对象,目的、测试依据、测试方法?
测试对象是模块内部的程序错误;
目的是消除局部模块逻辑和功能上的错误和缺陷;
测试依据是模块的详细设计;
测试方法采用白盒测试。
测试工具:junit
集成测试的测试对象,目的、测试依据、测试方法?
集成测试的测试对象是模块间的组装和调用关系;
目的是找出与软件设计相关的程序结构模块调用关系,模块间接口方面问题;
测试依据是概要设计;
测试方法采用灰盒测试。
系统测试的测试对象,目的、测试依据、测试方法?
系统测试的测试对象是整个系统;
测试的目的是对整个系统进行测试;
测试的依据是需求规格说明书;
测试方法黑盒测试。
请谈谈您对测试工作的理解?
尽可能发现bug,对其是否能满足设计要求进行评估
你认为测试人员需要具备哪些素质?
如何做好测试?
良好的的自学能力,技术过关,减少沟通障碍
良好的沟通能力,自动性强,多问多沟通
良好的分析能力,定位bug
良好的解决问题的能力,例如写python一键发布脚本遇到的问题;今后性能测试将要遇到的问题
经常思考反省,平时的时候多思考,反省怎样提高测试质量,怎样避免用例遗漏,已提高思维严谨性、逻辑严密性,思考问题全面性
责任心,我不知道自己是不是一个有耐心的人,但是我知道自己是一个有责任心。
例如,产品和ui都在原型上的改动,造成原型不一致;
例2,产品一直在改动,消息文案,切改动了没有通知到相关人等
善于发现问题,努力解决问题,这勇敢提出问题,才是对一个团队最好的,团队才能逐渐成长
你觉得测试最重要的是什么?
自学的能力
如果一个很有个性的程序员认为自己的BUG不是BUG,怎么解决?
认为自己不是bug的理由;
1.产品这边需求改动:找产品确认
2.环境原因代码未成功发布:重新发布代码
3.分配人员指定错误:分配到对应的人员,备注
4.功能遗漏:追溯文档
5.技术上难以实现或是不能实现:和产品沟通,得到解决方案
为什么在团队中要有测试?
开发思维的局限性,会受到自己写的逻辑的影响,不能转换思维,难以客观、有效的测试自己的软件;
而且程序员本身错误的理解了需求导致程序中存在错误
业务上缺少全局性,只做自己的那一部分,不能站在全局的角度去考虑问题,站在更高的角度去看待局部问题
业余与专业的差距,在长期的工作过程中势必能够积累大量实践经验,形成自己的专业知识
你为什么能够做测试这一行
自己优势及缺点?
优势:
良好的自学能力,能够自动进行技术专研,案例,数据库根据字段名寻找表名;根据字段值寻找表名;osi模型
摇一摇压力测试的时候,下来找到问题的答案,一定有解决的办法,.积极主动的学习能力,能在项目的实施中进行思考,通过引入新技术或者改善当前的流程提升测试效率
有较强的沟通能力:对bug清晰的定位,便于沟通;测试的工作性质决定 了逻辑的严谨,对预期结果进行一个肯定,在沟通过程中会对沟通对象去诱导,得到一个具体的可行的实际方案;主动性强
独立分析问题的能力:对Bug的定位,例:页面上没有数据,接口数据绑定错误,前端传参错误
独立解决问题的能力:能够自己解决的问题尽力自己解决,实在解决不了然后再找其他人,比如,用户对订单的评价,自己造数据
因为本身兴趣原因,能时刻保持对工作的热情,渴望学习接触新的知识,对工作中遇到的问题觉得是一中提升自己能力的挑战
主动性强,爱问
独立思考,有自己的想法
责任心强体现在哪些方面?维护历史数据,bug的复现的原因,一轮一轮一次一次的测试保证产品质量
缺点:
字迹的很差
有时候说话可能直白了点
我要了解的内容:
公司成立的时间,组织架构,上下班时间
测试的岗位类型,和我同岗位的人数,我所应聘的岗位是一直存在还是新增
测试覆盖的范围,工作中涉及的哪些技术
我想去的公司:
非外包公司,非创业公司,具有一定的技术难度,能不断的进行学习,更新自己的知识库