目录
软件测试概述
需求—方案—代码实现—执行—产出报告
软件测试指标:功能测试,性能测试,验收测试,接口测试
软件测试的指标主要是根据需求文档和行业标准而定。
功能测试的指标,完全是由需求文档确定,需求文档会有明确的说明;UI界面是由设计人员给出的效果图确定。
性能测试的指标,一般是由需求人员、开发人员、业界标准综合而定,比如某触发动作的响应时间,应该是并发10000用户的时间为2秒以内等。
验收测试的指标,一般是由客户给定。要验收哪些功能,功能的体验习惯和方式等。
接口测试的指标,主要由开发人员给定。开发设计人员提供的接口文档里会明确标明各接口对应的各种情况。
兼容性测试
先说下兼容性测试,工作中在测试时,一般涉及操作系统测试、浏览器测试、分辨率测试。
操作系统测试:使用不同操作系统对网站进行测试。最常见的有Windows、Unix、Mac、Linux等。
浏览器测试:使用不同浏览器对网站进行浏览测试。要覆盖市面最常用的浏览器,比如:谷歌、火狐、360、QQ、IE、Edge,工作中比较容易出问题的浏览器是IE、Edge,会导致一些页面元素加载不出来。
分辨率测试:使用不同的分辨率来查看网站的显示效果。比如:分辨率低时界面文字的变化。另外,我们公司是要求页面缩放在75%-125之间,页面和文字保持正常显示
安全性测试
工作中常见的安全性测试有功能性安全、业务性安全。
用户验证:登录密码验证、IP地址访问限制等。
用户超时:登录超过30分钟,重新登录(安全设置,cookie过期时间30分钟)。
用户权限管理:验证低级别用户是否具有了高级别用户的权限,各级别用户权限都得到了实现。
系统数据的保护:对例如系统文件、用户密码文件等进行隐藏、密码验证、内容加密、备份。
功能安全类 |
业务安全类 |
sql注入 |
账户、资金、数据传输,加密敏感信息脱敏 |
xss攻击(跨站脚本攻击)(脱敏,加密) |
所有权验证 |
– |
超时验证 |
– |
角色验证 |
可用性测试 & 逻辑功能测试
可用性测试、逻辑功能测试我认为在Web端测试及其重要,一般可分为:页面、页面元素、功能部分、提示信息、容错性、权限部分、键盘操作来进行测试。
页面,页面元素部分
页面清单是否显示,是否显示完整
页面在窗口中的显示是否正确、美观
页面特殊效果(如特殊字体效果、动画效果)是否显示
页面元素是否显示正确
页面元素的容错性是否存在
功能部分
数据初始化是否正确
数据操作(增删改查)是否正确
提示信息
操作页面成功、失败提示
危险操作、重要操作提示(比如删除某些重要的信息)
容错性
为空、非空,唯一性
特殊字符 、双引号,符号
权限部分
功能权限: 指定用户可以使用那些功能,不能使用那些功能
数据权限: 指定用户可以处理那些数据,不可以处理那些数据
操作权限: 在逻辑关系上,操作前后顺序、数据处理情况
黑盒测试与白盒测试
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。因此黑盒测试又叫功能测试或数据驱动测试。
白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否经过检查。
白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为”结构测试“或”逻辑驱动测试“。白盒测试是按照程序内部的结构来测试程序,通过测试检验产品内部动作是否按照设计规格说明书的要求正常进行,检验程序中的每条通道是否都按照规定正常工作。
黑盒测试主要是为了发现以下错误:
- 是否有不正确或者遗漏了的功能;
- 在接口上,输入能否正确的接受?能否输出正确的结果?
- 是否有数据结构错误或外部信息(例如数据库文件)访问错误?
- 性能上是否能够满足要求?
- 是否有初始化或终止性错误?
黑盒的测试用例技术设计有三种: 边界值分析、等价类划分、错误推测法。
等价类划分法:将测试过程中的输入、输出、操作等相似内容分组,从每组中挑选具有代表性的内容作为测试用例,划分为有效等价类和无效等价类
边界值分析法:确认输入、输出的边界,然后取刚好等于、大于、小于边界的参数作为测试用例测试;
等价类划分和边界值要一起考虑,边界值分析法属于等价类划分法的补充,任何等价区间都有边界,有边界就有等价区间
错误推测法:是根据经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例方法,一般用于软件测试的最后部分。
白盒测试主要是想对程序模块进行以下检查:
- 对程序模块的所有独立的执行路径至少测试一遍;
- 对所有的逻辑判定,取”真“与”假“的两种情况都能至少测一遍;
- 在循环的边界和运行的界限内执行循环体;
- 测试内部数据结构的有效性,等等;
- 静态白盒测试:即代码审查,正式审查和检验设计和程序代码;
- 动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;
白盒的测试用例技术包括逻辑覆盖和基本路径测试。
逻辑覆盖:是以程序内在逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。
基本路径测试:在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
软件测试的分类
单元测试
是指对软件中最小可测试单元进行检查和验证。单元测试当一段代码完成之后,是由白盒测试工程师或者开发人员自行测试,比如java中执行单元测试叫做junit测试。
目前大部分公司单元测试由开发人员简单编译和调试一下自己的程序,没有相应的单元测试计划。单元测试方式:先静态地观察代码是否符合规范,然后动态地运行一下代码,检查运行的结果
集成测试
集成测试是单元测试的下一个阶段,是指将通过测试单元模块组装成系统或者子系统,再进行测试,重点测试不同模块的接口部分。集成测试也是由白盒测试或者开发人员来完成。
系统测试和验收测试
集成测试完成之后,就是系统测试和验收测试。
系统测试:指的是将整个软件系统看做一个个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
系统测试由黑盒测试人员在整个系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境的兼容性等。
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
冒烟测试
指对一个软件进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
测试小组在正式测试一个新版本之前,先指派一两个测试人员测试一下软件的主要功能,如果没有实现,则打回开发组重新开发,这样做可以节省大量的时间成本和人力成本