软件测试流程(完整版)

单纯从功能测试层面上来讲的话,APP测试、web测试在流程和功能测试上是没有区别的
根据两者载体不一样,则区别如下:

1.系统结构方面

web项目:b/s架构,基于浏览器的;web测试只要更新来服务器端,客户端就会同步更新
app项目:c/s架构,必须要有客户端;app修改来服务端,则客户端用户所有核心版本都需要进行回归测试一遍。

2.性能方面

web项目 需监测 响应时间,CPU、Memory
app项目 除了监测 响应时间,CPU、Memory外,还需监测浏览,电量等。

3.兼容方面

web项目
1.浏览器(火狐、谷歌、IE等)
2.操作系统(Windows7、Windows10、Linux等)
app项目:
1.设备系统:iOS(iPad、iPhone)、Android(三星、华为、联想等)、Windows(Win7、Win8)、OS X(Mac)
2.手机设备可根据 手机型号、分辨率不同

4. 相对于Web项目,app有专项测试

1.干扰测试:中断,来电,短信,关机,重启等
2.弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连,3g切换到4g/wifi等)

5. 安装、更新、卸载

安装:需要考虑安装时的中断、弱网、安装后删除安装文件等情况
卸载:需考虑卸载后是否删除app相关的文件
更新:分强制更新,非强制更新,增包更新,断点续传,弱网状态下更新

6.测试工具方面

自动化工具:APP一般使用Appium;Web一般使用Selenium
性能测试工具:APP一般使用Jmeter;Web一般使用LR Jmeter

7. 界面操作

关于手机端测试,需要注意手势,横竖屏切换,多点触控,前后台切换

8. 安全测试

安装包是否可以编译代码,安装包是否签名,权限设置,例如访问通讯录等

9. 边界测试

可用存储空间少,没有SD卡/双SD卡,飞行模式,系统时间有误,第三方依赖(QQ,微信登录)等

10. 权限测试

设置某个app是否可以获取权限,例如是否可访问通讯录,相册照相机等

一、 注册

以等价类划分和边界值法来分析

  1. 用户名字和密码都为最大长度(边界值分析法,取上点)
  2. 用户名字和密码都为最小长度(边界值分析法,取上点)
  3. 用户名字和密码长度在最大和最小长度之间(边界值分析法,取内点)
  4. 必填项分别为空注册
  5. 用户最大长度+1(边界值分析法,取上点)
  6. 用户最小长度-1(边界值分析法,取上点)
  7. 密码最大长度+1(边界值分析法,取上点)
  8. 密码最小长度-1(边界值分析法,取上点)
  9. 用户名含有非法字符注册(这和可以划分几个无效的等价类,如空格,#等,看需求是否允许)
  10. 密码含有非法字符注册(这个可以划分几个无效的等价类)
  11. 两次输入密码不一致(如果注册时候要输入两次密码,那么必须这个是必须的)
  12. 重新注册存在的用户
  13. 以已经注册的用户名(改变大小写)来注册。(有的需求是区分大小写,有的是不区分)
  14. 看是否支持Tab和Enter键等;密码是否可以复制粘贴,密码是否以*之类的加密符号显示
  15. 邮箱地址格式不正确,正确格式—@---.com
  16. 验证码错误(大小写,空值,错误输入等)

二、 登录

  1. 用户名和密码都是正确
  2. 用户名和密码都是错误
  3. 用户名正确和密码错误
  4. 用户名错误和密码正确
  5. 用户名或密码为空
  6. 删除的用户名和错误的密码
  7. 删除的用户名和正确密码
  8. 未注册用户名和错误密码
  9. 用户名或密码中插入空格
  10. 使用Tab或Enter键是否能登陆
  11. 改变用户名和密码的大小写登陆
  12. 用户名和密码中含有全角字符登陆
  13. Web系统是否有超时的限制
  14. 登陆错误次数是否有限制
  15. 密码的安全性是否有强中弱鉴定

三、修改密码

  1. 不输入酒密码,直接改密码
  2. 输入错误旧密码
  3. 不输入确认新密码
  4. 不输入新密码
  5. 新密码和确认新密码不一致
  6. 新密码中有空格
  7. 新密码为空
  8. 新密码长度为最大长度
  9. 新密码为最大长度与最小长度之间
  10. 新密码长度为最小长度
  11. 新密码为最大长度+1
  12. 新密码为最大长度-1
  13. 新密码为最小长度+1
  14. 新密码为最小长度-1
  15. 新密码为非法字符(如有的密码要求必须是英文和数字组成,如中文汉字)
  16. 检查是否支持Tab和Enter键等;密码是否可以复制粘贴;密码是否以*之类的加密符号
  17. 检查密码是否区分大小写,新密码中英文小写,确认密码中英文大写
  18. 新密码与旧密码一样能否修改成功

四、添加

  1. 要添加的数据项均为合理,检查数据库中是否添加了相应的数据
  2. 流出一个必填数据为空
  3. 按照边界值等价类设计测试用例的原则设计其他输入项的测试用例
  4. 不符合要求的地方要有错误提示
  5. 是否支持table键
  6. 按enter是否能保存
  7. 若提示不能保存,也要察看数据库里是否多了一条数据

五、删除

  1. 删除一个数据库中存在的数据,然后查看数据库中是否删除
  2. 删除一个数据库中并不存在的数据,看是否错误提示,并且数据库中没有数据删除
  3. 输入一个格式错误的数据,看是否有错误提示,并且数据库中么有数据被删除
  4. 输入的正确数据前加空格,看是否能正确删除数据
  5. 什么不输入
  6. 是否支持table键
  7. 是否支持enter键

六、 查询

精确查询:

  1. 输入的查询条件为数据库中存在的数据,看是否能正确地查出相应的数据
  2. 输入正确的查询条件以前加上空格,是否能正确地查出相应的数据
  3. 输入格式或范围不符合要求的数据,看是否有错误提示
  4. 输入数据库中不存在的数据
  5. 不输入任何数据
  6. 是否支持table键
  7. 是否支持enter键

模糊查询:
在精确查询的基础上加上以下一点:
8. 输入一些字符,看是否查出数据库中所有相关信息

功能测试自动化

  1. 轻量接口自动化测试 Jmeter
  2. APP UI层面的自动化 Android:UI Automator Viewer,Android Junit,Instrumentation,UI Automator ,iOS:基于Instrument的iOS UI自动化

性能测试

  1. Web前端性能测试
    网络抓包工具:Wireshark
    网页文件大小
    webpage test
    pagespeed insight
    chrome adb
  2. APP端性能测试
    Android内存占用分析:MAT
    iOS内存问题分析:ARC模式
    Android WebView性能分析
    iOS WebView性能分析
  3. 后台服务性能测试
    负载,压力,耐久性,可扩展性,基准
    工具:apacheAB,Jmeter,LoadRunner
  4. 专项测试
    兼容性测试
    手工测试:操作系统,分辨率,rom,网络类型
    云平台:testin,脚本编写,Android
    流量测试
    Android自带流量管理
    iOS自带的Network
    tcpdump抓包
    Wi-Fi代理抓包:Fidder
    流量节省方法:压缩数据,json优于xml;Webp优于传统的JPG,PNG;控制访问的频次;只获取必要的数据,缓存;
    电量测试
    基于测试设备的方法,购买电量表进行测试
    GSam Battery Monitoe Pro
    IOS基于Instrument Energy工具
    弱网络测试
    手机自带的网络状态模拟工具
    基于代理的弱网络的模拟
    工具:Windows;network delay simulator
    Mac:network link conditioner

分析

随着手机应用不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与pc端针对这些产品的测试有什么相同之处与不同之处呢?
总结如下:

相同之处

一、针对同一个系统功能的测试,三端所测试的业务六月初是一样的
二、一般情况下手机端和PC端都对应一套后台服务,比如说某公司所开发的互联网金融平台,整个平台做了分布式服务架构,后台服务包括用户服务,交易服务,产品服务,PC和手机端测试以上三个流程时,调用的都是同一个后台服务。
(注:也有一些功能,比如PC与手机端展示不一致,或者有什么特殊处理,这样情况下后台会写两套不同的接口来处理对应的业务需求)

不同之处

一、 测试平台(容器)不同:
pc项目都是在电脑上进行测试的:常见的PC项目架构有BS架构和CS架构(server),后台返回的到相应内容显示在浏览器上,常见BS架构的项目比如QQ,微信等,需要在电脑下载客户端(client),客户端与后台服务器(server)进行数据传输交互,基于以上信息,PC端测试都是在电脑上,要么是在浏览器上测试要么安装对应客户端,平台都是电脑

app测试平台分为安卓和iOS端:安卓测试需要在安卓手机上安装开发提供的apk测试包,iOS测试需要将手机UUID提供给开发安装ipa测试包进行测试

H5测试就是测试HMTL5页面:在PC或者手机浏览器都可以直接访问H5页面

二、兼容性测试不同
基于以上测试平台的不同,三端的兼容性也不一样

PC的兼容性主要包括各个浏览器和不同操作系统,目前笔者所经历的公司主要测试了不同主流版本浏览器的兼容性,还未涉及操作系统层面

APP的兼容性包含安卓和iOS不同机型,不同版本,不同屏幕都要适配

H5的兼容性主要测试手机端的不同浏览器的兼容性

三、系统架构不一样
PC和H5端项目尤其是WEB项目对应一个后台服务,所有客户访问的都是同一个后台。上线测试时,直接访问线上地址测试即可

APP测试虽然对应一个后台,但是不同的用户可一下载了不同版本的客户端,上线测试时,需要兼容每个版本的测试。

四、发布流程不同:
PC端每次更新发布,需要将测试通过的包退换线上包,重启服务后立即生效,访问的就是最新的环境

H5由于是一些html5网站发布上线后无需重启即可访问

APP端需要向应用市场发布,安卓发布的市场有很多,应用宝,豌豆荚,应用商店等每个应用都需要单独审核;iOS端应用比较单一就是app store。从提交,审核发到发布会有几天的时间间隔,开发的应用包不会立即发布。

五、专项测试
除以上不同外,app端还有一些专项测试
性能方面:响应时间,流量测试和耗电量测试
安装测试(PC端web项目不用测试,CS架构的也需要考虑)
交叉测试:就是在操作某个软件的时候,来电话,来短信,电量不足提示等外部事件
操作类型:手势测试,横竖屏
网络测试:包含弱网和网络切换测试,重点要考虑回退和刷新是否会造成二次提交,弱网络的模拟,据说可以用360Wi-Fi实现设置。
升级测试:升级测试的提醒机制,升级取消是否影响原有功能的使用,升级后用户数据是否被清除了

六、启动
app端:需要制定desired_caps内容,因为里面包含了设备信息等

web端:通过启动webdriver不同的浏览器类,获取driver,如webdriver.Chrome(),也可以模拟手机端加载wap页面做wap页面测试

七、关于元素的属性
app端:查找到元素以后,查看元素对象,发现里边基本上只有元素的text属性,也没有相关方法修改,这个区别还是很大的,不过appium有set_value的方法,目前还没有尝试,用的还是send_keys().

web端:web端简直就是人间天堂,比起修改,读取元素属性,比如我要获取input标签的name,我可以用get_attribute方法,也可以自行写js代码改变这些属性。

八、使用JS
app端:似乎是支持了,但是执行任何命令server端都会提示404的错误。
web端:支持非常好,因为本身Js就是负责网页交互的,所以会很方便

九、关于滑动
app端:关于滑动是会用很多的,比如页面很长,或者打开通知栏,这种需要在屏幕上滑动的,用到的还比较多。
web端:用到的比较少,之前基本上没有用到过。

十、异常
app端:需要注意的是其他apk给你带来的影响,目前没有找到很好的方式去处理这些问题,因为其他apk给你做了弹窗,比如qq异地登陆,或者短信这种推送,会影响到目前的流程。办法肯定是解决的,我个人理解,可以在出错之后对比一下是否在当前apk,如果不再的话则进入当前apk再做一次相关操作。
web端:很少影响,可以边跑用例边聊QQ,当然我只是举个例子,总之个人体会就是影响比较小,因为浏览器的driver完全只是控制浏览器,别的地方和它无关。

软件测试流程

  1. 制定测试策略
    首先测试策略,当用户提出新的需求时,测试人员应该和开发人员一起做测试需求分析,一般我们都会通过会议的形式去进行讨论分析,这样测试人员会对测试需要有个大概的了解,需要是干什么的,包括哪些功能等等,而不至于什么都不清楚不了解。

  2. 制定测试计划
    大概了解需求内容之后,要对整个测试进行预期评估,包括计划要测试哪些方面的功能,要计划分配哪些人员参与到测试中,哪些人负责哪个模块,以及按照交叉测试的方法,同时还要计划要测试的开始和结束时间,便于掌握这个测试进展等等。

  3. 编写测试用例
    测试计划规范之后,则是进行测试用例的编写,测试用例的编写,主要围绕界面模块而展开,如界面包括哪些按钮,按钮操作是否可以正常进行,其次围绕功能来设计,然后根据不同的场景来设计,对于测试过程中,出现的缺陷问题,要在将缺陷问题记录到测试用例“测试结果”一列,便于查找测试项测试任务情况。

  4. 形成测试报告
    测试用例执行之后,对于测试过程中发现的缺陷问题,要汇报自己的测试情况并且测试中的缺陷反馈到测试工具中,便于开发人员解决,对于安排的不同模块的负责人在测试自己对应模块任务时,也要及时汇报自己的测试工作进度,便于测试小组掌握测试的整个进度。

  5. 测试总结及文档编写
    按照测试用例执行完所有的测试任务,且开发人员修复完来所有的bug问题(不包含一些难以修复但不紧急的问题)测试人员需要编写针对本次项目的测试总结,要在总结中说明,测试计划是否按照如期执行,总测试缺陷数据多少,测试覆盖了多少等等。

同时文档人员要针对本次项目开发新增加的功能进行项目“升级日志”和“帮助手册”任务的编写,便于用户了解并能够快速上手使用新增的功能。

web测试常见的测试场景

下面从页面,页面元素,功能,提示信息,容错性,权限,键盘操作部分讲述常见的测试点。

1. 页面部分

  1. 页面清单是否完整(是否已经将所需要的页面全部列出来了)
  2. 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是否显示)
  3. 页面在窗口中的显示是否正确,美观(在调整浏览器窗口大小时,屏幕刷新是否正确)
  4. 页面特殊效果(如特殊字体效果,动画效果是否显示)
  5. 页面特殊效果显示是否正确

2. 页面元素部分

  1. 页面元素清单(为实现功能,是否将所需要的元素全部都列出来,如按钮,单选框,复选框,列表框,输入框等)
  2. 元素是否显示(元素是否存在)
  3. 元素是否正确(针对文字,图形,签章等)
  4. 元素的外形,摆放位置是否合理(如按钮,单选框,复选框,列表框,输入框等)
  5. 元素基本功能是否实现(如文字特效,动画特效,按钮,超链接等)
  6. 元素的容错性列表(如输入框,时间列表或日历)
  7. 元素的容错性是否正确或存在

3. 功能部分

  1. 数据初始化是否执行
  2. 数据初始化是否正确
  3. 数据处理功能是否执行或正确
  4. 数据保存是否执行或正确
  5. 是否对其他功能有影响
  6. 如果影响其他功能,系统能否做出正确的反应
  7. 对模块的具体功能进行测试时可以列出功能模块所有的功能,进行排列组合,测试所有情况
  8. 查询功能分2种–验证操作结果, 打开网页时自动显示结果,则不需要特别强调;需要手工操作进行查询,则每次在其他功能完成后进行

4. 提示信息

  1. 成功,失败提示
  2. 操作结果失败
  3. 确认提示
  4. 危险操作,重要操作提示
  5. 返回页面提示后显示的页面

5. 容错性

  1. 为空,非空
  2. 唯一性
  3. 字长,格式
  4. 数字,邮编编码,电话,电子邮件,ID号,密码
  5. 日期,时间
  6. 特殊字符(对于数据库),英文单词,单双引号

6. 权限部分

  1. 功能:指定用户可以使用哪些功能,不能使用哪些功能
  2. 数据:指定用户可以处理哪些数据,不可以处理哪些数据
  3. 操作:在逻辑关系上,操作前后顺序,数据处理情况
  4. 权限变化

7. 键盘操作

  1. Tab键
  2. 上下方向键
  3. Enter键
  4. 系统设定快捷键

问题:什么是性能测试,什么是负载测试,什么是压力测试?

参考答案:
性能测试:性能测试是和功能测试相对应的,根据用户场景进行的单个用户操作,是属于功能测试领域,主要是验证软件是否可以满足用户的功能需求,比如,单个用户使用系统,系统各项功能是否满足用户的需求。
如果把这一个用户的操作放大,变为100个,1000个,10000个用户同时操作软件,验证软件系统是否满足用户需求,那么这个就是软件性能测试。通常使用性能测试工具对软件开展并发的访问,同时监控系统各项指标,比如CPU,内存,网络,磁盘等关键部件的使用情况,性能测试是负载测试,压力测试,并发测试的统称。

负载测试: 通过逐步加压的方式类确定系统的处理能力,确定系统能承受的各项阀值。

压力测试: 逐步增加负载,使系统某些资源达到饱和、极限甚至失效的测试,目的是用来发现系统的软件业务处理能力,系统硬件的极限处理能力等。

网站作为一款web端软件,是测试小伙伴们测试产品的重要组成部分,拿到一个网站,不知道怎么测试?那么按照下面10大安全问题依次寻找。

性能测试这种测试方式在发生的过程中,其中一个过渡性的工作,就是对执行过程中的问题,进行定位,对功能的定位,对负载的定位,最重要的,当然是问题中说的“瓶颈”,接触性能测试不深,更非专家,自己的理解,瓶颈产生在以下几方面:

  1. 网络瓶颈,如宽带,流量等形成的网络环境
  2. 应用服务器瓶颈,如中间件的基本配置,CACHE等
  3. 系统瓶颈,这个比较常用,应用服务器,数据库服务器以及客户机的CPU,内存,硬盘等配置
  4. 数据库瓶颈,以oracle为例,SYS中默认的一些参数设置
  5. 应用程序本身瓶颈,这个是测试过程中最需要去关注的,需要测试人员和开发人员配合执行,然后定位逐步细化分析,先可以监控一些常用衡量CPU,内存,磁盘的性能指标,进行综合分析,然后根据所测试系统具体情况,进行初步问题定位,然后确定更详细的监控指标来分析。

怀疑内存不足时:
方法一:
【监控指标】:Memory Available Mbytes, Memory的Pages/sec, page read/sec, Page Fault/sec
【参考值】:如果 Page Reads/Sec比率持续保持为5 ,表示可能内存不足。
Page/Sec推荐00-20(如果服务器没有足够的内存处理器工作负荷,此数值将一直很高,如果大于80,表示有问题)

方法二:
根据Physical Disk 值分析性能瓶颈
【监控指标】:Memory Available MBytes ,Pages read/sec,%Disk Time 和 Avg.Disk Queue Length
【参考值】:%Disk Time建议阈值90%
当内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。

怀疑内存泄漏时
【监控指标】:Memory Available MBytes ,Process\Private Bytes和Process\Working Set,PhysicalDisk/%Disk Time
【说明】:
Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏,内存泄漏应该通过一个长时间的,用来研究分析当所有内存耗尽时,应用程序反应情况的测试来检验。

  1. 不安全的加密存储
    常见的问题是不安全的密钥生成和储存、不轮换密钥和使用弱算法。使用弱的或者不带salt的哈希算法来保护密码也很普遍。外部攻击者因访问的局限性很难探测这种漏洞,他们通常必须首先破解其他东西以获得需要的访问。
  2. 传输层保护不足
    在身份验证过程中没有用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听,或使用过期或者配置不正确的证书。
  3. 登录信息提示
    用户登录提示信息会给攻击者一些有用的信息,作为程序的开发人员应该做到对登录提示信息的模糊化,以防攻击者利用登录得知用户是否存在
  4. 重复提交请求
    程序员在代码中没有对重复提交请求做限制,这样就会出现订单被多次下单,帖子被重复发布,恶意攻击者可能利用此漏洞对网站进行批量灌水,致使网站瘫痪
  5. 网页脚本错误
    访问者所使用的浏览器不能完全支持 页面里的脚本,形成“脚本错误”,也就是网站中的脚本没有被成功执行,遇到“脚本错误”时,一般会弹出一个非常难看的脚本运行错误警告窗口

H5如何测试?

它跟安卓APP与iOS App有什么样的区别呢?
&我们以往的app是使用原生态系统内核的,相当于直接在系统上操作,是我们传统意义上的软件,更加稳定

& H5的app先得调用系统的浏览器内核,相当于是在网页中进行操作,较原生app稳定性稍差,似乎还没有百万级用户量的H5app

&H5最大的优点是可以跨平台,开发容易,app的话需要用android的语言和iOS的语言各自写,H5只要开发一套

&简单来说:H5是基于web,native基于客户端

H5测试应该从哪些方面考虑?

  1. 业务逻辑相关
    除基本的功能测试之外,H5页面的测试,需要关注以下几点:
    1.1登陆
    目前H5与native各个客户端都做来互通,所以大家在测试的时候要注意两点:
    a)若客户端已登录,那么进入H5后仍然是登录状态
    b)若客户端未登录,进入H5,点击对应按钮OR链接
    如果需要登录,须拉起native登录;
    若取消登录,是否可再次拉起登录,或者停留在页面是否有对应的登录提示。
    1.2翻页
    遇到翻页加载的页面,需要注意内容为1页或者多页的情况;
    a)数据分页加载时,注意后续页面请求数据的正确
    ps:这个需要注意在快操作场景中,请求页数是不是依次递增,快速操作。
    (如第一页尚未loading出来的时候仍然继续上拉操作)时是否发出对应的请求了。
    1.3刷新与返回
    A、下拉刷新是否仍然处于当前页面
    B、用户主动点击刷新按钮是否仍然处于当前页面
    C、点击返回与back键,回退页面是否是期望页面

你可能感兴趣的:(软件测试)