百度校招二面挂,突然又收到通知让面开发测试岗,只有一晚上准备测试内容。临时抱佛脚,不少问题果然问到。记录如下。
相关概念
测试过程
测试过程包括五大部分,分别为:单元测试、集成测试、确认测试、系统测试、验收测试。
黑盒
在完成完成后关注程序功能是否符合需求,是否能适当地接收输入数据、产生正确的输出信息。
白盒
在开发中关注代码运行的效率和结果。
在设计测试用例时,有用到过哪些方法?
黑盒测试:等价类,边界值,因果图,功能划分,错误猜想。。。
白盒测试:语句覆盖,分支覆盖,逻辑覆盖。。。
单元测试
对软件中最小可测单元进行检查和验证。
C语言单元指一个函数、JAVA单元指一个类。
集成测试
在单元测试的基础上,将所有模块安装设计需求组装成子系统或者系统,进行集成测试。
实践表明,一些模块虽然能够单独工作,但并不能保证连接起来也能正常工作。一些局部上反映不出来的问题,在全局上可能暴露出来。
系统测试
将已确认的软件与计算机硬件、外设、网络等所有元素结合在一起,进行系统的各种组装测试和确认测试。验证系统是否满足需求规格,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
数据库
锁
类型、粒度、应用场景
类型
共享(S)锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放。
排它(X)锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放。
更新(U)锁:更新锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。
使用共享锁时,修改数据的操作分为两步:
首先获得一个共享锁,读取数据;
然后将共享锁升级为排它锁,然后再执行修改操作。
这样如果同时有两个或多个事务同时对一个事务申请了共享锁,在修改数据的时候,这些事务都要将共享锁升级为排它锁。这时,这些事务都不会释放共享锁而是一直等待对方释放,这样就造成了死锁。
如果一个数据在修改前直接申请更新锁,在数据修改的时候再升级为排它锁,就可以避免死锁。
粒度
锁是具有粒度的,即可以对不同的资源加锁。
锁定的粒度包括 行、页、扩展盘区、表、库等。
锁定在较小的粒度的资源(例如行)上可以增加系统的并发量但需要较大的系统开销,从而也会影响系统的性能,因为锁定的粒度较小则操作可能产生的锁的数量会增加;
锁定在较大的粒度(例如表)就并发而言是相当昂贵的,因为锁定整个表限制了其它事务对表中任意部分进行访问,但要求的开销较低,因为需要维护的锁较少。
什么时候用行锁什么时候用表锁
对于InnoDB表,在绝大部分情况下都应该使用行级锁,因为事务和行锁往往是我们之所以选择InnoDB表的理由。但在个别特殊事务中,也可以考虑使用表级锁。
第一种情况是:事务需要更新大部分或全部数据,表又比较大,如果使用默认的行锁,不仅这个事务执行效率低,而且可能造成其他事务长时间锁等待和锁冲突,这种情况下可以考虑使用表锁来提高该事务的执行速度。
第二种情况是:事务涉及多个表,比较复杂,很可能引起死锁,造成大量事务回滚。这种情况也可以考虑一次性锁定事务涉及的表,从而避免死锁、减少数据库因事务回滚带来的开销。
测试要点
正确性、可用性、边界条件、性能、压力测试、错误恢复、兼容性、安全性。
测试用例
微信朋友圈
1.是否可以正常点赞和取消;
2.点赞的人是否在可见分组里;
3.点赞状态是否能即时更新显示;
4.点赞状态,共同好友是否可见;
5.不同手机,系统显示界面如何;
6.性能检测,网速快慢对其影响;
7.点赞显示的是否正确,一行几个;
8.点赞是否按时间进行排序,头像对应的是否正确;
9.是否能在消息列表中显示点赞人的昵称、备注;
10.可扩展性测试,点赞后是否能发表评论;
11.是否在未登录时可查看被点赞的信息。
自动贩卖机
金额刚够,顺利出货
金额超出,找零出货
金额超出, 没钱找零,出货
金额不足,进行提示,把货币退出
金额足够,取消交易
假币,不出货
扫码支付
1,通过网银充值10元(标题) 然后请自己描述详细操作步骤
预期结果 支付宝帐户中增加10元(前提是不考虑网络延时,或各网银的出帐延时)
2,通过网银充值时 网银余额不足
预期结果 充值失败 不影响支付宝中帐户金额
3,通过网银充值时,在任意操作步骤中(建议是最后一步)取消该服务
预期结果 充值失败 不影响支付宝中帐户金额
4,充入0元 (基本上不会同意充0的操作的吧)
预期结果 充值失败 提示输入大于0的金额
5,充入n元(N= 支付宝每次限制的最大充值金额)
预期结果 支付宝帐户中增加n元
6 充入N+1元 (与第5条一样,都是边界值法。但是要分开写成两条)
预期结果 充值失败/提示金额大出限制
百度首页测试
界面测试
文字、按钮、图标等大小显示正常,风格一致,整体美观自然。
功能测试
百度首页呈现的功能:新闻,网页,贴吧,知道,音乐,图片,视频,地图,这8个是最主要的;
紧接着次要的百科,文库,hao123,更多;
除此之外就是把百度设为主页,安装百度浏览器,加入百度推广,关于百度等等;
和用户相关的还有登录,注册。
边界条件测试
- 用例说明: 最小输入值为0个字时。
输入: 不输入文字,直接按搜索。
预期结果: 页面刷新,无变化。 - 用例说明: 百度搜索文本框内可输入的最大字数是100个汉字。
输入: 键盘输入或复制粘贴一段很长的中文进入文本框。
预期结果: 100字时不能输入或被百度自动截取其中前100个字。 - 用例说明: 百度搜索文本框的输入值在点击搜索按钮后,会被截取前38个汉字,其后面的字词均被忽略。
输入: 键盘输入或复制粘贴大于38个汉字进入搜索框。
预期结果: 按下搜索按钮,百度跳转到搜索结果页面,并提示“"××" 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内”,将被自动截取的内容复制粘贴到word,统计字数为38。 - 用例说明:任意一个中文、英文、符号、空格在输入进文本框内第一次计数时均视同一个汉字。
输入:输入或者复制粘贴任意一个中文、英文、符号、空格后输入大于38汉字。
预期结果: 第一个字符被当做汉字计算。 - 用例说明: 连续的空格在点击搜索按钮后进行搜索时会自动合并,并转化一个单独的空格。
输入: 复制粘贴38个汉字进入搜索文本框,并中间加入62个连续空格后按下搜索。
预期结果: 搜索结果里最后一个汉字被忽略,因为前面有37个汉字加1个合并后的空格长度已达38.并且在文本框里原来62个空格的位置现在显示一个空格。
兼容性测试
WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用;
IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下的应用;
SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试;
简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试;
IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试。