软件测试常见问题二

app测试的工具

功能测试自动化
a) 轻量接口自动化测试
jmeter,
b) APP UI层面的自动化
android:UI Automator Viewer,Android Junit,Instrumentation,UIAutomator,
iOS:基于Instrument的iOS UI自动化,
性能测试
a) Web前端性能测试
网络抓包工具:Wireshark
网页文件大小
webpagetest
pagespeed insight
chrome adb
b) APP端性能测试
Android内存占用分析:MAT
iOS内存问题分析:ARC模式
Android WebView性能分析:
iOS WebView性能分析
c) 后台服务性能测试
负载,压力,耐久性
可拓展性,基准
工具:apacheAB,Jmeter,LoadRunner,
专项测试
a) 兼容性测试
手工测试:操作系统,分辨率,rom,网络类型
云平台:testin,脚本编写,Android。
b) 流量测试
Android自带的流量管理,
iOS自带的Network
tcpdump抓包
WiFi代理抓包:Fiddler
流量节省方法:压缩数据,json优于xml;WebP优于传统的JPG,PNG;控制访问的频次;只获取必要的数据;缓存;
c) 电量测试
基于测试设备的方法,购买电量表进行测试。
GSam Battery Monitoe Pro
iOS基于Instrument Energy工具
d) 弱网络测试
手机自带的网络状况模拟工具
基于代理的弱网络的模拟:
工具:windows:Network Delay Simulator
Mac:Network Link Conditioner

bug的周期,以及描述一下不同类别的bug

1、New:(新的)
当某个“bug”被第一次发现的时候,测试人员需要与项目负责人沟通以确认发现的的确是一个bug,如果被确认是一个bug,就将其记录下来,并将bug的状态设为New
2、Assigned(已指派的)
当一个bug被指认为New之后,将其反馈给开发人员,开发人员将确认这是否是一个bug,如果是,开发组的负责人就将这个bug指定给某位开发人员处理,并将bug的状态设定为“Assigned”
3、Open(打开的)
一旦开发人员开始处理bug的时候,他(她)就将这个bug的状态设置为“Open”,这表示开发人员正在处理这个“bug”
4、Fixed(已修复的)
当开发人员进行处理(并认为已经解决)之后,他就可以将这个bug的状态设置为“Fixed”并将其提交给开发组的负责人,然后开发组的负责人将这个bug返还给测试组
5、Pending Reset(待在测试的)
当bug被返还到测试组后,我们将bug的状态设置为Pending Reset”
6、Reset(再测试)
测试组的负责人将bug指定给某位测试人员进行再测试,并将bug的状态设置为“Reset”
7、Closed(已关闭的)
如果测试人员经过再次测试之后确认bug 已经被解决之后,就将bug的状态设置为“Closed”
8、Reopen(再次打开的)
如果经过再次测试发现bug(指bug本身而不是包括因修复而引发的新bug)仍然存在的话,测试人员将bug再次传递给开发组,并将bug的状态设置为“Reopen”
9、Pending Reject(拒绝中)
如果测试人员传递到开发组的bug被开发人员认为是正常行为而不是bug时,这种情况下开发人员可以拒绝,并将bug的状态设置为“Pending Reject”
10、Rejected(被拒绝的)
测试组的负责人接到上述bug的时候,如果他(她)发现这是产品说明书中定义的正常行为或者经过与开发人员的讨论之后认为这并不能算作bug的时候,开发组负责人就将这个bug的状态设置为“Rejected”
11、Postponed(延期)
有些时候,对于一些特殊的bug的测试需要搁置一段时间,事实上有很多原因可能导致这种情况的发生,比如无效的测试数据,一些特殊的无效的功能等等,在这种情况下,bug的状态就被设置为“Postponed“
不同类别的bug:
Bug类型
• 代码错误
• 界面优化
• 设计缺陷
• 配置相关
• 安装部署
• 安全相关
• 性能问题
• 标准规范
• 测试脚本
• 其他

敲重点,作为一个通信人,认为下面这是一个很重要的基础问题!!!
说一说PC网络故障,以及如何排除障碍

(1)首先是排除接触故障,即确保你的网线是可以正常使用的。然后禁用网卡后再启用,排除偶然故障。打开网络和共享中心窗口,单击窗口左上侧“更改适配器设置”右击其中的“本地连接“或”无线网络连接”,单击快捷菜单中的“禁用”命令,即可禁用所选网络。接下来重启网络,只需右击后单击启用即可。
(2)使用ipconfig查看计算机的上网参数
1、单击“开始|所有程序|附件|命令提示符“,打开命令提示符窗口
2、输入ipconfig,按Enter确认,可以看到机器的配置信息,输入ipconfig/all,可以看到IP地址和网卡物理地址等相关网络详细信息。
(3)使用ping命令测试网络的连通性,定位故障范围
在命令提示符窗口中输入”ping 127.0.0.1“,数据显示本机分别发送和接受了4个数据包,丢包率为零,可以判断本机网络协议工作正常,如显示”请求超时“,则表明本机网卡的安装或TCP/IP协议有问题,接下来就应该检查网卡和TCP/IP协议,卸载后重装即可。
(4)ping本机IP
在确认127.0.0.1地址能被ping通的情况下,继续使用ping命令测试本机的IP地址能否被ping通,如不能,说明本机的网卡驱动程序不正确,或者网卡与网线之间连接有故障,也有可能是本地的路由表面收到了破坏,此时应检查本机网卡的状态是否为已连接,网络参数是否设置正确,如果正确可是不能ping通,就应该重新安装网卡驱动程序。丢失率为零,可以判断网卡安装配置没有问题,工作正常。
(5)ping网关
网关地址能被ping通的话,表明本机网络连接以及正常,如果命令不成功,可能是网关设备自身存在问题,也可能是本机上网参数设置有误,检查网络参数。

说一说你知道的自动化测试框架(测试框架这块是时候该好好学学了!!!)

1、模块化测试框架
模块化测试脚本框架(TEST MODulARITY FRAMEWORK)需要创建小而独立的可以描述的模块、片断以及待测应用程序的脚本。这些树状结构的小脚本组合起来,就能组成能用于特定的测试用例的脚本。在五种框架中,模块化框架是最容易掌握和使用的。在一个组件上方建立一个抽象层使其在余下的应用中隐藏起来,这是众所周知的编程技巧。这样应用同组件中的修改隔离开来,提供了程序设计的模块化特性。模块化测试脚本框架使用这一抽象或者封装的原理来提高自动测试组合的可维护性和可升级性。
2、测试库框架
测试库框架(Test Library Architecture)与模块化测试脚本框架很类似,并且具有同样的优点。不同的是测试库框架把待测应用程序分解为过程和函数而不是脚本。这个框架需要创建描述模块、片断以及待测应用程序的功能库文件。
3、关键字驱动或表驱动的测试框架
对于一个独立于应用的自动化框架,关键字驱动(KEYWORD DRIVEN)I9LJJ试和表驱动(TABLE DRIVEN)测试是可以互换的术语。这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具,并可以用来“驱动"待测应用程序和数据的测试脚本代码,关键宇驱动测试看上去与手工测试用例很类似。在一个关键字驱动测试中,把待测应用程序的功能和每个测试的执行步骤一起写到一个表中。这个测试框架可以通过很少的代码来产生大量的测试用例。同样的代码在用数据表来产生各个测试用例的同时被复用。
4、数据驱动测试框架
数据驱动(DATA DRIVEN),LJ试是一个框架。在这里测试的输入和输出数据是从数据文件中读取(数据池,ODBC源,CSV文件,EXCEL文件,ADO对象等)并且通过捕获工具生成或者手工生成的代码脚本被载入到变量中。在这个框架中,变量不仅被用来存放输入值还被用来存放输出的验证值。整个程序中,测试脚本来读取数值文件,记载测试状态和信息。这类似于表驱动测试,在表驱动测 试中,它的测试用例是包含在数据文件而不是在脚本中,对于数据而言,脚本仅仅是一个“驱动器”,或者是一个传送机构。然而,数据驱动测试不同于表驱动测试,尽管导航数据并不包含在表结构中。在数据驱动测试中,数据文件中只包含测试数据。这个框架意图减少需要执行所有测试用例所需要的总的测试脚本数。数据驱动需要很少的代码来产生大量的测试用例,这与表驱动极其类似。
5、混合测试自动化(Hybrid Test Automation)框架
最普遍的执行框架是上面介绍的所有技术的一个结合,取其长处,弥补其不足。这个混合测试框架是由大部分框架随着时间并经过若干项目演化而来的

请你说一说web测试和app测试的不同点

系统架构方面:
web项目,一般都是b/s架构,基于浏览器的
app项目,则是c/s的,必须要有客户端,用户需要安装客户端。
web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。
性能方面:
web页面主要会关注响应时间
而app则还需要关心流量、电量、CPU、GPU、Memory这些。
它们服务端的性能没区别,都是一台服务器。
兼容方面:
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容
app测试则要看分辨率,屏幕尺寸,还要看设备系统。
web测试是基于浏览器的所以不必考虑安装卸载。
而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 。
此外APP还有一些专项测试:如网络、适配性。

怎么测试网络协议

协议测试包括四种类型的测试
1、一致性测试:检测协议实现本身与协议规范的符合程度
2、互操作性测试:基于某一协议检测不同协议实现间互操作互通信的能力
3、性能测试:检测协议实现的性能指标,比如数据传输速度,连接时间,执行速度,吞吐量,并发度,
4、健壮性测试:检测协议是现在各种恶劣环境下运行的能力,比如注入干扰报文,通信故障,信道被切断

给一个字符串,怎么判断是不是ip地址?手写这段代码,并写出测试用例
IP的格式:(1~255).(0~255).(0~255).(0~255)
方法一:基于对字符串的处理
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String ipStr = scanner.next();
boolean isIpLegal = isIpLegal(ipStr);
if(isIpLegal) {
System.out.println(ipStr + " 合法");
}
else{
System.out.println(ipStr + " 非法");
}
}
public static boolean isIpLegal(String str){
//检查ip是否为空
if(str == null){
return false;
}
//检查ip长度,最短为:x.x.x.x(7位),最长为:xxx.xxx.xxx.xxx(15位)
if(str.length() < 7 || str.length() > 15){
return false;
}
//对输入字符串的首末字符判断,如果是"."则是非法IP
if(str.charAt(0) == '.' || str.charAt(str.length()-1) == '.'){
return false;
}
//按"."分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP
String[] arr = str.split("\\.");
if(arr.length != 4){
return false;
}
//对分割出来的每个字符串进行单独判断
for(int i = 0; i < arr.length; i++){
//如果每个字符串不是一位字符,且以'0'开头,则是非法的IP,如:01.002.03.004
if(arr[i].length() > 1 && arr[i].charAt(0) == '0'){
return false;
}
//对每个字符串的每个字符进行逐一判断,如果不是数字0-9,则是非法的IP
for(int j = 0; j < arr[i].length(); j++){
if (arr[i].charAt(j) < '0' || arr[i].charAt(j) > '9'){
return false;
}
}
}
//对拆分的每一个字符串进行转换成数字,并判断是否在0~255
for(int i = 0; i < arr.length; i++){
int temp = Integer.parseInt(arr[i]);
if(i == 0){
if (temp < 1 || temp > 255){
return false;
}
}
else{
if(temp < 0 || temp > 255){
return false;
}
}
}
return true;
}
方法二:正则表达式
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String ipStr = scanner.next();
boolean isIpLegal = isIpLegal(ipStr);
if(isIpLegal) {
System.out.println(ipStr + " 合法");
}
else{
System.out.println(ipStr + " 非法");
}
}
public static boolean isIpLegal(String ipStr) {
String ipRegEx = "^([1-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))(\\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))){3}$";
Pattern pattern = Pattern.compile(ipRegEx);
Matcher matcher = pattern.matcher(ipStr);
if (matcher.matches()) {
return true;
} else {
return false;
}
}


测试用例:
等价类划分:
有效可用的IP地址:
A类 1.0.0.0 -126.255.255.254
A私有 10.0.0.0 -10.255.255.254
B类 128.0.0.0 -191.255.255.254
B私有 172.16.0.0 -172.31.255.254
C类 192.0.0.0 -223.255.255.254
C私有 192.168.0.0-192.168.255.254
windows自动分配 169.254.0.0-169.254.255.254
有效但不可用的IP地址:
D 224.0.0.0 -239.255.255.254
E 240.0.0.0 -255.255.255.254
全网 0.x.x.x, x.x.x.0
广播 x.x.x.255
回环 127.0.0.0 -127.255.255.254
输入 结果
64.11.22.33 有效可用
10.12.13.14 有效可用,不能直接访问公网
151.123.234.56 有效可用
172.20.123.56 有效可用,不能直接访问公网
192.127.35.65 有效可用
192.168.128.128 有效可用,不能直接访问公网
169.254.15.200 有效可用,不能直接访问公网
224.1.2.3 有效不可用,超过有效范围(D类)
250.11.22.33 有效不可用,超过有效范围(E类)
0.200.3.4 有效不可用,全网地址
64.11.22.0 有效不可用,全网地址
10.12.13.255 有效不可用,广播地址
127.50.60.70 有效不可用,回环地址

请进行测试用例设计:一串数字,闰年的判别
判断闰年的标准是:能整除4且不能整除100,能整除400。设定合法的年份为1-9999
public class Test2 {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
int year=in.nextInt();
if(year<=0||year>9999)
{
System.out.println("请输入正确的年份");
}
if((year%4==0&&year%100!=0)||year%400==0)
{
System.out.println("闰年");
}else
{
System.out.println("不是闰年");
}
}
}

测试用例:

测试用例 |输入| 预期输出
被 4 整除, 但是不被100 整除的年份 |2008| 闰年
被 4 整除, 同时被100 整除的年份,且被 400 整除的年份 |2000| 闰年
被 4 整除, 同时被100 整除的年份,但是不被400 整除的年份 |1900| 不是闰年
偶数, 不被4 整除的年份 |2022| 不是闰年
奇数年份 |1999| 不是闰年
年份大于9999 |10000| 请输入正确的年份
年份小于0 |0| 请输入正确的年份

说一说简单用户界面登陆过程都需要做哪些分析

一、功能测试
1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。
2.输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息。
3.登录成功后能否能否跳转到正确的页面
4.用户名和密码,如果太短或者太长,应该怎么处理
5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况
6.记住用户名的功能
7.登陆失败后,不能记录密码的功能
8.用户名和密码前后有空格的处理
9.密码是否非明文显示显示,使用星号圆点等符号代替。
10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使 用者),刷新或换一个按钮是否好用
11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确
12.输入密码的时候,大写键盘开启的时候要有提示信息。
13.什么都不输入,点击提交按钮,检查提示信息。
二、界面测试
1.布局是否合理,testbox和按钮是否整齐。
2.testbox和按钮的长度,高度是否复合要求。
3. 界面的设计风格是否与UI的设计风格统一。
4. 界面中的文字简洁易懂,没有错别字。
三、性能测试
1.打开登录页面,需要的时间是否在需求要求的时间内。
2.输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内。
3.模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转。
四、安全性测试
1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)。
2.用户名和密码是否通过加密的方式,发送给Web服务器。
3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript 验证。
4.用户名和密码的输入框,应该屏蔽SQL注入攻击。
5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)。
6.防止暴力破解,检测是否有错误登陆的次数限制。
5. 是否支持多用户在同一机器上登录。
6. 同一用户能否在多台机器上登录。
五、可用性测试
7. 是否可以全用键盘操作,是否有快捷键。
8. 输入用户名,密码后按回车,是否可以登陆。
9. 输入框能否可以以Tab键切换。
六、兼容性测试
1.不同浏览器下能否显示正常且功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)。
2.同种浏览器不同版本下能否显示正常且功能正常。
3.不同的平台是否能正常工作,比如Windows, Mac。
4.移动设备上是否正常工作,比如Iphone, Andriod。
5.不同的分辨率下显示是否正常。
七、本地化测试

  1. 不同语言环境下,页面的显示是否正确。
请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示

参考答案 功能:
1.每个摄像头都能抓拍车牌;
2.每个摄像头抓拍到的车牌能正常交给系统处理;
3.系统能够正确识别车牌;
4.系统能够将识别出的车牌上传;
5.上传至网络的车牌能够正常展示出来;
一、功能测试
1.使用正常的车牌,保持车牌静止,检查每个摄像头是否能抓拍车牌;
2.使用类似非车牌的写有字的纸板,检查每个摄像头是否抓拍;
3.使用正常的车牌,保持车牌较高速移动,检查每个摄像头是否能抓拍车牌;
4.在多种情况下检查每个摄像头抓拍到的车牌能否正常交给系统处理,如临时断电、断网后能否正常将数据交给系统;
5.使用抓拍到的正常的车牌,交由系统处理,检查系统能否识别车牌;
6.使用非车牌的其他图片,交由系统处理,检查系统能否识别;
7.在多种情况下检查系统能否将正常识别出的车牌进行上传,如临时断电、断网后未上传数据是否能继续上传;
8.构造非车牌的其他内容的数据,检查系统能否将异常内容进行上传;
9.检查上传至网络的车牌能否正常展示出来;
10.上传非车牌的其他内容的数据,检查能否正常显示出来。
二、性能测试
1.同时向一个摄像头展示多个静止的车牌,检查摄像头能否抓拍到多个车牌;
2.同时向一个摄像头展示多个较高速运动的车牌,检查摄像头能否抓拍到多个车牌;
3.抓拍后,检查系统识别车牌的时间是否在需求要求的时间内;
4.模拟大量抓拍照片同时交由系统处理,检查一定压力下系统能否正常识别车牌;
5.模拟大量车牌同时上传,检查一定压力下能否上传成功。
三、安全性测试
1.检查是否能够通过给车牌加装饰物等方法,使摄像头无法抓拍或抓拍后系统无法正常识别车牌。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值