系统测试
1 测试阶段:(单元测试—集成测试—系统测试—验收测试)
单元测试
测试对象:函数内部代码结果
测试方法:白盒测试的方法,静态测试为主
考察范围:单元内部的数据结构、逻辑控制以及异常处理等等
集成测试
测试对象:模块、接口
测试方法:灰盒测试的方法,动态测试
考察范围:模块和模块之间接口互相数据传递的关系,以及模块整合后的整体的功能
系统测试
测试对象:软件、软件+硬件、系统
测试方法:黑盒测试为主的方法,动态测试
考察范围:确保系统是满足用户的需求的,符合需求规格说明书中的要求
需求分类:显性需求 ---- 需求规格说明书中明确提出来的
隐性需求 ---- 需求规格说明书中没有明确指出来的
法律、法规、标准、协议、行业规范中明确指出来
用户的使用的习惯/UI测试标准
用户当地的风俗习惯
验收测试
2.测试流程:计划—设计—实现—执行
计划 ---- 测试计划 设计 ---- 测试方案
实现 ---- 测试用例 执行 ---- 执行测试用例,测试报告
学习目标:
1、掌握什么是系统测试
2、熟悉系统测试的测试流程
3、掌握常见的系统测试的类型
1.系统测试的概念:
将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机的硬件、外设、某些支持的软件、数据、人员等其他系统元素结合在一起,在实际运行环境下对计算机系统进行一系列的测试活动。
备注:系统测试的被测试对象有可能是软件也有可能是硬件,同时还需要考虑和其他软件的支持,或其他人员的使用等
2.熟悉系统测试的测试流程:计划–设计–实现–执行
计划:
编写测试计划
编写测试计划的人员:测试经理、项目的测试负责人,其他项目的成员也会参与,但是其他成员参与的不深。
测试计划一般一天左右就可以完成,写之前需要做一些协调的工作,还需要项目的其他员工进行协助,供测试经理、项目测试的负责人参考
写测试计划之前的准备:
1> 了解需求
2> 了解被测试软件
3> 了解项目计划
4> 了解开发计划
系统测试计划的核心内容:(5W1H)
why ---- 为什么测试?
测试的目的:证明软件是符合需求的
what ---- 测试的范围?
明确测试的版本,或每个版本中需要测试的范围
when ---- 明确测试工作的时间范围。
明确测试工作的起止时间
明确每个阶段的起止时间
明确每个任务的起止时间
例如:整体出行的时间(端午节 6.25~6.27)
每个阶段的起止时间(出发 玩 返回)
每个人物的起止时间(景点1 吃饭 景点2 吃饭 休息 ……)
who ---- 参与测试工作的人员
明确人员的投入(数量、经验、成本)
工作经验几年比较受欢迎?(3~5)
where ---- 在哪里测试?环境
开发环境 ---- 开发人员,写代码,一般不作为测试的环境
测试环境 ---- 至少要保证测试人员有一套独立的测试环境
功能测试环境
性能测试环境(尽可能模拟用户的真实环境)
安全测试环境
真实环境 ---- 生产环境、现网环境(用户使用的环境)
how ---- 如何测试
测试方法、测试工具、测试工作的标准(结束的标准)
系统测试计划的作用:
得到领导的认可 ---- 领导认可了宏观的调控,得到相应的资源配置
测试人员 ---------- 了解这个项目的测试情况、了解不同阶段所需要进行的测试工作、了解我自己需要完成的测试工作、QA等其他相关的人员
设计:
编写测试方案
编写人员:技术、经验比较丰富的人员来完成
写测试方案之前的准备:
1> 了解需求
2> 了解被测试软件
3> 了解测试计划
内容:提取测试项(测试点、测试特性)、测试方法、明确如何进行测试
C:\Windows\System32\drivers\etc\hosts
172.21.2.165 localhost
系统测试方案的作用:指导测试工作的开展
实现:
编写测试用例
编写人员:测试工程师,但是初级测试工程师不会写测试用例
依据测试方案来编写测试用例。
测试方案已经写的很细致,还需要些测试用例吗?熟悉需求、熟悉被测试软件。
结合提取的测试项,按照公司测试用例的模板,来编写测试用例。
八大要素:编号、标题、测试项、预置条件、输入、测试步骤、预期结果、重要级别
练习:根据自己提取的测试项,编写oscommerce网站注册功能的测试用例。
执行:
1.搭建测试环境:(LAMP)
L ---- Linux,操作系统,免费、开源、多用户、多并发、稳定、安全
A ---- apache,web服务,源码安装(配置、编译、安装),免费、开源
tomcat,web服务,绿色免安装
M ---- mysql,数据库,免费、开源
oracle,数据库
P ---- PHP,开发语言
python、java、C#
被测试对象 ---- 开发人员转出来的测试包(模块的发布 python setup.py build/install/sdist) ---- (.tar.gz)
2.准备测试数据:
预测试:(等)
在开发的环境上,将高优先级的用例优先执行(冒烟测试)
预测试发现的bug不会提交缺陷报告,在excel表格中记录。
转系统测试:
评审,在组内评审,判断是否达到转系统测试的条件。
需要发邮件,邮件中包含转测试的需求、修改的缺陷。
3.部署测试环境,执行测试用例:
发现bug,提交缺陷报告,跟踪缺陷报告,回归测试。
积极主动的向上级汇报工作,主动推动问题的解决。
汇报的形式:晨会、周例会(半周例会)、月度会议、邮件、PPT
测试报告:
测试的结论(通过/不通过)
数据来支撑测试的结论(用例数、缺陷数、执行率、测试类型……)
总结做的好的地方和不好的地方
遗留的问题(致命、严重不可以遗留),风险、规避的措施
评审:
每一个步骤完成后都需要评审(计划、方案、用例、报告)
如果评审完有问题则需要修改,修改完成后还需要再次评审。
变更:
需求变更、用例变更
3.常见的系统测试的类型:
功能测试:
就是对产品的各项功能进行验证,根据功能测试的用例,逐项测试,检查产品是否达到用户的要求。
需要从需求、业务等多个角度来进行测试(金融、财务、医疗、物流、电商……)
功能测试的目标:找出功能实现错误的,与用户需求不相符;
找出功能实现遗漏的,少实现了某些功能;
是否实现了系统设计中隐含的需求;
行业俗成的规定、站在用户的角度挖掘隐性需求
找出功能实现多余,也就是实现了需求规格说明书中没有提出的需求;
很多人都会觉得功能测试没有技术含量,但事实上来说,功能测试才是重头。
性能测试:(重要)
就是对应质量模型中的效率(时间、资源利用率)
性能测试就是测试软件系统匹配性能需求的能力。
性能测试过程中关注的性能指标:
响应时间:2-5-8(10)原则,指系统对请求作出相应的时间。(及格线5s)
不是最快的也不是最慢的,而是平均的时间。
并发用户数:指系统可以同时承载的正常使用系统的用户数。
不断往上加
不是用户的总数,而是同时使用的用户数(同时对服务器产生压力)
吞吐量:指系统在单位时间内处理请求的数量。
单位时间通常以s来计算,结果值很大。
硬件的资源利用率:CPU的使用率、内存的占用率、I/O磁盘的读写速率
APP测试性能的关注项:
手机端的资源利用率、手机端的CPU的使用率、手机端的磁盘的读写速率、
APP的启动速度、滑动的速度、耗电量、流量的消耗
性能测试的分类:
容量测试:需求文档中要求的最大容量的性能测试,检查系统是否可以满足需求中的要求
负载测试:在不同的负载下查看系统的运行情况的测试
压力测试:不断加压,看系统在什么情况下崩溃
工作过程中的性能测试:
有性能需求(有性能的指标)
没有性能需求
基准测试
性能测试的工具:
loadrunner ---- HP公司研发(QTP loadrunner QC)
jmeter -------- 免费的、开源
GUI测试:关注人机界面的测试
关注整体的风格:
1> 颜色的使用
2> 排版布局(对齐、重要信息在前、和设计原型保持一致、不拥挤)
3> 初始焦点的位置
4> TAB键切换的位置(按照页面元素排版的顺序从上到下,从左到右)
关注单个元素的样式:
文本输入框:输入的回显(字体、大小、颜色)、输入框的大小(最好把最多的内容全部显示完,看整体的布局)
密码输入框:输入的回显(掩码)、输入框的大小、不可以复制和粘贴
单选框:有一个默认的初始值、勾选和取消勾选、不能同时选择、大小不关注默认即可
复选框:是否有/需要设置初始值、勾选和取消勾选、可以同时选择多个、大小不关注默认即可
下拉列表:是否有初始值、下拉列表的内容(排序、多少、长短)、下拉列表的大小
超链接:状态、鼠标移动上去、点击后的颜色、点击超链接后跳转的页面是否和目标页面一致
易用性测试:关注用户的体验
主观性比较强,没有绝对的标准,和开发人员的分歧比较多。
对应质量模型中易用性(易理解、易学习、易操作、吸引性-白富美、高富帅)
关注点:
能让用户选择的就不要让用户输入
菜单级别,最好不要超过三层
键盘快捷方式的使用
提供导航功能
提供帮助手册
提供提示信息
易用性测试标准不会写在需求文档中,一般都是按照行业标准来。
兼容性测试:测试软件在特定的硬件平台上,在不同的操作系统上、不同的应用软件之间、不同的浏览器中、不同的网络环境中测试软件是否可以很好的运行
主要测试的内容:
操作系统的兼容:C/S
浏览器的兼容:B/S,浏览器的内核(IE CHROME)
应用软件的兼容:flash
操作系统语言的兼容:
分辨率的兼容:
备注:完全的兼容性测试是无法完成,通常挑选优先级比较高的用例来执行
app的兼容性的测试:
android:版本、手机屏幕的大小
IOS:版本
安全测试:测试系统受到恶意攻击时,系统的自我防御能力,自我保护的能力。
从功能上考虑一些安全性:
1> 是否有防爆力破解机制
2> 是否有超时验证的机制
3> 是否有越权登录
4> 是否使用https协议
5> 用户的数据必须保存在服务器端进行校验
6> 修改密码的时候需要验证旧密码
7> 密码必须符合一定的复杂度(大写、小写、数字、特殊符号)
8> 密码输入框不可以复制、剪切和粘贴
9> 密码在保存和传输的过程中需要加密
可靠性测试:指系统怎么用都不会出问题,或出了问题可以很快恢复。
随机测试:无规律的使用软件
异常测试:断电、断网、闪退等异常情况下,系统能否快速恢复,或关注恢复的程度和耗时。
稳定性测试:测试系统在一定负荷的前提下,长时间运行的情况
负荷:数据库中有数据、软件在执行一些动作、长时间操作
两种方式:固定的负荷、负荷发生变化
时间:n*24小时
可能发现的问题:内存泄漏、数据前后不一致(从量变到质变的过程)
文档测试:测试所负责模块相关的文档
关注文档的正确性和可用性
正确性:错别字、标点符号、专业性、截图、语法
可用性:实际的指导意义