【原创整理】软件测试自我记录(目前携程+招银网络科技)

1.如何分析一个水杯。
分别从:需求、功能度、界面、安全性、可靠性、兼容性、易用性、用户手册是否详细、疲劳测试、压力测试、震动测试来说。

2.为什么选择软件测试这一行业。
肯定不能说自己编程能力不行所以选择测试之类的,先说软件测试在整个系统上线的过程中都十分的重要,然后想在这里锻炼自己。

3.UI测试。
测试用户界面的功能模块的布局是否合理,整体风格是否一致和各个控件的放置位置是否符合客户使用习惯,更重要的是要符合操作便捷,导航简单易懂,界面中文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等等。
但是我的面试官在我说完页面是否美观之后,问我这个美观是谁来评判的,开发人员说他好,测试人员说不美呢?我说是需求里面的,针对用户群体。他又问,这个用户群体的需求又是怎么确定的呢?我说了采用调查问卷的形式,但是他好像不满意。

4.当你的程序有问题的时候你怎么处理。(https://www.cnblogs.com/TsingLo/p/4523096.html)这里有详细的信息,以下是简略的概述。
1.了解症状:首先出bug了,确定症状发生的时间,业务场景,涉及用户(when,where,who,what)
2.查看异常日志及其上下文:
3.分析异常日志定位问题代码,问题数据
1) 如果是业务日志,搜索全局业务代码,搜索框架代码,如果涉及底层的开源的,将日志google和百度之,或者咨询相关人士。
2) 找到该条日志所在路径,定位出问题的代码模块,这样可以缩小搜索代码的范围,搜索相应的代码(业务代码,框架代码,开源代码)定位代码中异常日志打印位置,并且可以看看问题时间上下都打印了哪些日志,根据问题代码跟踪日志的上下文。
3) 找到问题代码之后,从下往上回溯,分析各种引起异常的可能。
4) 某一个线上bug出现可能跟刚上线的代码相关,跟业务变更相关,跟异常数据相关,跟大量处理请求相关,跟大数据相关。
所以一旦出bug,分析上述相关因素是否会引起该异常(最近是否有代码变更,是否上游有业务变更,是否有大量请求,是否有异常数据等)。如果没有日志,尽量将问题进行复现。(没日志或者问题不可复现的可能性基本都比较低)
4.复现问题:
如果问题能够复现,则在开发机上根据猜想打日志,根据日志找到问题的症结—问题复现的关键在于找到问题数据
如果是系统问题,比如cpu使用率过高,内存过高,队列过长等
cpu使用率过高,首先top定位是哪个程序或者代码引起的问题,再看看当时的业务数据。
如果内存过高,也是使用top定位问题代码,同时看看相应的业务数据。
分析程序是io密集还是cpu密集,若是cpu密集看load和进程调度(上下文切换数,中断数等),io密集看磁盘io和网卡流量。内存不足的时候看swap换入换出,磁盘不足看磁盘空间。
如果队列过长,要么是消耗慢,要么是写入快所以才产生堆积。消耗慢或者写入的时候会不会打日志,若会看看日志。写入快可以看看上游写入数据的增长情况,消耗慢看看下游消耗数据的速度,接入下游服务或者下游服务是否出现什么问题。

5.当你访问网站出现500的错误的时候你怎么检查。
先看服务进程,查看日志。
1.数据库异常:
①.检查数据库是否能够连得上
②.数据库相关配置是否正确
③.检查swagger(不知道swagger可以点击:https://blog.csdn.net/sanyaoxu_2/article/details/80555328),看swagger页面是否能够正常访问,后台接口能够正常获取诗句哭的只是。
④.检查主从数据库是否一致
⑤.是否初始化。
⑥.数据库的磁盘空间是否满了(不一定会报500,但是页面加载不出来)
⑦.并不是所有成员操作都有权限,查看服务日志。
2.域名异常
看该服务的域名是否丢失,无法访问到正确的ip
3、/etc/hosts没有配置解析
4、logout的 URL配置问题,网站的退出登录时,页面直接500
在首页退出登录,本来应该是界面回到最初的登录界面,但是退出登录之后,界面直接就是一串500的报错。于是查看tomcat下应用里面的inputs参数,检查log out这里对应的URL链接地址。换成正确的地址之后,500错误解决
5、memcached异常,页面登录,报500
在前端是加了memcached的,在登录页面输入用户名和密码登录,进去之后发现不是网站的首页,而是页面直接就是500的报错信息,报错信息还写了time out等等,其中注意到报错里面有两个IP地址,经核实,正是memcached的IP地址,于是查看memcached服务,确认是memcached服务异常引起的。

6.HTTPS的加密过程发生在哪里。
这里写图片描述
由图可以知道,加密过程发生在TCP三次握手之后,http请求发送之前。

以上是携程的部分题,还会问实习,问项目,还问了一个QQ聊天界面测试设计。


以下是招银科技的。好气了,刚才写的忘记保存了又全部重新写了。
1.索引的优缺点。
优点:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
创建:
在经常需要搜索的列上,可以加快搜索的速度;
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
在经常用在连接的列上,这 些列主要是一些外键,可以加快连接的速度;
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
在经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

2.python手动异常。
可以使用raise
详细请看:https://blog.csdn.net/skullfang/article/details/78820541

    class jingeError(Exception):
        pass
    try:
        raise jingeError("自定义异常")
    except jingeError as e:
        print(e)

3.C++的存储类型。
一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。
二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。

4.数据库事物的特性(常问!)
⑴ 原子性(Atomicity)
  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
⑵ 一致性(Consistency)
  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
⑶ 隔离性(Isolation)
  隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
⑷ 持久性(Durability)
  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

猜你喜欢

转载自blog.csdn.net/m0_37915414/article/details/82657234