1、测试用例的编写
测试用例常见的设计方法有:等价类划分法、边界值分析法、错误推测法、判定表法、正交实验法、因果图
一、等价类划分法
等价类划分法就是将测试的范围划分为几个互不相交的子集,他们的并集是全集,从每个并集中选出若干个有代表性的值为测试用例。大致分为两类:有效等价与无效等价,等价类的划分,最关键的是子集的划分。
等价类划分 | 有效等价类 | 针对被测对象而言你,合理的、有意义的、系统接受的输入 | 例如输入系统用户名,规定为8位数字组成的字符之间,则任意8位数的字符组合都为有效等价 |
无效等价类 | 针对被测对象而言,不合理的、无意义的、系统不能接受的输入 | 而无效等价列举若干个子集:空集、1-7个字符的数字组合、9及以上的数字组合、非数字(!!@#$)(还可以继续分为字母和特殊字符) |
二、边界值分析法
边界值是对等价类划分法的一种补充,大量的经验数据表明边界是问题多发区,而如果边界测试没有问题则认为内部区域发生问题的概率较小。(边界值测试的优先级相对较高)
相关术语:
(1)上点:落在边界上的点
(2)离点:离边界最近的点(若是闭区间,离点在边界外;若是开区间,离点在边界内)
(3)内点:落在边界内的任意点
例1 某家商场招聘营业员数量为20~30(包括20和30)
上点:20;30(有效) 离点:19;31(无效) 内点:25
例2 购买台式机要求(10,25)
上点:10;25(无效) 离点:11;24(有效) 内点:15
三,错误推测法
该方法主要基于测试经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例。该方法并非是一项有章可循的工程设计方法,而是很大程度上依赖测试人员的经验、能力以及态度。因此使用该方法通常是在使用完其他方法设计测试用例后,再使用错误推测法补充用例。
例如, 输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。
四、判定表法
又名策略法,基于策略表的测试,是功能测试中最严密的测试方法。简明并可以避免遗漏
该方法适用于逻辑判断复杂的场景,通过穷举条件获得结果,对结果再进行优化合并,得到一个判断清晰的策略表。
举例说明
打印机与打印文件
条件桩 | A1:驱动是否正常 | 动作桩 | B1:成功打印内容 |
A2:是否有纸张 | B2:提示驱动程序出错 | ||
A3:是否有墨 | B3:提示没有纸 | ||
B4:提示没有墨 |
根据3个条件桩和4个动作桩,所以有2*2*2=8列 (1表示为是,0表示为否)
解释如下:当A1,A2,A3都为1是表示打印机一切正常,于是实现动作B1,即成功打印内容
当A1表示为0,而其他条件正常,A1代表驱动是否正常,但0为否,因此最后动作B2显示为1,以此类推
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
条件A1(驱动是否正常) | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
条件A2(是否有纸张) | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
条件A3(是否有墨) | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
动作B1(成功打印内容) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
动作B2(提示驱动程序出错) | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
动作B3(提示没有纸) | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 |
动作B4(提示没有墨) | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
由此整体的判定表生成,再在此基础上简化,即根据最后动作相同将条件归类
根据整体的判定表,第1,2,(3,5,7,8),(4,6)列的结果可归为4类
1 | 2 | 3\5\7\8 | 4\6 | |
条件A1(驱动是否正常) | 1 | 0 | - | - |
条件A2(是否有纸张) | 1 | 1 | 0 | 1 |
条件A3(是否有墨) | 1 | 1 | - | 0 |
动作B1(成功打印内容) | 1 | 0 | 0 | 0 |
动作B2(提示驱动程序出错) | 0 | 1 | 0 | 0 |
动作B3(提示没有纸) | 0 | 0 | 1 | 0 |
动作B4(提示没有墨) | 0 | 0 | 0 | 1 |
最后根据优化后的判定表编写测试用例
用例序号 | 输入操作 | 预期输出 |
1 | 当打印机驱动正常,拥有纸张和墨的情况 | 打印机成功打印内容 |
2 | 当打印机纸张正常,墨正常,而驱动不正常时的情况 | 打印机会提示驱动程序出错 |
3 | 无论打印机驱动是否正常,是否有墨,只要没有纸张的情况 | 打印机会提示没有纸 |
4 | 无论打印机驱动是否正常,在纸张正常却没有墨的情况 | 打印机会提示没有墨 |
五,正交实验法
基本思想:使用已拥有的数据表格来安排使用并进行数据分析,以表格化的形式取出代表性的实验进行用例设计
基本概念:因素(Factor):在一项测试中,凡要考察的变量称之为因素(变量)
水平(Level):在测试范围内,因素被考察的值为水平(变量取值)
行数(Runs):正交表中行的个数,即实验次数
因素数(Factors):正交表中列的个数
水平数(Levels):任何单个因素能够取得的值的最大个数,正交表中包含的值从0到“水平数-1”或者从1到“水平数”
正交表的表示形式:L行数(水平数^因素数)
使用场景:正交实验法整适用于当输入数据的组合数量巨大的情况,可以合理的减少测试人力跟时间成本,多应用于软件产品的搜索、查询等场景中。
举例说明
三因素二水平的实验:某公司想通过“性别”、“单身”和“年龄”这三个查询条件对公司男女比例情况进行查询:
根据“性别”=“男,女”查询
根据“单身”=“是,否”查询
根据“年龄”=“30 岁以下、30 岁以上”查询
按全面实验要求,须进行2^3=8种组合的实验。而每一行为一条测试用例。
若根据现有正交表中各类N阶的正交表,使用时直接进行数据代入,方便快捷,可通过以下网址地址即可查询
✔ Technical Support(support.sas.com)
✔ 网址地址:http://support.sas.com/techsup/technote/ts723_Designs.txt
✔ 查Dr. Genichi Taguchi设计的正交表
✔ 网址地址:https://www.york.ac.uk/depts/maths/tables/orthogonal.htm
根据此案例而言,选择L4(23)正交表实验
由此可见从一开始的8条测试用例,利用正交表后只需测试4次,减少了工作量,以此类推,若是数据组合庞大的情况会极大的减少工作量。
六、因果图
因果图是一种描述输入条件的组合以及每种组合对应的输出的图形化工具。在因果图的基础上可以设计测试用例。通常情况下,因果图会与判定表结合使用。
因果图法包括很多输入条件与输出条件,因果图法用线和不同的符号将输入和输出之间的因果关系、约束关系进行标记,形成一张网状图,对此我们称之为因果图法。
因果图四种关系(左输入右输出,c为原因,e为结果)
1)恒等:原因结果同时出现,若c1是1,则e1也是1;否则e1为0.
2)非~:原因出现,结果不出现;原因不出现,结果出现。若c1是1,则e1是0;否则e1 是1;
3)或V:原因只有一个出现,结果就出现;原因都不出现,结果就不出现。
若c1或c2或c3是1,则e1是1;否则e1为0。“或”可有任意个输入
4)且/与^:原因都出现,结果才出现。若c1和c2都是1,则e1为1;否则e1为0。
举例说明
某游戏有酷爽夏日运营活动,酷爽夏日活动设立了一个自动售货机,售货机里售卖饮料、与啤酒,对其采用因果图方法设计测试用例。需求如下:
(1)若售货机没有零钱找,则一个显示 “零钱找完”的红灯亮,以提示顾客在此情况下不要投入1元钱,否则此红灯不亮。
(2)顾客投入5角硬币,然后按下“橙汁”或“啤酒”按钮,则相应的饮料被送出。
(3)顾客投入1元硬币并按下“橙汁”或“啤酒”按钮后,若售货机没有零钱找,则显示“零钱找完”的红灯亮,1元硬币被退出,且无饮料送出;若有零钱找,则五角硬币被退出且饮料被送出。
首先根据需求列举出原因:
其次根据原因列举出结果:
接着根据策划案需求设置中间节点:
根据列出的原因、结果以中间节点进行结合画出对应因果图:
2号与3号不能够同时出现,投入硬币的操作为互斥关系,4号与5号操作也不能够同时出现,同为互斥关系
将因果图转成判定表:
在构成的判定表中,原因、中间节点、结果的取值为0表示其代表的状态不出现;为1表示状态出现。
中间节点与结果没有值,代表因违反约束而不会出现的情况,16、32列没有做任何操作,8、12、24、28列不符合常理(投币却没有选择饮料)为无效列,14、15、30、31列不符合常理(只选择饮料却没投币)为无效列。
根据剩余列进行用例设计:
除此之外,还要结合现实情况考虑其他特殊问题进行优化一下用例情况。
2、从哪些方面设计测试用例
功能性、兼容性、易用性、可靠性、性能、安全
给你一个水杯你会怎么测试
功能测试:主要关注水杯基本功能
1.1 水杯是否可以正常装水
1.2 水杯是否可以正常喝水
1.3 水杯是否有盖子,盖子是否可以正常盖住
1.4 水杯是否有保温功能,保温功能是否正常保温
1.5 水杯是否会漏水,盖住盖子拧紧后是否会漏水
界面测试:主要关注水杯外观、颜色、设计等方面
2.1 外观是否完整
2.2 外观是否舒适
2.3 颜色搭配及使用是否让人感到舒适
2.2 杯子外观大小是否适中
2.3 杯子是否有图案,图案是否易磨损
易用性测试:主要关注水杯使用是否方便
3.1 水杯喝水时否方便
3.2 水杯拿起放下是否方便,这里会衍生到水杯形状的测试
3.3 水杯装水是否方便
3.4 水杯携带是否方方便
3.5 水杯是否有防滑功能
3.6 水杯装有低温或者高温水时,是否会让手感到不适
性能测试:
4.1 水杯装满水时,是否会露出来
4.2 水杯最大使用次数
4.3 水杯的保温性是否达到要求
4.4 水杯的耐寒性是否达到要求
4.5 水杯的耐热性是否达到要求
4.6 水杯掉落时时,是否可以正常使用
4.7 水杯长时间放置时,是否会发生泄露
兼容性测试:主要关注水杯是否可以装其他液体,如果汁、汽油、酒精等可
移植性测试:主要关注水杯放置环境等
6.1 将水杯放在常温环境中,使用是否正常
6.2 将水杯放在零下的环境中,使用是否正常
6.3 将水杯放在高于正常温度的环境中,使用是否正常
安全性测试:主要关注水杯外观和各种异常条件下是否释放有毒物质等
7.1 当水杯装满热水时,水杯是否会烫手
7.2 当水杯装上水后,是否会产生有毒物质
7.3 把水杯放在零下环境时,是否会产生有毒物质
7.4 把水杯放在高温环境时,是否会产生有毒物质
3、SQL语言(详细可点击)
select distinct 去重,返回唯一不同的值
where
运算符 | 描述 |
= | 等于 |
<> / != | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
Between A and B | 在A~B范围内 |
Llke | 模糊查询%|_|[ ]|?|# |
IN | 指定多个可能性中的一个 |
例1,查询name字段中包含有“明”字的。
select * from table1 where name like ‘%明%’
例2,查询name字段中以“李”字开头。
select * from table1 where name like '李’
例3,查询name字段中含有数字的。
select * from table1 where name like ‘%[0-9]%’
例4,查询name字段中含有小写字母的。
select * from table1 where name like ‘%[a-z]%’
例5,查询name字段中不含有数字的。
select * from table1 where name like ‘%[!0-9]%’
order by 排序(asc|desc)
insert into 插入数据
limit 指定位置指定行数
连接查询
内连接查询
#在from中使用inner join....on关键字
SELECT s.`StudentName`,r.`StudentResult` ,r.`SubjectNo`FROM student s
INNER JOIN result r ON s.`StudentNo`=r.`StudentNo`
外连接查询(左|右|自)
#左连接
SELECT s.`StudentName`,r.`StudentResult` ,r.`SubjectNo`FROM student s
LEFT JOIN result r ON s.`StudentNo`=r.`StudentNo`
#自连接
#创建一个表
CREATE TABLE book(
id INT(10),
sort INT(10),
books VARCHAR(10) NOT NULL
);
#插入数据
INSERT INTO book VALUES (2,1,'古文书'),
(3,1,'现代书'),
(4,2,'《三字经》'),
(5,2,'《唐诗三百首》'),
(6,3,'《我与地坛》'),
(7,2,'《游大林寺》'),
(8,2,'《王右军年减十岁时》'),
(9,3,'《致橡树》');
#查询结果为:
#书籍类型 书籍名
#古文书 三字经....
#现代书 我与地坛....
SELECT a.books 书籍类型, b.books 书籍名
FROM book a,book b
WHERE a.id=b.sort;
4、基础Linux命令
file:file通过探测文件内容判断文件类型,使用权限是所有用户。
主要参数 | 解释 |
-v | 在标准输出后显示版本信息,并且退出 |
-z | 探测压缩过的文件类型 |
-l | 允许符合连接 |
mkdir:mkdir命令作用是建立子目录,与MS DOS下的md命令类似,使用权限是所有用户。
主要参数 | 解释 |
-m(mode) | 设定权限模式 |
-p(parents) | 需要是创建上层目录,若目录存在则不当作错误 |
-v(verbose) | 每次创建新目录都显示信息 |
-v(version) | 显示版本信息后离开 |
grep:grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。
主要参数 | 解释 |
-c | 只输出匹配行的计数 |
-i | 不区分大小写(只适用于单字符) |
-h | 查询多文件时不显示文件名 |
-l | 查询多文件时只输出包含匹配字符的文件名 |
-n | 显示匹配行及行号 |
-s | 不显示不存在或无匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
find:find命令的作用是在目录中搜索文件,使用权限是所有用户
主要参数 | 解释 |
-depth | 使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容 |
-maxdepth levels | 表示至多查找到开始目录的第level层子目录。level是一个非负数,若level=0表示仅在当前目录中查找 |
-mindepth levels | 表示至少查找到开始目录的第level层子目录 |
-mount | 不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找 |
-version | 查询版本 |
- 测试相关流程:需求测试 -> 概要设计测试 -> 详细设计测试 -> 单元测试 -> 集成测试 -> 系统测试 -> 验收测试
- 基本数据结构:链表、栈、数组、队列、树
-
HTTP协议请求
请求 | 解释 |
GET | 对服务器资源的简单请求 |
POST | 发送包含用户提交数据的请求 |
HEAD | 类似于GET请求,不过返回的响应中没有具体内容,用于获取报头 |
PUT | 用来传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求的URL指定位置 |
DELETE | 与PUT相反,用来删除文件,按照请求删除指定的资源 |
TRACE | 让服务器将之前的请求通信环返回给客户端 |
CONNECT | 与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信 |
- HTTP响应状态码
200 | 从客户端发来的请求在服务器端被正常处理了 |
204 | 服务器接收的请求已被成功处理,但在返回的响应报文中不包含实体的主体成分 |
206 | 客户端向服务器成功请求指定范围的实体内容 |
301 | 请求的资源已经被永久的移动到新的URI,以后新的请求应该使用新的URI代替 |
302 | 跳转,重定向 |
303 | 请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源 |
400 | 客户端请求的语法错误,服务器无法理解 |
401 | 请求需要有通过HTTP认证的认证信息 |
403 | 服务器拒绝提供服务 |
404 | 请求资源不存在 |
500 | 服务器内部错误,无法完成请求 |
503 | 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求 |
- https与http区别
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,HTTP协议不适合传输一些敏感信息
HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
- TCP三次握手
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
为什么不是两次: 在服务端对客户端的请求进行回应(第二次握手)后,就会理所当然的认为连接已建立,而如果客户端并没有收到服务端的回应呢?此时,客户端仍认为连接未建立,服务端会对已建立的连接保存必要的资源,如果大量的这种情况,服务端会崩溃。
- TCP与UDP区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等) 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
-
Vector的特性
vector特点是: 其容量在需要时可以自动分配,可以在运行时高效地添加元素,本质上是数组形式的存储方式。即在索引可以在常数时间内完成。缺点是在插入或者删除一项时,需要线性时间。但是在尾部插入或者删除,是常数时间的。