回顾上一篇博客主要内容: 用例篇
如何根据需求去设计测试用例?
- 验证需求的正确性,合理性,无二义性,逻辑自洽
- 分析需求,细化需求,从需求中提出测试项,根据测试项找到测试点,根据测试点去具体的设计测试用例
根据需求设计测试用例分为哪两个方面?
功能性和非功能性
- 功能性
界面的所有功能不能遗漏(从上到下,重左到右)
把功能串起来,形成场景或者业务,对场景和业务进行测试
一个功能的多个输入要进行测试
功能的异常数据输入,异常操作进行测试- 非功能性
可靠性,易用性,容错性,兼容性,可移植性,性能,安全,可维护性
不同类型的软件,非功能性测试的侧重点是不一样的
大型商用软件(淘宝,微信,微博等),客户端安装的软件,B/S 企业内部使用的软件,Word,office(单机安装)
具体的设计测试用例的方法有哪些?
等价类,边界值,场景法,错误猜测法,因果图法,正交法
用户是通过界面和软件之间进行交互的,界面设计的好坏,直接影响了用户对软件的映像。
界面测试(简称UI测试),指按照界面的需求(一般是UI设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查,一般包括如下内容:
可靠性指软件正常运行的能力,软件正常运行的时间和总体运行的时间的百分比。
可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%
影响软件可靠性的因素: 网络,软件环境(安装),硬件环境,软件自身,环境的异常都会使得软件运行异常
不同的软件对可靠性要求不一样,非实时性软件可靠性要求一般为 99.99% ,99.95%(邮件系统)
特殊软件对可靠性就很高,99.999%(军事系统)
如果可用性达到99.99%,对于一个全年不间断(7*24的方式)运行的系统,意味着全年(252600min)不能正常工作的时间只有52min,不到一个小时。
如果可用性达到99.999%,意味着全年不能正常工作的时间只有5min。
怎样测试软件的可靠性?
一个周,出现故障的时间记下来,去计算百分比
系统发生异常,或者由于错误操作导致软件系统发生错误,软件自我消化掉错误,或者进行修改,不让客户知道,叫做系统的容错性。
- 常见的容错性处理
数据容错性:
取款机输入小于 100 的钱数 (给出提示)时间: 25时70分这样、年月日: 二月份 30号这样,其他月份 32号(都给出提示)
校验容错性:
前后空格(自动化过滤);校验大小写字母(验证码:自动转化为大小写),同一个表格或文件前后的信息校验(身份证,学号,自动前后校验)
界面容错性:
复杂操作的提示,危险操作的提示;危险按钮的屏蔽
环境容错性:
软件所在的环境发生故障,软件有备用方案;可以让用户无感知切换。(网络,电,硬件环境,软件部署的软件环境)- 灾难恢复测试
人为让系统发生故障,看系统自身,对于用户数据的存储和回复是否快速
软件开发的相关文档的测试。
文档测试的关注点:
软件自身的兼容性
软件前后的兼容性,软件开发的新功能不能影响旧功能的使用,不能够影响后续功能的开发软件对于数据的兼容性(用户数据)
设计功能的时候,要考虑用户已有的数据软件对应用平台的兼容性(安装软件的环境,硬件环境,APP,浏览器)
APP / IOS / Android 不同品牌手机 ,不同型号,web 不同浏览器,不同浏览器在不同的电脑设备上软件对于第三方软件或者第三方软件数据的兼容性(相关软件)
淘宝 / 支付宝 / 微博 / 第三方登录
就是用户的体验测试
标准性和规范性
界面上的各种信息应该符合规范和习惯,否则用户使用起来会不舒适,并得不到用户的认可。测试人员需要把与标准规范,习惯不一致的问题报告为缺陷直观性
用户期望的操作在用户可见的范围之内灵活性
键盘: 九宫格、全键盘、手写、拼音舒适性
实用性
安全性指信息安全,软件保护用户的数据,隐式,以及数据传输过程的安全性,防止病毒侵入和黑客攻击。
对于安全性测试,可以有代码走读,工具检测的方式
系统性能问题的表现:
资源泄漏;资源分配不均衡;线程死锁;查询速度越来越慢;响应越来越慢
性能指标:
TPS(每秒事务处理量),每秒HTTP请求数,点击率,吞吐量,响应时间,CPU和资源利用率
内存泄漏产生的原因:
程序中写的有问题,没办法回收内存;API 函数使用不正确,无法回收内存;分配内存后,忘记回收内存。
检查代码是否资源泄漏:
人工检查,工具检查
不去关心代码内部的逻辑结构,不去查看代码,只关心软件功能的外部的输入和输出是否满足用户的需求(相当于把软件的内部实现屏蔽掉了)
优点:
黑盒测试的方法:
等价类、边界值、场景法、因果图、错误猜测法、正交法
查看代码是否规范,代码的风格是否和公司设计一致,分析代码的逻辑结构,对代码进行测试,看代码是否实现了需求.
既关心软件功能的输入输出,也关心软件内部程序的实现
特点:
值得是对软件组成的最小的单元进行测试,查看测试单元的功能是否正常
按照一定的逻辑和策略把单元模块组合在一起,形成一个具有完成功能的大模块。
对软件系统进行全面的功能和非功能测试
当系统引入了新代码的时候,测试人员往往需要验证新的代码对旧的功能产生的影响,所做的测试就叫回归测试。(增加新功能的时候 -> 修改BUG)
在软件开发完成后,要对软件的基础功能和核心流程进行测试,测试通过之后,才可以进入正式的测试环境,如果测试不通过,测试人员有权利打回,让开发重新修改直到冒烟成功。
回归测试和冒烟测试都属于系统测试。
软件上线前的最后一次测试,也称为交付测试。
在 β 测试之前进行的
把用户或者非测试和开发的人请到开发现场进行测试;
测试环境:开发现场
测试人员:非开发和测试的人
让实际用户在实际使用环境中进行测试,测试完成后对问题进行统一汇总反馈
α 测试和 β 测试的区别:
测试环境不同;测试时间集中程度不同;α 测试优先 β 测试的
是软件第三方测评机构,按照软件行业的标准规范对软件进行测试
不运行代码,检查代码的风格,格式是否符合公司的规范标准,检查代码的逻辑结构是否满足需求需要实现的功能。
运行代码,给程序响应的输入,看是否得到期望的输出
大多数软件测试工作都属于动态测试。
按照测试用例,手工去测试系统的功能
缺点:
量大容易出错;效率低;有些极端情况无法测试到
优点:
进行探索性测试,比较灵活
机器按照认为设定好预设条件运行,这些预设包括正常的异常的,去检查软件系统有没有符合设定的条件。
自动化测试把手工测试用例转化为脚本运行。
软件国际化:进行软件设计和开发的时候,使用一种工程技术,使得软件在转化为不同的国家语言的时候,可以不用修改源码,适应不同的语言,不同国家人民的风俗习惯等(苹果手机 , 华为手机 ,office , Word)
具体到某一个国家,上面讲的全是本地化测试