计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法等等。下面是小编整理的关于计算机应用基础检测试题及答案,希望大家认真阅读!
2.语言处理程序包括:汇编程序、编译程序和( D )
3.用于科学计算的计算机其特点是高速度、大存储量、高自动化和( A )
A、高精度 B、实时性 C、低功耗 D、大量图形交互
4.为获得下一条指令的地址,CPU在取指后通常修改( A )
A、指令计数器的内容 B、指令寄存器的内容
C、指令译码器的内容 D、操作控制逻辑的内容
A、与主机相连接 B、与CPU相连接
C、与主存储器相连接 D、与I/O接口相连接
6.处理器调度程序在该程序执行过程中要控制其( C )
A、程序间的同步 B、程序间的通信
C、运行状态 D、运行时间
7.分时系统又称为( C )
A、多用户系统 B、单用户系统
C、多用户交互式系统 D、单用户交互式系统
8.当前驱动器和当前工作盘这两个概念可以( A )
A、混用 B、单独使用
C、有条件使用 D、不可混用
9.DOS启动后,被装入内存的命令是( C )
C、内部命令 D、外部命令
10.建立子目录的命令是( A )
11.设置系统日期的命令是( A )
12.将A盘上文件全部复制到B盘的正确命令是( B )
13.查看磁盘文件内命令是( A )
15.删除非空目录的命令是( B )
A、查询TEST子目录
B、进入TEST子目录
D、建立新的子目录TEST
A、环状 B、树状 C、直线状 D、星状
18.若修改文件,则该文件必须是( B )
A、可读的 B、可读写的 C、写保护的 D、读保护的
19.只显示A盘当前目录中文件主名为三个字符的全部文件的命令( B )
21.国标区位码输入方式中,区位友的长度为( C )
A、2个字符 B、不少于2个字符
C、定为4个字符 D、最多4个字符
22.在进行汉字输入时,显示屏下方显示"国标区位"、"全拼双间"、"五笔字型"等,其指示了当前使用的( D )
A、汉字代码 B、汉字库 C、汉字程序 D、汉字输入法
23.采用16×16点阵,4个汉字的字形码占存储器的字节数是( D )
24.UCDOS下进入全拼输入方式组合键是( D )
25.汉字字形码的使用是在( C )
A、输入时 B、内部传送时 C、输出时 D、两台计算机之间交换信息时
26.全角状态下,一个英文字符在屏幕上的宽度是( C )
27.根据汉字结构输入汉字的`方法是( D )
A、区位码 B、电报m C、四角码 D、五笔字型
28.汉字国标码在汉字处理系统中作为( C )
A、汉字输入码 B、机内存放码
C、汉字交换码 D、汉字输出码
29.MS-DOS与汉字操作系统的主要区别在于( A )
A、有无汉字处理系统 B、有于支持我同的WPS系统
C、用于我同的计算机 D、对内存的要求不同
30.国标码与机内码之间区别是( D )
A、在机器内所占存储单元不同
B、机内码是ASCII码,国标码为非ASCII码
C、国标码是个每个字节最高位为1,机内码每个字节最高位为1
D、机内码每个字节最高位为1,国标码则为0
二、单项选择题(每小题1分,共45分)
1、计算机的存储系统一般指主存储器和( )
A、累加器 B、寄存器 C、辅助存储器 D、鼠标器
2、下列逻辑运算中结果正确的是( )
3、下列十进制数与二进制数转换结果正确的是( )
4、动态RAM的特点是( )
A、工作中需要动态地改变存储单元内容
B、工作中需要动态地改变访存地址
C、每隔一定时间需要刷新
D、每次读出后需要刷新
5、删除当前输入的错误字符,可直接按下( )
6、显示磁盘文件目录的DOS命令是( )
7、DOS文件主名规定字符数为( )
8、DOS系统中打印机设备名是( )
A、菜单结构 B、网状结构 C、树形结构 D、环状结构
11、操作系统是一种( )
A、系统软件 B、操作规范 C、编译系统 D、应用软件
12、DOS中扩展名为.BAK的文件称为( )
A、批处理文件 B、BASIC文件 C、临时文件 D、备份文件
13、通常DOS将常用命令归属于( )
A、外部命令 B、内部命令 C、系统命令 D、配置命令
14、显示C盘根目录下B5.PRG文件内容的DOS命令是( )
15、显示磁盘卷标的DOS命令是( )
16、DOS命令DEL功能的正确描述是( )
A、一次只能删除一个读写文件
B、一次可以删除一个或多个读写文件
C、可以删除隐含文件
D、可以删除只读文件
17、把当前盘当前目录中文件(主)名以W开头、第四个字符为A的所有文件复制到B盘当前目标中,应使用的DOS命令是( )
18、DOS状态下能将样板行中所有字符一次复制到命令行上的功能键是( )
19、下列功能相同的一组DOS命令是( )
20、当前工作盘是C,将A盘中ZZu1子目录下的文件W.BAS复制到B盘u1u2下的DOS命令是( )
【2017年计算机应用基础检测试题】相关文章:
Python社区的历年都包含在Tim Peters撰写的Python之禅中, 要获悉这些有关编写优秀Python代码的指导原则,只需在解释器中执行命令import this
下图就是一个docstring,使用三对双引号(或者单引号)来声明,通过方法名.__doc__来显示(partition.__doc__)
20.了解类型注解么?
如下,分别对x,y和返回值进行了定义。
21. 例举你知道 Python 对象的命名规范,例如方法或者类等
两种,分别是单行注释#和多行注释”””这是多行注释”””。
23.如何优雅的给一个函数加注释
打完方法的冒号后回车,按仨引号回车,打文档注释。
24.如何给变量加注释
但是我感觉这好乱啊哈哈哈还是喜欢在上面另起一行注释
25.Python代码缩进中是否支持Tab键和空格混用
不支持,很多编译器实际上是将tab转换为n个空格(可设置)。
26.是否可以在一句import中导入多个库?
可以,但不推荐(PEP8标准中 提过)
27.在给py文件命名的时候应该注意什么?
28.举几个python代码风格工具:
Pylint、Black等,主要功能类似于java的那个alibaba规范脚本,检查定义符不符合规范、定义的接口是否都被使用等,在安装之后右键又一个check即可检查错误。
29.列举Python中的基本数据类型:
再放送?这和第二题有啥区别
30.如何区别可变数据类型和不可变数据类型:
32.如何检测字符串中只含数字?
这句话其实看怎么定义‘数字’,科学技术法或者+5,-5算数字吗?如果都不算,那么下面这样就可以。
如果算,需要做的就是这样:
34. Python 中的字符串格式化方式你知道哪些?
35. 有一个字符串开头和末尾都有空格,比如“ adabdw ”,要求写一个函数把这个字符串的前后空格都去掉。
36. 获取字符串”123456“最后的两个字符。
37. 一个编码为 GBK 的字符串 S,要将其转成 UTF-8 编码的字符串,应如何操作?
39.(1)怎样将字符串转换为小写 (2)单引号、双引号、三引号的区别?
单引号双引号没有区别,但是有一点,就是单引号中双引号可以,但是再使用单引号需要转义,双引号同理。三引号是docstring和多行注释。
42. 给定两个 list,A 和 B,找出相同元素和不同元素
45 如何打乱一个列表的元素?
pop在删除后返回该元素的值,del直接删除,另外二者速度上没有去很大区别(尽管del相对pop有一丢丢优势)
47. 按照字典的内的年龄排序
49. 如何使用生成式的方式生成一个字典,写一段功能代码。
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
51. Python 常用的数据结构的类型及其特性?
52. 如何交换字典{“A”:1,”B”:2}的键和值?
54. 我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢?
iterable[start : stop : step], 创建一个迭代器,跳过前start个项,迭代在stop所指定的位置停止,step指定用于跳过项的步幅。迭代默认将从0开始,步幅默认1 (是不是和切片很像?)
57. 下面的代码输出结果是什么?
58. 下面的代码输出的结果是什么?
(1,2,3,[2,5,6,7],8) 。虽然元组不能更改,但是元组内的数据类型如果可变类型是可以改的(int为不可变类型,list为可变类型)。
read是将文件中的数据以字符串的形式存出来,多行中用\n分割,但是对于较大文件需要很大的内存。
readlines是将文件行以列表的形式返回。
61.json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?
可以处理所有python的自带数据类型(或自动转换到可处理类型)
62. json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?
63. 有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。
64. 如果当前的日期为 ,要求写一个函数输出 N 天后的日期,(比如 N 为 2,则输出 )。
65. 写一个函数,接收整数参数 n,返回一个函数,函数的功能是把函数的参数和 n 相乘并把结果返回。
66. 下面代码会存在什么问题,如何改进?
首先命名不规范,其次由于str是不可变类型,每次循环都产生新的对象浪费,应该列表转换。
67. 一行代码输出 1-100 之间的所有偶数。
68. with 语句的作用,写一段代码?
会自动调用close方法,不再需要手动调用(详见第三题)
70. 请写一个 Python 逻辑,计算一个字符串中的大写字母数量
现在电脑没有redis环境,以后补x。
事务提供了一种”将多个命令打包,一次性提交并按顺序执行”的机制,提交后在事务执行中不会中断。只有在执行完所有命令后才会继续执行来自其他客户的消息。
类似于批处理+资源锁。
76. 了解数据库的三范式么?
一范式: 任给关系R,如果R中每个列与行对应单元格的数据都是不可再分的基本元素,则R达到第一范式,简称1NF。 (最基本的范式)
二范式: 如果一个关系达到第一范式,且不存在任何非主属性对候选关键字的部分函数依赖,则称关系达到第二范式,2NF。 (其他项均与主键有关)
三范式: 如果一个关系达到第二范式且不存在非主属性对候选关键字的传递函数依赖,则称为达到第三范式,简称3NF。 (约束外键,通过外键查询信息)
77. 了解分布式锁么?
利用诸如zookeeper,redis等更高效的分布式组件来实现分布式锁,可以提供高可用的更强壮的锁特性,并且支持丰富化的使用场景。
80. 函数装饰器有什么作用?请列举说明?
装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。
它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。
有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
Python的垃圾回收机制十分类似于,但是Python的垃圾回收并没有java的那么多种,python只有引用计数器和分代回收、标记清除。
call的存在允许了对象当作方法来进行使用,比如下面的sum(),虽然sum的对象,但是依然会调用call来进行相关的操作。
83. 如何判断一个对象是函数还是方法?
使用上两种都可以使用类名.方法名来进行调用,但是calssmethod必须要有一个以上参数(cls), 这个参数表示自身类,可以用它来对方法内的方法进行调用。
但是需要注意的是接口的继承类必须复写所有方法,所以可能还不如继承好用。
反射是在只知道类名或者函数名的情况下调用其对应的函数。
metaclass允许父类对子类进行修改,一般用在框架开发。由于不推荐使用所以不做过多介绍。
常用在python的反射,86题全部用过这几种方法,移步86题。
89. 请列举你知道的 Python 的魔法方法及用途。
这取决于是什么类型,如果是可变类型就传递值,如果是不可变类型就传参。
元类就是生成类的工具,python最基础的元类是type(也就是可以用type来生成类),同样我们也可以通过复写 __metaclass__属性来使当前类变成元类。
any方法会监测这里面是否有非0(0、False、空),如果有返回True,如果没有返回False。
all方法检测是否全为0(0、False、空),如果全空返回True,反之False。
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表。
95. 什么是猴子补丁?
在运行期间动态修改一个类或模块。
python使用了一个内存池叫做 pymalloc ,它对于那些小于512k以下的对象在pymalloc中分配空间,防止频繁的使用C语言的malloc和free造成的系统开销。对于大于512k的依然交给系统的malloc来处理。
然后利用引用计数器、标记-清除等算法进行垃圾处理。
97. 当退出 Python 时是否释放所有内存分配?
不会,会保留一部分全局变量空间。
99. 正则表达式匹配中(.)和(.?)匹配区别?
?代表非贪婪匹配。即可以匹配0次或者1次,而.只匹配一个任意字符。
100. 写一段匹配邮箱的正则表达式
空语句,当搭建整体架构或者确定要有这个方法(循环、判断等)但是具体实现还没想好或者当前可以跳过时。
input接受一个标准输入数据,返回string类型
is 比较地址(id),而==比较值,对于对象的比较,可以在类中重载__eq__来完成对==的重载。
105. 三元运算写法和应用场景?
思考下面两个等价示例:
在一些简短的判断语句中可以使用三元运算。
该函数他igong了将一个可遍历的对象组合一个索引返回。
108. 如何在函数中设置一个全局变量
用于pathlib中的Path类可以创建path路径对象, 属于比os.path更高抽象级别的对象
110. Python 中的异常处理,写一个简单的应用场景
一下子也想不出比较好的例子了,一般异常就是在文件开关、请求或者容易产生越界的地方使用
111. Python 中递归的最大次数,那如何突破呢?
递归次数最大为1000次,但是这并不是出于性能考虑的限制,而是出于防止无限递归造成崩溃。
使用下面代码就可以更改这个限制。
子类优于父类,自实现优于系统实现。对于多继承情况,根据类的不同(分为新式类和旧式类,区分旧式新式类显示继承Object),其中新式类采用广度优先遍历来查找方法,旧式类采用深度优先遍历来查找方法。详见116
获取对象的类型,主要用来确定类型是否是需要的类型或者根据对象选择不同的分支。
114. 什么是断言?应用场景?
assert,会检查assert后面的语句是否为真,为真继续执行,为假抛出异常。常用于debug中判断当前步结果是否在意料之中。
比如定义一个求两数和的方法:
常用于简单方法并且不需要重复调用的情况
116. 新式类和旧式类的区别
新式类都继承object,旧式类不需要。新式类的MRO采用广度优先搜索,而旧式类采用深度优先搜索。
执行顺序(深度优先):D-C-B-A
python2中默认旧式类,新式类要显式声明。
python3中都是新式类,旧式类被移除。
我们都知道python的对象分为可变对象和不可变对象,因此举个例子。
思考上面两个例子,其中对于列表中有可变类型时,深拷贝的浅拷贝的区别显现了出来。
因此,可以简单的理解为,浅拷贝只拷贝一层地址,而深拷贝会继续向下拷贝元素的子元素地址。
122. Python 中会有函数或成员变量包含单下划线前缀和结尾,和双下划线前缀结尾,区别是什么?
a+:可读可写,没有创建
sort是list的一个属性方法,改变原列表。
sorted不改变原列表,生成新列表。
125. 什么是负索引?
print()和pprint()都是python的打印模块,功能基本一样,唯一的区别就是pprint()模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。特别是对于特别长的数据打印,print()输出结果都在一行,不方便查看,而pprint()采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint()打印方式。当然,一般情况多数采用print()。
131. 怎样声明多个变量并赋值?
list的后台实现是列表,采用线性查找,因此时间复杂度为n;直接插入,时间复杂度1。
set的后台实现是字典,采用二叉树排序,时间复杂度lgn,建树插入,时间复杂度lgn。
python天然就是单例模式,因此只需要在类中新建自己的对象即可。更多单例模式方法感兴趣的自己查。
136. 找出列表中的重复数字
137. 找出列表中的单个数字
138. 写一个冒泡排序
139. 写一个快速排序
140. 写一个拓扑排序
142. 有一组“+”和“-”符号,要求将“+”排到左边,“-”排到右边,写出具体的实现方法。
144. 交叉链表求交点
145. 用队列实现栈
146. 找出数据流的中位数
147. 二叉搜索树中第 K 小的元素
大部分情况是没有区别的,其中:content返回的是字节码,而text是编码后的文本(猜测编码),因此在text猜错的情况下需要我们使用content.decode()来进行重新解码。
149. 简要写一下 lxml 模块的使用方法框架
Scrapy本身带有一个中间件进行去重,可以在scrapy的源码中找到一个 dupefilters.py 文件,同时又一个dont_fliter开关进行控制是否进行去重操作。
对于每一个url,根据url(处理)使用set进行去重。
152. scrapy 中间件有几种类,你用过哪些中间件
153. 你写爬虫的时候都遇到过什么?反爬虫措施,你是怎么解决的?
比较简单的就是各种.gov、.edu、这类网站的反爬,几乎没有,简单的requests就可以。
其次就是比如微博、知乎、CSDN这种本身就有大量匿名访问流量的公开网站。这种网站一般会在ip访问频率和登录状态上进行限制,这种只要加一个ip代理或者控制访问频率和携带cookie即可。
再就是例如淘宝这类网站可能有加密接口,没有办法直接找到接口,一般使用js解密或者使用测试框架。包括selenium等。
再高的比如淘宝,某些页面有图层遮挡、甚至有测试框架检测,除了应用小众测试框架以外水平有限,不知道怎么解决。
154. 为什么会用到代理?
由于访问迅速目标网站拒绝访问时,需要使用大量其他ip作为代理访问目标网站。
155. 代理失效了怎么处理?
维持代理池,心跳检测代理可用性。
157. 说一说打开浏览器访问 百度一下,你就知道 获取到结果,整个流程。
这里是考三次握手吗?首先浏览器向服务器发送询问请求,然后服务器返回ACK,然后浏览器返回ACK的ACK。然后将百度的主页发送到浏览器,解析给用户。
如果使用HTTP1.1,当你点击搜索时,向服务器发送请求并获取结果。(百度确实使用HTTP1.1)。
如果是HTTP1.0,则重复上述握手过程。
158. 爬取速度过快出现了验证码怎么处理
降速,或者处理验证码,不过现在很多公司都接入极验了,还是降速或者使用代理比较稳妥。
redis为内存数据库,具有很快的读写效率。
160. 分布式爬虫主要解决什么问题
目标服务器对ip的限制以及高速率要求的爬取。
161. 写爬虫是用多进程好?还是多线程好? 为什么?
多线程好,因为爬虫属于IO密集型。
162. 解析网页的解析器使用最多的是哪几个
163. 需要登录的网页,如何解决同时限制 ip,cookie,session(其中有一些是动态生成的)在不使用动态爬取的情况下?
164. 验证码的解决(简单的:对图像做处理后可以得到的,困难的:验证码是点击,拖动等动态进行的?)
selenium有js方法可以进行拖动。图片直接OCR或者类似处理后输入即可。
mysql传统数据库,关系型。mongodb非关系型数据库,支持字段更多,由于使用了内存优化也并不慢(相比mysql)。redis内存数据库,读取非常快,但是没办法永久存储。
167. 简要介绍三次握手和四次挥手
服务器:我收到你好了,你好。
客户端:我收到你的你好了,搞起。
168. 什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?
沾包就是多个数据包被连续送入接收方的缓存中,无法判断出数据边界。
造成沾包的原因有很多,在发送方可能是因为TCP协议本身的限制,将很多小包打成大包后发送,因此可能造成沾包。
对于接收方,可能是进程接受数据不及时,导致缓存中滞留过多数据。
通过一系列手段去证明软件是符合用户需求的,满足质量要求的。预期结果和实际结果的一个对比。 按方法分:黑盒测试、白盒测试、灰盒测试 黑盒测试:把软件比作一个“黑匣子”,不考虑具体是内部是如何实现的,只考虑外部功能的运行,检查软件的输入和输出是否匹配。 白盒测试:检查软件的代码、函数和方法等内部结构。 灰盒测试:介于白盒和灰盒测试之间,既可以根据外部暴露出的功能进行检测,也可以参考内部的代码结构。 (c++一般用于桌面程序) (左边界、右边界):<=6,先测<6,再测=6,所以要取边界值和边界值旁边的点,5和6。 有效等价类:比如查看百度的ip 22:访问Linux服务器的默认端口 ip的别称,好记,花钱买。 集成测试(接口测试):后端bug work 浏览器自带(F12),抓web,选择XHR是看接口数据。 失败的话,直接用镜像安装: #这样不会积累测试数据,测试完就删除清空。 使用的是手机:打开安卓手机的USB调试,用数据线连接手机和电脑 使用的是模拟器:直接去执行adb devices 在windows命令提示符中输入:adb devices,能看到手机连上电脑既可 在VSCode中新建Python文件,并且输入对应代码运行查看效果 根据自己的手机来修改代码中对应的参数 3.找到bin目录下的jmeter.bat批处理文件,双击运行 3.测试计划取个名称,右键添加线程组(相当于测试用例)--右键线程组添加查看结果树和http请求(body data里添加字典参数)--右键http请求---上级,可以添加请求头等信息(不用加上双引号)。--保存--运行(红色失败,绿色通过) 5.断言:右键http请求--添加响应断言,模式匹配规则里选第一个包括,再点击添加,复制响应数据里要判断的内容,比如“status:200”(最好不要自己写,就用复制粘贴) 6.集合点(模拟真实的用户场景,使请求的并发可控:一批一批发送请求),并发(服务器同时接到的请求数) 同步定时器:右键线程组--添加定时器--synchronizing Timer--改名为(登录)集合点--grouping里,第一个参数设置每次运行多少个用户,第二个设置超时时间(单位毫秒) *线程数设置多少,一般集合点就设置多少(线程数不多的情况下) *一个http请求对应一个测试用例查看结果树和http请求同级,对整个线程组有效。 *输入的时候最好用自带的输入法,搜狗输入法容易崩溃 比如你输入账号和密码,线程数设成10,同样的账号密码登录10遍,显然不合理,可以用参数化解决 ->用户参数唯一限制。 每个线程数(用户)有独立的账号。 1.准备参数化数据文件 3.把数据文件和jmeter的jmx脚本文件放在同一个文件夹(保持同级关系) 2.引用csv数据文件设置 右键线程组,添加配置元件csv数据文件设置 文件名:./文件名(使用浏览添加绝对路径也行,但是移动文件夹就要重新设置,相对路径移动文件夹的话则不需要更改。) 前面接口的返回值,用于后面请求的参数。比如登录成功之后,需要把token值作为后面发表文章等功能的请求使用。 正则表达式提取器提取token: 右键http请求--添加后置处理器--正则表达式提取器 更改登录用例的http信息头管理器: 右键线程组--添加配置元件HTTP Cookie管理器。 作用:收集性能指标用于性能测试。可以是单个步骤,也可以是多个步骤。 右键线程组--添加逻辑控制器中的事务控制器--然后把该线程组中的所有http请求都拉到事务中。 再次运行的时候,就会出现一个事务控制器值。事务控制器的状态:一错就错,全对才通过。 把很多共同用到的变量进行公共抽取。比如协议,端口号,ip地址等。 右键线程组--添加配置元件--用户自定义变量。然后把相同的变量添加进去,比如ip:xxxxx。 其他地方要填ip的时候,写${ip}引用就行。 下次换测试环境的时候,只要更改全局变量就可以了。 从上往下运行,所以用例注意顺序。 每次创建的http请求,结果树等,都只对他的父级里的所有用例有效。 点击红色圆圈开始录制,填入网站地址,然后再badboy里操作网页--操作完点击停止--点击file里的export to jmeter--保存jmx文件。 缺陷:可能会录制重复的步骤,参数化和关联不会自动加上。 二、安装安装QA权限工具 解压并运行QA权限工具 如果没有报错,则无脑下一步就可以完成安装了 如果有权限确认,就选择允许访问 2.进入lrunner文件之后,我们找到目录下的En文件,然后点击打开En文件 3.进入En文件之后,我们再找到prerequisites文件并且点击打开。 6.最后我们退出安装,重新点击loadrunner进行安装即可。 1. 安装完成后,LR会自动打开,不管他,直接关掉 最后点击close,安装和破解LR工作就完成了 loadrunner:商业版的性能测试工具,根据线程数收费 (QA破解,用的是群里的老版,新版不好破解) 写代码之前先保存,容易崩。 1.vuser(create/edit script) 脚本编辑器,(支持录制,但是需要ie8,基本不用,还是使用控件编写脚本) 找到loadrunner启动器,以管理员模式运行。 body里面的字符串参数的引号,前面要加上转移的反斜杠。 判断cpu好不好的两个主要指标: 1.主频(速度):越大越好 cpu使用率:服务器硬件的繁忙程度 内存:越大越好,读写速度快 IO:硬盘,越快越好(ssd固态硬盘比hhd机械硬盘快很多) 带宽:下载速度一般是1/10带宽,越大越好 web容器(应用服务器): 作用:开发的代码必须通过应用服务器进行部署,供用户访问 常用的网关:nginx(可支持百万级并发) 反向代理:不用关心过程(一般情况都使用反向代理) 数据库最终是存放在硬盘中的,硬盘的读取速度慢。 优化:使用redis把数据库中的数据缓存在内存中,读取不到再去数据库找。 内存:读取速度快,断电数据丢失(所以服务器数据存在硬盘中) 硬盘:读取速度慢,断电数据保存 定义:通过各种工具模拟多用户并发访问服务器,来测试服务器的性能 基于这个性能的黑客攻击:洪水攻击 压力测试:超出峰值的情况下的系统表现(大并发) 负载测试:逐步增加压力来试探服务器的性能 强度测试:长时间在峰值情况下运行,看能持续多久 并发测试:同时发送用户请求,强调功能性测试 (订单/奖品超发,库存和实际卖出不匹配) 性能拐点:服务器在什么情况下性能跑得最快 最大容量:服务器在多少并发时能够hold住 验证问题:使用方法还原bug场景,解决bug 判断性能拐点和最大容量1.响应时间:平均响应,90%line(有90%的请求在x秒内完成) 258原则:2秒内很快,2-5还行,5-8等一等可以加载出来,8秒以后,很烂。 每秒事务数,服务器每秒返回的请求数 可以通过tps找性能拐点:随着并发用户数的增加,tps出现峰值 1.cpu使用率:长时间不能100%,持续小于85% 2.内存使用率:不同操作系统,内存调动机制不同。 linux/mac os机制:先把内存占满,再分配 Windows:要用的时候再分配内存 *所以linux直接看cpu使用率,要看单个进程(比如看tomcat,要看java程序,linux命令top可以看进程的占用内存情况) 内存泄漏(通常是java出现的问题,即tomcat要考虑的问题): tomcat一直把内存占着,越来越大,没有释放内存资源--发生内存泄漏。 判断内存是否足够:看虚拟内存是否足够,看IO使用率是否非常大。 对业务模型(多场景)有深入了解,了解用户使用场景:单场景(单个测试用例)、多场景(集合多个测试用例) 先考虑单场景的情况,然后组合在一起,考虑多/混合场景的情况。 接口和网页:app项目直接用接口,web项目要考虑静态资源: 1.静态资源(网页、图片、视频): 静态资源不占cpu,即不需要进行计算,静态资源一般和带宽有关。所以不考虑带宽的话,一般不考虑静态资源。 jmeter(在cmd里输入jmeter,会出现提示:不要使用GUI模式做负载测试) 硬件:windows:任务管理器里有自带的性能资源监视器 6.生成测试报告,分析结果 常见分析方法(控制变量法): 2.服务是否崩溃:事务失败率,http状态码出现大量500+ 3.最大容量:cpu使用率上限,响应时间,失败率(缺一不可) 4.内存泄漏:看jvm/java内存泄漏--查看java进程的内存大小,对比每一次的数据。在性能测试结束后,观察内存是否被释放。 新建一个文件夹,不要叫pytest,会和原有的文件夹冲突。 加上test可以自动识别文件。 assert res.status_code == 200 #第一次判断运行是否通过(服务器是否可用),可能功能不对,但是运行没问题。 不用py命令运行,用pytest运行。 新建终端:终端--新建终端 *unitest要手动查找文件,pytest如果不写路径的话,自动查找test开头的文件。 1打开浏览器,实例化浏览器,获得实例化句柄 用开发者工具,定位搜索框元素的id或其他name之类的。 因为网页内容是变化的,但是网页title不变,所以可以用title做判断。 新建终端:终端--新建终端 2.执行测试脚本并生成测试报告 3.把测试结果编译成网页测试报告 生成report文件夹,里面有个html报告。 安卓app的压力测试工具 作用:通过对安卓app输入大量的随机事件(点击/滑动/按键)来检测app是否存在崩溃、闪退和无响应等问题。 兼容性测试:安卓手机不同的版本和华为、oppo、小米等多种操作系统上测试。 1.首先安卓手机连上电脑。 安卓app自动化测试工具 运行方式:直接在shell执行,或者py文件运行。 4.#定义路由(接口地址),用装饰器 *不需要配置服务器,flask自带一个WSGI服务器。本地环境http://127.0.0.1:5000/,ctrl+单击打开网站,就可以访问我们前面第四步写的网站。(终端运行的时候有写) 新建文件夹,名字必须叫”templates“,放html文件。 创建文件夹”static“,放静态资源:css、文件、图片等。*记得改链接 然后了解原理,仿造自动化工具,实现一套自己的工具。 初级性能测试:熟练使用工具,掌握常用的分析方法,会用工具分析出系统的瓶颈。 中级性能测试:对系统的熟练程度高,熟悉各个组件,能够分析问题原因 高级性能测试:对系统的各个组件了如指掌,给出具体的调优方案。 深入了解:应用服务器,网关,缓存,前端,数据库(了解哪种查询语句快) 开发知识:java,企业的java开发框架,运维 管理方向:流程管理,QA |