前提:个人工作与互联网相关,因此总结内容比较偏向这方面的,如有其他不同建议或者需要补充的,请各位留言拍砖,互相交流,互相学习!
一、什么是软件测试
软件测试就是尽量以最小的人力物力保证产品质量的过程,做好前期计划,做好中间过程,做好后期反馈和问题解决。
二、为什么需要软件测试
如果没有软件测试,则无法保证在测试过程中产品按照具体的需求完成,也没有人专职对产品的功能、逻辑等进行专项测试,无法保证质量的产品发布出去后是很容易有重大问题的,尤其是在产品用户量较大的情况下,引起的经济损失以及企业形象损失等无法预计。
三、软件测试工作的流程及测试工程师的工作内容
软件测试工作的流程主要包括:
(1)需求评审
(2)测试计划
(3)测试方案
(4)具体功能模块的划分、测试点的确定、测试用例的编写
(5)具体的测试执行
(6)bug的跟进与修复验证
(7)根据基本的发布标准,进行最终版本的回归,并完成发布
(8)产品发布之后继续跟进运营反馈的问题,复现现场,并协助分析和解决用户场景下的问题
四、软件测试过程中的bug分类
(1)用户体验上的——包括界面设计、流程跳转等
(2)功能性的——逻辑上错误,功能上未实现,或者在特定场景下出现的特殊问题
(3)兼容性的——包括外部环境的兼容性(与其他软件的兼容性),内部环境的兼容性(一个大的软件安装目录下新旧版本的文件兼容性(如A新+B旧,A旧+B新等));以及硬件与软件之间的兼容(比如硬件的接口修改了,导致软件无法访问的)
(4)性能上的——挂机时间较长或者某个操作次数频繁后,出现内存泄露,或者cpu占用过高
(5)异常情况——设计用例时可将该部分内容全部摘取出来(比如测试网速时,连接无网的WiFi,或者直接不连接WiFi等)
(6)安装卸载升级——全新安装卸载、覆盖安装卸载、升级功能
五、测试用例的设计
测试用例的设计基本上可以按照bug的分类来进行,这样就可以比较全面的覆盖到:
(1)功能性(2)兼容性(3)性能(4)用户体验
另外,测试用例的设计上需要针对冒烟测试、详细测试、以及回归测试做区分,设计出不同的测试用例
以下为自己平时记录的心得:
这里关注的都是客户端内容(PC和an droid的)
输入页面为例,一般都包括输入框和确认按钮
功能性:
1、输入框内任何内容都不输入,点击确认按钮(注意:这里一定要增加判空逻辑,否则程序会抛出异常,导致崩溃;其他类似)
2、输入框只输入一个框,其他不输入(以此类推),点击确认按钮
3、输入框内输入格式错误(包括其他不允许输入的字符、带.的不输入点,如IP只输入数字、输入长度限制、特殊字符限制),点击确认按钮
4、针对输入框部分可输入,部分可选情况,只输入必须输入的,点击确认按钮
5、输入框输入正确内容和格式,点击确认按钮(能够正确设置成功?)
性能:
1、输入内容有问题时,点击确认按钮多久能够给出响应?
2、输入内容正确时,多久能够设置成功,给出正确响应?
交互:
1、输入框展示(主tab内容)、输入框排布、以及确认按钮排版、风格一致
2、输入框正确、错误提示
兼容性:
1、国际大环境兼容性:
客户端产品要关注的兼容性——不同操作系统
如果是web端——关注不同的浏览器
如果是手机端——关注不同的手机型号、手机系统
2、睦邻友好兼容性:
跟其他的软件之间的兼容性
跟一些需要顾及到安全性的产品的兼容性
跟一些驱动层相关的产品的兼容性
3、内部兼容性:
自己的产品之间——新老文件的兼容性
自己的产品跟兄弟产品之间——相互调用的兼容性(我们的产品调用其他产品的dll等)
发布更新过程中的兼容性问题——比如有些模块升级之后,老的依然在内存中,必须得产品主程序重启才行;因此这种情况下就必须对原来程序加载老的和加载新的,进行测试,看是否会存在问题
六、测试方法总结
主要包括以下多种,均为自己平时总结:
1、传统测试方法:
关注功能、逻辑、用户体验等,与需求文档对照,总结测试点,编写测试用例,进行测试
2、比较测试方法:
此种方法比较适合于有产品调用我们的dll时采用,确定程序流程,老版本正常和不正常的地方,修改为新版本后,验证老版本不正常的地方得以修改,正常的地方依然正常
3、类比测试方法:
该种方法也可以叫做迁移测试法,比如考虑下载或者上传的加密问题,在一个项目中学习到这个注意事项后,在其他的项目中也就需要关注这一点
4、通用测试方法:
涉及到安全的产品及与用户本身隐私有关的产品,都必须进行加密,并且需要外界无法解密;对于一些需要常驻的进程或者可能会常驻的进程,需要关注性能方面的测试(挂太久会不会崩掉;程序会不会出现卡死或者紊乱)
5、正向逆向结合测试方法:比如程序web端与app端进行联动对应测试等
6、工具与真实环境对比测试:
7、测试正常及异常情况均需要考虑