测试环境 = 软件 + 硬件 + 网络
硬件包括:PC机、笔记本、服务器、各种终端等
软件包括:操作系统、兼容性
搭建测试环境
1、真实:尽量模拟用户的真实使用环境。项目软件只针对某一群体的用户,测试环境较单一;产品软件针对的是广大群众,测试环境较复杂,要多方面考虑。
2、干净:尽量不要安装与被测软件无关的软件
3、无毒
4、独立:测试环境与开发环境相互独立,避免造成干扰。
1、二八原则:80%的bug在分析、设计与评审阶段就能被指正发现与修正,16%的缺陷在系统的软件测试中发现,4%是用户长期使用过程中被发现。
有80%的缺陷是由于20%的模块造成的,应花费更多时间及测试在缺陷较多的模块上。
2、测试的标准建立在用户需求之上。
3、尽可能早的开展测试,越早发现错误,修改的代价就越小。
4、发现错误较多的程序段,应进行更深入的测试。
5、项目一旦启动,软件测试就开始。
6、对错误结果要进行一个确认的过程(测试的详细数据,截图,前置条件等)。
7、妥善保管测试过程中的所有文档。
计划 -> 需求分析 -> 设计 -> 编码 -> 测试 -> 运行/维护
回归测试:指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
1、需求评审(需求可执行性、异常情况处理)
2、测试计划(测试目的、测试背景、测试范围、测试人员分配、测试开始结束时间、测试策略、测试进度安排等)
3、编写测试用例(各种方法)
4、用例评审(review)
5、提测
6、codediff(查找代码改动,明显的测试代码,比如写固定值、return等)
7、执行测试用例
8、提bug
9、追踪bug进行回归测试
10、验收测试
11、发布、上线。
12、最后可以进行bug的总结。
接口功能测试工具:postman、httprequester、jemter。
功能自动化工具:qtp、robot
代码管理工具:git、svn
1、什么是性能测试
指被测系统在一定的负载下运行,监控系统的各项指标(响应时间、cpu、内存等)是否符合需求。
2、http协议(http和https协议、get/post、怎么组成、状态码)
3、TCP三次握手、四次挥手
4、进程、线程区别联系
5、内存泄漏、内存溢出
6、死锁
1、自动化测试脚本的应用场景
2、自动化框架的搭建,包含哪些模块(接口自动化、功能自动化)
3、怎么设计测试用例,注意哪些点
4、怎么断言
1、排序算法:
冒泡排序
快排
查找算法
二分查找
队列、栈、堆实现
APP的使用场景多变,如进地铁、进电梯等都会影响手机网络信号。如果没有对网络异常进行兼容处理,很可能会遇到闪退、ANR等问题。
网络测试的要点:
a、网络功能测试:网络制式测试;WIFI/4G/3G/2G;高延时;高丢包;假热点;无网
b、无网测试:各个功能是否收到影响(会不会出现闪退、ANR的问题)
c、网络切换测试(android可以监听系统广播):WIFI->4G/3G/2G;WIFI->无网;4G/3G/2G->WIFI;4G/3G/2G->无网;4G->2G
d、弱网体验测试:响应时间、加载图标、异常反馈(提示文案、显示形式)
e、异常机制:异常信息、容错机制、超时机制、重连机制
弱网模拟测试(小于3G速率)
a、弱网测试方法
1、弱网场景测试(楼道、电梯、大巴等)2、通过软件使用网络代理,模拟不同的网络带宽、延时率、丢包率。
b、工具
1)charles弱网模拟。
2)webdriver开发者工具中的Network可以在No throttling选择模式做网络模拟。
3)IOS自带的设置–开发者选项–Network Link Conditioner可以选择进行配置。
4)fiddler,在fiddlerScript中修改m_SimulateModem为true;修改
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
修改为如下值:
static function randInt(min, max) {
return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = ""+randInt(1,2000);
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = ""+randInt(1,2000);
}
1、一台客户端由三百个客户与300个客户端有三百个客户对服务器施压,有什么区别?
1个客户端300个客户,会占用客户机更多的资源;线程之间可能发生干扰而产生异常;需要占更大的带宽;可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制;不用考虑分布式管理的问题。 用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户;同时还需要给予相应的权限配置和防火墙设置。
2、软件的安全性应从哪几个方面去测试?
包括程序、数据库安全测试。
1)明确不同用户权限、系统中会不会出现用户冲突、是否因为用户的权限改变而造成混乱
2)登录密码是否可见、可复制等。
3)用户退出之后是否删除了所有标记,是否可通过后退键重新进入系统。
4)数据加密、数据库的完整性、数据库备份和恢复能力。
3、什么是α测试、β测试?
α测试是由用户在开发环境下进行的测试,也可以是员工在模拟实际操作环境下进行的受控
测试,阿尔法测试不能由程序员或测试员完成。
β测试由软件的一个或多个用户在实际使用环境下进行的测试,开发者通常不再测试现场。
4、web页面出现空白页怎么定位问题
a.转包
b.看服务日志
c.用接口实际访问模拟请求
d.mock数据
5、web页面响应过慢怎么定位问题
1、探路人
收集整理可能会出现危险的情况,收集整理报告信息,不是决策者
2、迅速找出重要的程序问题
测试人员需要非常了解产品,首先测变更的部分和核心的功能
3、follow开发
4、多提问
5、测试人员的关注点只能在关注产品缺陷上,而不是证明产品正常。
6、不会发现所有的问题
测试人员的任务是发现并报告重要的产品缺陷,但不会发现所有的产品缺陷。
测试人员提供关于产品质量的信息,不能保证产品质量。
7、测试人员不该独立拥有控制产品发布的权利
测试只是产品质量的测试者和相关信息的提供者,而不能决定产品发布。
8、测试人员只是信息提供者而不是批评者