为什么进行软件测试
1、软件总是会存在错误,我们需要去找出软件中的缺陷,所有就需要去进行软件测试
2、软件中出现缺陷对我们造成的损失是巨大的,这说明了软件的测试的重要性和必要性
软件测试的目的
1、测试是程序的执行过程,目的在于发现错误;
2、一个好的测试用例在于发现了至今未发现的错误;
3、一个成功的测试是发现了 至今未发现的错误的测试;
软件测试的原则
1、2/8定律,核心功能占20%,非核心占80%,我们会集中测试20%的核心功能,发现缺陷的几率会高于80%,因此,遇到的缺陷都会集中20%功能模块里。
2、不能进行穷尽测试,有些功能是无法将所有测试情况逻辑出来的,任何的测试都有结束的时间。
3、为了更好地发现和解决软件中的缺陷。
软件测试分类:
按是否执行程序分类:
静态测试
不运行被测程序,而是通过在对软件进行分析、检查和审阅达到测试目的。
动态测试
通过运行软件来检验软件的动态行为和运行结果的正确性,一般包括白盒测试、黑盒测试和灰盒测试技术三类。
按测试技术分类:
灰盒测试
介于白盒测试与黑盒测试之间的测试。
黑盒测试
将测试对象看成一个黑盒子,只在程序界面处进行测试,对接口进行测试,检查是否满足需求规格说明书。
白盒测试
结构测试,将程序看成一个透明的白盒子,检查所有的
按测试阶段分类:
单元测试
又称模块测试,目的在于检查每个单元模块是否实现详细设计说明书中的功能、性能、接口和设计约束等要求。
集成测试
又称组装测试,主要测试单元之间的接口关系,逐步集成为符合概要设计说明书要求的整个系统。
系统测试
在真实或模拟系统运行的环境下,为验证和确认系统是否达到需求规格说明书的要求,而对集成的硬件和软件系统进行的测试,采用黑盒测试技术。
验收测试
按照项目任务书或合同、供需双方约定的验收依据文档进行的整个系统的评测,决定是否接受系统。
按照测试实施组织分类:
开发方测试(α测试)
开发方在软件开发的环境下,证实软件的实现是否满足需求。
用户测试(β测试)
用户通过运行和使用软件找出软件使用过程中发现的软件缺陷。
第三方测试
介于开发方和用户之间的测试组织的测试。
按是否使用工具划分:
手工测试
自动化测试
软件生命周期包括:
计划→ 需求分析→ 设计→ 编码→ 测试→ 运行→ 评价
测试流程:
需求分析
制订测试计划
设计测试用例与编写
实施测试
提交缺陷报告
生成测试总结和报告
公司人员架构:
首席品牌官【CBO】 chief brand officer
首席文化官【CCO】 Chief Cultural Officer
开发总监【CDO】 chief Development officer
首席执行官【CEO】 Chief Executive officer
首席财务官【CFO】 Chief finance officer
人事总监 【CHO】 Chief Human resource officer
首席知识官 知识主管 【CKO 】 Chief Knowledge
首席信息官【CIO】 chief information officer
首席知识官【CKO】 chief knowledge officer
首席市场官【CMO】 chief Marketing officer
首席谈判官【CNO】 chief Negotiation officer
首席营运官【COO】 chief Operation officer
公关总监【CPO】 chief Public relation officer
质量总监【CQO】 chief Quality officer
销售总监【CSO】 chief Sales officer
首席技术官【CTO】 chief Technology officer
评估总监【CVO】 chief Valuation officer
测试工具:
性能测试工具:jemter,loadrunner
自动化测试工具:selenium,appnium,
网络测试工具;charles,fiddler,postman
bug管理工具:禅道,jira
测试计划:
目的:
简述本计划的目的,旨在说明各种测试阶段任务、人员分配和时间安排、工作规范等
名词解释:
解释本计划中出现的一些专业术语和缩略语与定义
参考资料:
产品原型图:因为需要根据产品原型图来判断有哪些功能点
UI效果图:根据UI效果图来判断需要测试多长时间,需要多少测试用例来覆该功能点
需求文档:了解我们产品的业务流程细节,有哪些产品和UI上面没有体现出来的内部业务逻辑的需求
测试摘要:
主要说明测试中重要的和可能争议的问题,主要目的是讲这些信息传递个那些可能不会通读整个测试文档的人员
风险评估:
通过对技术文档的阅读,对被测系统可能存在的问题:系统设计,数据库设计,响应时间,计费策略,因测试环境不足可能存在的测试缺陷事先评估出来,以指导测试方案,进行有重点的测试,人员分配等。
时间进度:
说明测试的开始时间与结束时间
测试目标:
软件功能符合需求文档,所有的测试都已进行完毕,所有严重缺陷都已交由开发,由开发修改后验证通过。
资源需求:
硬件资源需求:
android:小米,vivo,opop,华为,魅族,红米,荣耀等
ios:phone11,phone8-10,xr,max等
web:windows电脑,mac电脑等
linux:服务器,jenkins环境配置
软件资源需求:
抓包工具charles,bug管理工具jira,禅道,android版本4-10,ios版本10-13,web:qq浏览器,火狐浏览器,IE浏览器,自动化:appnium ,selenium,白盒测试等
项目背景:
测试范围:
说明本计划涵盖的测试范围,比如功能测试、集成测试、系统测试、验收测试等。通常说明什么是要测试的,什么是不要测试的是非常重要的。明确规定这些问题后,测试人员对该做什么有一个清晰的认识。
(1)简要地列出测试对象中将接受测试或将不接受测试的那些性能和功能。
(2)如果在编写此文档的过程中作出的某些假设可能会影响测试设计、开发或实施,则列出所有这些假设。
(3)列出可能会影响测试设计、开发或实施的所有风险或意外事件。
(4)列出可能会影响测试设计、开发或实施的所有约束。
测试策略:
采用什么模式:
敏捷测试,瀑布式测试,v模型,w模型,螺旋模型等
功能测试:根据系统需求文档和设计文档,检查产品是否正确实现了功能。
流程测试:按操作流程进行的测试,主要有业务流程、数据流程、逻辑流程、正反流程,检查软件在按流程操作时是否能够正确处理
边界值测试:选择边界数据进行测试,确保系统功能正常,程序无异常。
容错性测试:检查系统的容错能力,错误的数据输入不会对功能和系统产生非正常的影响,且程序对错误的输入有正确的提示信息
异常测试:检查系统能否处理异常
启动停止测试:检查每个模块能否正常启动停止、异常停止后能否正常启动
安装测试:检查系统能否正确安装、配置
易用性测试:检查系统是否易用友好
界面测试:检查界面是否美观合理
接口测试:检查系统能否与外部接口正常工作
配置测试:检查配置是否合理、配置是否正常
安全性和访问控制测试:
应用程序级别的安全性:检查Actor只能访问其所属用户类型已被授权访问的那些功能或数据。
系统级别的安全性:检查只有具备系统和应用程序访问权限的Actor才能访问系统和应用程序。
性能测试:提取系统性能数据,检查系统是否满足在需求中所规定达到的性能。
压力测试:检查系统能否承受大压力,测试产品应该能够在高强度条件下正常运行,不会出现任何错误。
兼容性测试:对于 C/S 架构的系统来说,需要考虑客户端支持的系统平台。
对于 B/S 架构的系统来说需要考虑用户端浏览器的版本。
割接/升级测试:进行专门的割接测试或升级测试,提供工程升级割接方案
文挡测试:检查文档是否足够、描述是否合理
回归测试:检查程序修改后有没有引起新的错误、是否能够正常工作以及能否满足系统的需求
测试技术:
自动化测试
单元测试
系统测试
集成测试
性能测试
验收测试
编写测试用例测试
质量目标:
后台稳定性
符合用户需求
符合需求文档
没有反人类设计
致命bug,严重bug都已验证解决完毕
测试用例:
测试用例的特性
代表性:能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。
针对性:对程序中的可能存在的错误有针对性地测试
可判定性:测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果
可重现性:对同样的测试用例,系统的执行结果应当是相同的。
测试用例包括:
1、用例编号:用例编号具有唯一性和易识别性。
2、测试项目:测试项目对应的就是测试用例中的子项名。
3、测试标题:测试标题一定要简单、概要;体现测试的出发点和关注点。
4、重要级别:三个级别:高、中、低
5、预置条件:测试用例在执行前需要满足一些前提条件
6、测试输入:根据软件测试用例的具体情况,有手工输入、文件、数据库记录等。
7、操作步骤:明确描述测试执行过程中具体的操作步骤
8、预期输出:期望结果
测试用例方法:
1、等价类划分法:界面有输入的地方就可以使用等价类划分法,从多数剧中挑选少量代表性的数据进行调试
等价类分为:
有效等价类:符合输入规定的
无效等价类:不符合输入规定的
2、边界值:
边界值常常和等价类划分法一起使用,形成一套更为完善的测试方法,找到有效与无效的分界点
边界值分为:
左边界值:
右边界值:
3、因果图与判定表法:因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入,所谓的结果就是输出。
4、场景法:大多数的业务比较复杂的软件系统都适合使用场景法,是一种基于业务的测试方法,把自己当成用户,尽可能模拟用户使用此软件操作
5、错误推断法:基于经验和直觉推测程序中所有可能存在的错误,从而针对性的设计测试用例
6、正交表:通过少数的实验次数找到较好的生产条件,以达到最高生产工艺效果,这种试验设计法是从大量的试验点中挑选适量的具有代表性的点,利用已经造好的表格—正交表来安排试验并进行数据分析的方法。
测试用例的示例
测试用例的变更与评审:
什么时用例评审:
用例评审主要是产品、开发和测试人员,针对测试用例能否用于项目的测试而做的工作。
目的:
为了减少测试人员执行阶段做无效工作(执行无效case,提交无效问题) 为了避免三方需求理解不一致; 为了每个测试人员的质量标准与项目要求标准达成一致。
用例评审人员:
主要是产品、开发(客户端和后端)、测试、项目负责人。
进行评审的时机 :
一般会有两个时间点。第一,是在用例的初步设计完成之后进行评审第二是在整个详细用例全部完成之后进行二次评审。如果项目时间比较紧张,尽可能保证对用例设计进行评审,提前发现其中的不足之处。
评审内容 :
1)用例设计的结构安排是否清晰、合理,是否利于高效对需求进行覆盖。
2)优先极安排是否合理。
3)是否覆盖测试需求上的所有功能点。
4)用例是否具有很好可执行性。例如用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确期待结果是否有明显的验证方法。
5)是否已经删除了冗余的用例。
6)是否包含充分的负面测试用例。充分的定义,如果在这里使用2&8法则,那就是4倍于正面用例的数量,毕竟一个健壮的软件,其中80%的代码都是在"保护"20%的功能实现。
7)是否从用户层面来设计用户使用场景和使用流程的测试用例。
8)是否简洁,复用性强。例如,可将重复度高的步骤或过程抽取出来定义为一些可复用标准步骤。
缺陷报告:
缺陷报告组成:
1、缺陷编号:提交缺陷的顺序
2、缺陷的标题:简明扼要的描述缺陷
3、缺陷的发现者:测试人员
4、缺陷发现的日期:一般为当天
5、缺陷所属的模块:在测试那个功能模块时发现的bug
6、发现缺陷的版本:开发的软件的版本
7、指派给谁处理:测试人员指派给开发经理,开发经理根据缺陷所在的模块,需要再次指派具体的开发人员
8、缺陷的状态:缺陷此时所处的处理阶段或处理情况
缺陷的优先级:
1级:缺陷必须被立即解决
2级:缺陷需要正常排队等待修复或列入软件发布清单
3级:缺陷可以在方便时被纠正
缺陷的严重程度:
高:程序崩溃或程序显示异常
中:不影响使用,但是影响用户体验
低:小的缺陷
缺陷状态:
1、测试人员发现缺陷,提交缺陷报告,把缺陷的状态置为new(新)
2、开发经理验证提交的bug,如果是bug,把状态改为open(打开的bug,开发组承认的bug),指派给具体的开发人员解决;如果不是bug,把状态改为rejected(拒绝的bug)
3、开发人员看到指派给自己解决的bug,进行缺陷修复,修改完后,把缺陷状态fixed(已经修复的bug,可以返测的bug)
4、测试人员对修复的bug进行反测,若返测成功,将状态改为closed(关闭的缺陷,归档的bug);如果返测不成功,把状态改为reopen(重新打开的bug)
1、禅道是什么?
1)、禅道项目管理软件集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程。
2、为什么使用禅道?
1)、禅道是第一款国产的优秀开源项目管理软件。先进的管理思想,合理的软件架构,简洁实效的操作,优雅的代码实现,灵活的扩展机制,强大而易用的api调用机制,多语言支持,多风格支持,搜索功能,统计功能。不仅仅是一款scrum敏捷项目管理工具,更是一款完备的项目管理软件。
3、禅道的特点
1)、禅道是专业的研发项目管理软件,非简单任务管理软件可比。
2)、管理思想简洁实效,可以帮助企业实现快速敏捷开发。
3)、功能完备,您无需再费心整合若干系统在一起使用。
4)、源代码开源开放,有灵活的扩展机制,方便企业使用并二次开发。
5)、国产软件,本地支持,操作习惯更符合国人。
6)、自主开发的底层框架和前端 UI 框架,健壮稳定,界面美观,交互友好。
7)、完善的社区机制,可以获得及时的技术支持和帮助。
8)、零投入,相比动辄十几万的商业软件,您选择禅道没有任何风险。
9)、禅道支持多种部署方式,可以私有部署,也可以选择云端服务。
禅道的下载与安装:
1、进入禅道官网,官网:https://www.zentao.net/
2、点击开源版,会进入以下界面:
3、选择下载即可,
因为我电脑是windows64位,所以下载的也是64位,
4、下载完后,找到双击打开,
填写路径,路径不能是汉字,空格等特殊符号。填写完后点击extract开始安装,
5、安装完后会出现一个xampp的文件夹。
打开文件夹,找到start.exe,打开即可。如下:
6、点击启动禅道企业版,
点击访问禅道企业版,会弹出一个网页,第一次使用会提示你输入账号密码,
账号密码就是上一张图片划红线的地方
点击企业版访问,会跳转到如下界面:
用户名admin,密码123456
输入后点击登录,调转到如下界面:
自己进行选择,也可以使用默认
点击保存,调转到操作界面,如下图:
点击admin,找到新手教程,如下图:
点击新手教程查看即可,新手教程十分详细,一步一步跟着走即可。
1、mysql数据库简介:
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL是一个多用户、多线程的关系型数据库管理系统。 工作模式是基于客户机/服务器结构。目前它可以支持几乎所有的操作系统,同时也可以和php完美结合。
简单的来说 ,MySql是一个开放的、快速的、多线程的、多用户的SQL数据库服务器
2、数据库的两种分类
1)、关系型数据库(Relational Database Management Systems) (RDBMS):关系型数据库 (RDBMS) 是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,是当前应用最广泛的数据库管理系统。
在关系型数据库中,主要有如下名词:
数据库:表的集合
数据表:数据的集合
数据行:一行数据就是一个对象
数据列:也称字段,表示对象的属性
一个关系型数据库就像一个Excel文件,文件中的sheet就像是表,sheet中每个列的逻辑定义就是表的字段,sheet中行就是表的数据行。
2)、非关系型数据库 (Originally referring to “non SQL”, “non relational” or “not only SQL” )(NoSQL):NoSQL 泛指的是非关系型的数据库。是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
非关系数据库相比关系数据库的主要优势:
1)、低延迟的读写速度:应用快速地反应能极大地提升用户交互速度;
2)、高性能和可扩展性:基于键值对,数据没有耦合性,容易进行分布式扩展;
3)、非结构化和不可预知的数据:NoSQL的存储格式是Key-Value形式、文档形式、图片形式等等,而关系型数据库则只支持基础类型。
3、我们常见的数据库
MySQL:开源免费的数据库 ,小型数据库,已经被Oracle收购了.MySQL6.x版本开始收费了.
Oracle :收费的大型数据库,Oracle公司的产品. Oracle收SUN公司,收购MYSQL.
DB3 : IBM公司的数据库产品,收费的,常应用在银行系统中.
SQLServer: MicroSoft 公司收费的.常应用在银行系统中.
SQLite : 嵌入式的小型数据库,应用在手机端.
4、数据库操作语言
DDL (Data Definition Language) :数据定义语言 数据定义语言 , 用来定义数据库对象:库 丶 表 丶 列等; CREATE 丶 ALTER 丶 DROP
2.DML (Data Manipulation Language) :数据库操作语句 用来定义数据库 记录(数据); INSERT 丶UPDATE 丶 DELETE
3.DQL (Data Query Language):数据库查询语言(简单),用来查询记录(数据)
4.DCL(Data Control Language):数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等
mysql语句
1、查询
select 列名称( * 代表查询所有信息)·· from表名称·· where条件(and)(or)
2、添加
insert into 表名称(列名称(可以是多个或单个)) values (要添加的数据)
3、修改
update 表名称 set 列名称 = 要修改的内容 (直接修改一列的数据)可以通过where进行条件修改 , where 表里另一个列名
= 这个列名里的数值
4、删除
delete from 表名称 where 列名称 = 数值
5、修改表
alter table 表名 关键字 如:alter table 表名 add(列名 数据类型(数据类型长度)):修改表之添加列 alter
table 表名 drop 列名 :修改表之删除列 alter database 数据库名称 character set 编码格式
(修改数据库编码)…等等
6、对库和表的操作
drop table 表名称 (删除表)
drop database 数据库名称 (删除库)
use 数据库名称 (切换数据库)
show databases (查看所有数据库名称)
create database 数据库名称 (创建库)
create table 表名称(列名称(数据类型))(创建表)
show tables (查看某一数据库内所有表名称)
show create table 表名称 (查看表里创建的语句)
7、sql语句关键字
查询公式:select * from 表名称
where :条件查询
unique:唯一
primary key :主键约束
auto_increment :自增
and :where 后使用 连接多条件 “且”的关系 两个条件都得满足
or : where后使用 连接多条件 “ 或 ”的关系 A or B满足A或者B都显示出来
between … and : 在两者之间
in :在某几个值内
order by :排序 (asc 升序(从小到大))(desc 降序(从大到小))
group by :分组查询
not : “反”的意思
like:模糊查询 和百分号(%)下划线(_)一起使用 ,下划线代表一个字符,百分号代表任何字符
as :取别名
sum(列名):用于select后 求和
avg(列名):求平均数 用于select后
max(列名):求最大值 用于select后
min(列名):求最小值 用于select后
count(列名):求行数用于select后
adb简介:
ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。
adb 常用命令:
adb devices:查看当前连接设备
adb install apk的绝对路径 :安装apk
adb install -r apk的绝对路径 :覆盖安装
adb uninstall 包名 :卸载apk
adb uninstall -k 包名 :卸载apk 但保留数据
adb shell pm list packages :获取手机里所有包名
adb shell pm list package -3 : 可以列出第三方的报名
adb shell pm list package - s :可以列出系统应用的报名
adb shell dumpsys meminfo 包名 :查看手机内存
adb shell screencap /sdcard/screen.png :屏幕截图
adb shell screenrecord /sdcard/text.mp4 :录制视频
adb push 文件名 手机端SDCard路径 :从电脑往android设备上传文件
adb pull 手机端SDCard路径 文件名:从android设备下载文件到pc
adb logcat *:日志级别 :查看手机日志
adb -s emulator-设备名称 logcat -v time process >文件存放的绝对位置 :将日志文件转换为本地文件
日志级别:
v Verbose – 开发调试过程中一些详细信息,不应该编译进产品中,只在开发阶段使用
d Debug – 详细的信息,通常只出现在诊断问题上
I Info – 确认一切按预期运行
W Warning – 一个迹象表明,表明一些问题在不久的将来,(例如。磁盘空间低”)。这个软件还能按预期工作。
E Errorr – 更严重的问题,软件没能执行一些功能
F Fatal – 相当严重,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话后果严重
S Silent – 最高级别日志
安卓平台自动化测试的一种手段,通过monkey模拟用户触碰屏幕点击,滑动等事件,对设备上的程序进行压力测试也就是稳定性测试,检验程序多久发生异常。
monkey常用命令:
首先使用CMD命令打开你的黑窗口:输入adb shell monkey
(1):参数1 -P
adb shell monkey -P包名点击次数
指定包名点击次数:
比如指定包名点击100次adb shell monkey -P 包名100
指定多个包名:
Adb shell monkey -p包名1 -p包名1点击次数
不指定包名:
Adb shell monkey 点击次数
(2):参数2 -V:
用于反馈信息级别也就是日志的详细程度,总共分三个等级,如下:
日志级别Level 0:
Adb shell monkey -p包名-v点击次数
仅提供启动测试完成和最终结果等少量信息:
日志级别1:
Adb shell monkey -p包名-v-v 点击次数
提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别Level 2
adb shellmonkey p com. htc. Weather- V -V- V] 00
说明最详细的志,包括测试中选中/未选中的Activity信息
(3): 参数- ignore-crashes:
用于指定当应程序崩溃时(Force& Close错误),Monkey是否停运。如果使此
参数,即使应程序崩溃,Monkey 依然会发送事件,直到事件计数完成
adb shellmonkey -p com. htc. Weather – i gnore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey 依然会继续发送事件直到事件次数
达到1000
adb shel lmonkey p com. htc. Weather 1000
测试过程中,如果Weather程序崩溃,Monkey 将会停止运行。
(4):参数-- ignore-timeouts
用于指定当应用程序发ANR(Appl ication No Responding)错误时Monkey 是否停
止运行。如果使用此参数即使应用程序发生ANR错误,Monkey 依然会发送事件,直到事件计数完成
(5):一i gnore security except ions:
用于指定当应用程序发生许可错误时(如证书许可网络许可等)Money是否
停止运行,如果使用此参数,即使应用程序发送错误,Monkey依然会发送事件,直到事件计数完成
(6): 参数:
一kill-process after-error
用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程
序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止
在发生错误时的状态,系统并不会结束该应用程序的进程)
Adb shell monkey -p包名-v-v-v- ignore crashes --ignore-t imeouts --kill-process- after-error 点击次数
点击n次,当应用程序发生崩溃的继续点击发生ANR了继续点击,应用程序停止运行继续点击。
(7):-- moni tor-native- crashes
用于指定是否监视并报告应用程序发生崩溃的本地代码。
如果加了这个命令,崩溃了会告诉你崩溃在那一行代码
Adb shell monkey -P包名-v-v-V 点击次数- monitor native crashes点击
次数
指定包名点击次数,指定二级日志崩溃的时候告诉我崩溃在那一行
(8):参数:
–pct- {+事件类别} {+事件类别百分比}
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占
总事件数目的百分比)
参数:
使用说明:
示例:- pct- touch {+百分比}
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单
一位置)
adb shell monkey p com. htc. Weather-- pct- touch 101000
表示触摸占百分之10, 单击次数是1000次
– pct- motion {+百分比}
调整动作事件的百分比(动作事件由屏幕上某处的–个down事件、一系列的伪随
机事件和一个up事件组成)adb shell monkey -p com. htc. Weather–pct- motion 20 1000
–pct- trackball {+百分比}
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有
点击)
adb shell monkey -P com. htc. Weather-- pct- trackball 30 1000
–pct nav {+百分比}
调整“基本”导航事件的百分比(导航事件由来自方向输入设备up/down/left/right组成)
adb shell monkey P com. htc. Weather-- pct-nav 40 1000
(7)–pct majornav {+百分比} :调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:回退按键,菜单按键
adb shell monkey -p com.thc.weather --pct -majornav 50 1000
1、APP测试的重点与流程:
1)、首先是测试资源确认及准备:产品需求文档、产品原型图、接口说明文档以及设计说明文档等应齐全;
2)、测试设备及工具的准备:IOS和andriod不同版本的真机,以及相关测试工具的准备。
3)、测试用例的设计与评审
(1) 根据产品需求文档、产品原型图等文档,设计客户端的一般功能测试用例;
(2)测试用例评审、修改与完善,评审通过后着手进入正式测试阶段。
4)、UI测试
(1)确保手头的原型图与效果图为当前最新版本,符合产品经理及用户要求;
(2)测试过程中一切以效果图为准,若有用户体验方面的建议,可以先以邮件的形式与产品经理确认,确认通过后,可以正式向开发提出用户体验方面的问题;
(3) 由于测试环境中的数据为模拟数据,测试时必须预先考虑到正式环境中可能出现的数据类型。
5)、功能测试
(1)功能测试时主要依据编写的功能测试用例进行软件功能的遍历;
(2)涉及的测试主要包括基本功能测试,安装、卸载、运行测试,异常处理(包括网络突然断开或者网速过慢、机器内存不足等异常情况的处理)测试。
6)、中断测试
(1)软件运行过程中接电话、收短信、锁屏、闹铃、充电,收到通知提醒后再使用软件,软件应仍可正常运行使用;
(2)软件运行时,由前台切换到后台,再切回前台后,应仍可正常运行使用。
7)、兼容性及适配测试
(1)硬件的适配:不同手机厂商、硬件性能,不同屏幕大小的适配;
(2)OS版本的兼容:IOS6-9;Andriod3以上等,如果用了一些新的API在老的系统上不支持会导致crash;
(3)不同分辨率屏幕的适配:移动设备的分辨率多种多样,如果app没有做比较合适的处理就可能会显示不好,甚至影响功能的操作。
(4)兼容性测试必须在一定数量的真机上进行,由于真机类型过多,尤其Android在做兼容性测试时,可以选取典型的几种运用较多的真机,进行兼容性测试;
(5)另外可以借助开源测试testin云测,进行更多机型的兼容性测试,testin云测提供基本的运行情况和一些截图,以及简单的测试报告,有助于扩大测试的范围。
8)、性能测试
(1)客户端性能测试重点关注:安装卸载时间、启动时间、页面加载时间、主要功能占用的CPU、内存、流量、耗电量等,以及与同类产品相比较是否有优势;
(2)其中页面加载时间可以利用Android调试工具DDMS获取到,在DDMS里面搜索Displayed关键字就可以看到页面加载时间;
(3)运行过程中主要功能占用的CPU、内存、流量等可以借助开源工具emmagee(适用于Android)获取到;
(4)至于服务器端的性能,主要利用接口对服务器施加压力,重点关注响应时间、吞吐量、并发数、事物通过率等,可以视同工具loadrunner、jmeter进行测试。
9)、稳定性测试
(1)安卓APP的稳定性常常使用monkey命令进行测试,通过随机事件流模拟人的操作,对检查程序的内存溢出、空指针有很大的作用。
(2)Monkey主要用来检测系统ANR及Crash等问题
10)、测试分析及测试报告输出
以上各项测试结束后,应该形成完整的分析及报告文档(包括buglist、性能及稳定性结果分析,版本上线风险分析等内容),输出给各项相关人员
app性能测试指标:
1、内存
2、CPU
3、流量
4、电量
5、启动速度
6、滑动速度、界面切换速度
7、与服务器交互的网络速度
站在测试人员的角度考虑
1、连接超时:这个是App关闭的首要问题,而在用户初次尝试时发生连接超时无法正常使用,多数用户会选择再也不会打开应用第二次。
2、崩溃:你的应用肯定不能出现无法使用的情况
3、系统交互:电话短信干扰,低电量提醒,前后台切换,usb数据线插拔提醒,充电提醒等
4、弱网下的运行情况:在隧道,网络较差的地区,提示是否使用户观感较好
5、cpu使用情况:占用太多cpu,导致手机卡顿,那用户肯定是不会去用的
charles的简介:
Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charles的时候要先装好Java环境。
Charles 主要的功能包括:
截取 Http 和 Https 网络封包。
支持重发网络请求,方便后端调试。
支持修改网络请求参数。
支持网络请求的截获并动态修改。
支持模拟慢速网络。
1、charles断点使用:
1)、在charles所抓取的网址上右键,选择breakpoints
2)、点击标题栏的proxy,选择breakpoint Settings,
3)、双击打好断点的网址,可以进行修改
protocol:传输协议
host:域名
port :端口
path:网址路径
query:参数信息,可以使用*通配符替代
勾选request:可以修改请求
勾选response:可以修改返回值
2、Charles重发网络请求
1)、左键点击要重发的网络 在标题栏上选择tools :
2)、点击tools ,找到advanced repeat:
3)、弹出设置重发的界面
iterations:重发的次数
concurrency:并发数
intre request delay:请求数据延时
repeat delay :重复延迟的次数
3、Charles弱网测试
1)、在界面标题栏选择proxy
2)、点击proxy ,选择throttle settings
3)、点击throttle settings,勾选enable throttling和only for selected hosts即可进行弱网测试,点击add添加网址
throttle preset :选择网络限制
bandwidth(kbys ):上传和下载速度的带宽
utilisation(%):带宽使用率
round-trip latency(ms):延迟
mtu(bytes):最大传输数 在规定的时间内最大传输多少
reliability(%):可靠性是衡量连接完全失败的可能性的一个指标。这对于模拟不可靠的网络条件很有用。可靠性被指定为成功传输10KiB消息的可能性,因此50%的值意味着所有10KiB传输的一半将成功。较大消息或较小消息或多或少可能失败,因此20KiB传输的成功率仅为25%,5KiB传输的成功率约为70%。
stability(%):稳定性是衡量连接“不稳定”并因此降低质量的可能性的指标。这对于模拟周期性连接质量较差的网络(如移动网络)非常有用。如果连接不稳定,则连接的质量将随机地落在不稳定的质量范围内。
unstable quality range(%): 不稳定的质量范围,配合Stability使用。
3、charles 连接手机抓取http:
想要抓取手机的网络,就需要让电脑和手机处于同一网络下,并且需要修改手机网络设置的,和安装charles证书。步骤如下:
1)、用windows+R 打开黑框命令行,输入ipcofig,获取到电脑的主机地址。
2)、打开charles ,在标题栏上找到proxy ,然后 点击找到一个名为proxy settings,点击就会出现如下界面,prot便是端口号,可以自行更改,也可以不改
3)、首先使手机和电脑处于同一网络,打开手机的设置找到wifi设置,点击连接的wifi找到代理,点击代理修改为手动,将你在dos黑框获取的主机名和charles的端口号填写进去 ,填写好点击保存。如下:
4)、打开系统自带的浏览器,输入http://chls.pro/ssl下载charles 证书。
5)、下载安装好后电脑端的charles会弹出一个提示窗,点击allow即可,这样charles就可以抓取手机上的网址。
简介:
Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。
jemter的简单使用:
1、打开jemter进入后,会显示一个test plan,意思是测试计划,然后右键选择添加-----》线程------》添加线程组,如图:
包括:线程数:要启动几个线程,
ramp-up时间(秒):在几秒内去完成多少组线程
循环次数:循环运行线程数
2、创建好线程组,右键线程组 -----》添加------》取样器-------》http请求,
如图:
3、创建好http请求后,即可进行网址测试,在http请求里可以添加
查看结果树,聚合报告,用表格查看结果,图形结果,响应断言,断言结果等
http请求的页面包括:
协议:你测试的接口网络协议是什么,http还是https
服务器名称或ip:你测试接口的域名
端口号:你测试接口的端口号,80,443等
http请求:网络请求get,post,put,head等
路径:你测试的接口路径
参数:接口参数
jemter参数化:
1、用户自定义变量的方法
1)、点击http请求------》选择配置元件------》选择用户定义的变量
2)、在http请求里添加参数,我这里的接口的参数是需要一个手机号。参数的key是tel,value是一个手机号,值直接使用变量引用,变量引用的规则&{自己起的名称}
3)、因为值是引用的变量 ,所有就可以在这里编写你的参数值,
名称:就是你引用变量起的名称(${}内的名称)
值:就是你要传入的参数值
修改线程运行次数,运行即可。
2、使用配置元件 CSV Data Set Config
使用csv data set config 首先需要创建一个.txt文件,在里面填写准备好的参数值,多个参数值使用逗号隔开
1)、点击http请求添加------》配置元件-------》csv data set config, 创建配置元件 csv data set config
csv data set config 包括:
1.Filename:需要传入文件的完整路径。我的文件位于D盘目录下,文件名为users.txt。
2.File encoding:参数文件的编码格式。可以不填。
3.Variable Names:对应参数文件中每列的变量名,也是你要引用到请求中的参数变量名。这里第一列是手机号、第二列是昵称。变量名可以自定义。
4.igonre first line(only used if Variable Names is not empty):当 CSV 文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。若首行未设置,则选择False
5.Delimiter:文件中的分隔符,默认英文的逗号分隔。所以注意txt文档中每行多个参数用英文逗号分隔
6.Recycle on EOF: 设置为True后,允许重头循环取值;为False,当读取文件到结尾时,停止读取文件
7.Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效。
8.Sharing Mode:共享模式。All threads:所有线程,所有线程循环取值,线程1取第一行,线程2取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:当前线程,该测试计划内的所有线程都取第一行。
3)、将写好的文件传入,修改线程运行次数,运行即可。
3、函数助手 csvread
1)、点击工具,选择函数助手对话框
2)、点开函数助手对话框,选择_CSVRead:
CSV file to get values from | *alias:CSV文件取值路径,即这里需要写入之前的需要参数化的参数的文件路径
CSV文件列号| next|*alias:文件起始列号:CSV文件列号是从0开始的,第一列为0,第二列为1,以此类推。。。
函数字符串:即生成的参数化后的参数,可以直接在登陆请求中的参数中引用,第一列为用户名,函数字段号为0,第二列为密码,函数字段号为1,以此类推进行修改使用即可
3)、使用函数字符串替换之前的参数之后,修改线程执行次数,添加查看结果树后启动,可以看到用户名和密码已经被参数化。
1、ls命令
ls查看目录的内容
–a:列举目录中的全部文件,包括隐藏文件。
–l:显示当前路径下的所有文件及文件夹的详细信息
–/:列出当前所有目录
–/路径:列出所选的文件夹内所有目录
–f:列举的文件显示文件类型
2、cd命令
格式:cd <路径>
cd命令后面跟一个路径,用于切换当前用户所在的路径,其中路径可以是绝对路径也可以是相对路径。
– . . :退回到上一层
–/:切换到根目录
–bin:进入到bin目录里
–/bin/sg:进入到bin目录下的sg文件夹下
3、rm命令
rm命令是删除命令,rm可接-r或-f。
–r:递归删除,可删除子目录及文件
–f:表示强制删除,不需要确认
4、mkdir命令
格式:mkdir <文件夹名字>
mkdir命令是创建文件夹的命令
–p a/b/c:创建多级的文件夹,意思是在当前的路径下创建a文件夹,a文件夹里包括b文件夹,b文件夹包括c文件夹,
– /data/path:在data的路径下创建一个名为path的文件夹
5、cp命令
格式: cp <文件><目标文件>
cp命令是复制文件或文件夹
–cp /data/logs /data/local/tmp/logs 复制/data路径下的logs到/data/local/tmp路径下。
–cp 1.sh /sdcard/ 复制当前路径下的1.sh到/sdcard下。
-i:互动:如果文件将覆盖目标中的文件,他会提示确认
-r:递归:这个选项会复制整个目录树、子目录以及其他
-v:详细:显示文件的复制进度
6、kill命令
格式:kill pid码
kill命令是用来终止进程
先通过输入ps au 查看所有进程 ,找到需要进行终止进程的PID码,
–9 PID:强制终止进程
7、cat命令
格式:cat <文件>
cat命令是用来读取文件内容
– text.txt:读取当前路径下teXt.txt文件内容。
–/bin/sg:读取bin路径下的sg文件内容
–tail -n 行数 文件名字 :取出文件后几行
–head -n 行数 文件名字 :取出前几行
–tail -f :持续查看文件动态的日志
8、vi命令
三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
按esc命令模式下:
–:q:退出
–:q!:强制退出
–:wq:保存并退出
–:set number:显示行号
–:set nonumber:隐藏行号
–/apache :在文档中查找apache 按n跳到下一个,shift+n上一个
–yyp:复制光标所在行,并粘贴
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
9、mv命令
格式:mv <文件名> <移动的路径>
mv命令是移动文件
—i:互动:如果选择的文件会覆盖目标中的文件,他会提示确认
–f:强制:它会超越互动模式,不提示地移动文件,属于很危险的选项
–v:详细:显示文件的移动进度
10、pwd命令
pwd命令是显示当前所在的目录
11、 touch命令
touch命令用来创建新文件,他可以创建一个空白的文件,可以在其中添加文本和数据。
touch newfile 该命令创建一个名为newfile的空白文件。
12、tar命令
tar命令是打包,压缩,解压缩的命令
gzip:
bzip2:
tar:打包压缩
–c:建立压缩文档
–x:压缩文件
–z:gzip压缩文件
–t: 查看压缩文档里面有哪些文件
–j: bzip2压缩文件
–v:显示压缩或解压缩过程 v(view)
–f:使用档名
PS: 1)c/x/t 只能选择其中一个
2)f后面必须紧跟压缩文档的名称
3)参数可以分开来写,也可以合在一起,即-czvf = -c -z -v -f
例:
tar -cvf tar_name_1.tar.gz test (将test目录打包成tar_name_1.tar.gz)
tar -czvf tar_name_2.tar.gz test (将test目录压缩打包成tar_name_2.tar.gz)
13、df命令
格式:df --a:列出全部文件系统和各分区的磁盘使用情况
df命令是用来检查硬盘的使用量
–i:列出I-nodes的使用量
–k:把各分区的大小和挂上来的文件分区的大小用k表示
–t:列出某一文件系统的所有分区磁盘空间使用量
–x:列出不是某一文件系统的所有分区磁盘空间使用量,和-t选项相反
–T:列出每个分区所属文件系统的名称
14、du命令
格式:du --a:显示全部目录及其次目录下的每个文件所占的磁盘空间
du命令是用于显示文件目录或大小
–b:显示目录和文件的大小,以B为单位
–c:最后再加上一个总计
–h:以KB、MB、GB为单位,提高信息可读性
–s:只列出各文件大小的总和
–x:只计算属于同一文件系统的文件
15、查看java进程
ps --ef|grep java:查看java进程
ps --ef :代表输出
16、fack命令
格式:fack --选项 <分区名称>
fsck命令的功能是检查和修复Linux文件系统
–a:自动修复文件系统,不询问任何问题,比较危险
–A:依照/etc/fstab配置文件的内容,检查该文件内所列全部文件系统。若没有附加参数"-P”,则会先检查/目录的文件系统,而不会同时检查所有文件系统
–R:采取互动方式,在修复时询问问题,让用户确认并决定处理方式
–S:依次检查作业而不是同时执行。当依次指定多个文件系统且采用互动的方式进行检查时,请使用此参数以便顺序执行,否则fsck可能会同时询问数个问题,让人不知所措
–V:显示命令执行的过程
–T:指定要检查的文件系统的类型
–N:不是真正执行指令,仅列出实际执行时会进行的动作
17、修改文件属性与权限
1、修改文件所属用户组
命令:chgrp
例如,修改文件install.log的所属用户组为users,则输入命令:chgrp users install.log
2、修改文件所有者
命令:chown
例如,修改install.log的所有者为bin,则输入命令:chown bin install.log
3.修改权限
命令:chmod
我们知道,Linux文件的基本权限有9个,分别是owenr、group、others三种身份各自有自己的r、w和x。假如文件的权限字符为:“-rwxrwxrwx”,这9个权限是三个三个一组的,我们可以使用数字表示权限:
r->4
w->2
x->1
所以,当文件权限为“-rwxrwx—”时,分数是:
owner->4+2+1=7
group->4+2+1=7
others->0+0+0=0
此时文件的权限数字就是770.
假如有一文件bashrc,权限字符为“-rwxrwxrwx”,我们需要修改为“-rwxr-xr–”,计算得权限数字为754,所以,执行命令: chmod 754 bashrc
18、添加用户命令
useradd --选项 用户名
–g:用户组
–u:用户号
–d:指定用户住目录
–s:shell文件 指定用户登录shell
1、登录云服务器(我使用的是阿里云),在usr目录下创建一个名为java的文件夹。
cd <路径>:进入目录文件
mkdir <文件夹名称>:创建文件或文件夹
2、在线下载java jdk,复制命令运行等进度条下载完成即可,下载完在当前的文件夹内会出现名为jdk-8u131-linux-x64.rpm的文件
命令: wget --no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept-securebackup-cookie” http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
3、为下载好的文件添加权限,运行完后文件会由红变绿,
命令:chmod +x jdk-8u131-linux-x64.rpm
4、使用rpm安装下载好的java jdk,等待进度条安装成功即可。
命令:rpm -ivh jdk-8u131-linux-x64.rpm
5、查看jdk是否安装成功,出现下面的提示即为成功。
命令:java -version
6、为安装好的jdk配置环境,安装好后在usr会出现一个名为java的文件夹,cd进入会出现一个名为jdk1.8.0_131的目录,cd再次进入,然后使用pwd查看此处的路径并复制。
接下来进入etc目录里,使用vi命令编辑一个名为profile的配置文件
运行命令进行编辑文件,输入i即可进行编辑,在末尾加入 :
export JAVA_HOME=/usr/java/jdk1.8.0_131 export
JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b : {JRE_HOME}/lib: JREHOME/lib:CLASSPATH export
JAVA_PATH= J A V A H O M E / b i n : {JAVA_HOME}/bin: JAVAHOME/bin:{JRE_HOME}/bin export
PATH= P A T H : PATH: PATH:{JAVA_PATH}
java home 后面填入的便是你刚才复制的jdk路径。
加入后按esc退出编辑模式,使用:wq保存退出即可。
1、登录云服务器(我使用的是阿里云),在usr目录下创建一个名为mysql的文件夹。
2、进入mysql文件夹,输入命令:
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
下载mysql。
3、下载完后在目录里会出现一个名为 mysql-community-release-el7-5.noarch.rpm 的文件,设置权限,输入:chmod +x mysql-community-release-el7-5.noarch.rpm ,会变为一个绿色的文件。
4、使用rpm命令安装mysql,命令:
rpm -ivh mysql-community-release-el7-5.noarch.rpm
运行等待进度条安装完成即可。
5、下载服务器,命令:
rpm -ivh mysql-community-release-el7-5.noarch.rpm:下载到当前文件夹内
yum install mysql-community-server -y --downloaddir=/usr/local/src:下载到指定的文件夹内
等到出现compiete,即为mysql安装成功。
6、service mysqld restart:重启mysql服务。
7、mysql -u root:进入mysql数据库,第一次进入不需要密码,
如果需要密码服务输入mysql -u root -p,便会提示你输入密码。
如果设置了密码就需要输入:mysql -u root -p
1、登录云服务器(我使用的是阿里云),在usr目录下创建一个名为tomcat的文件夹。
2、下载tomcat,输入:
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.zip
等进度条下载即可,
3、下载完就会出现一个名为apache-tomcat-9.0.36.zip的zip格式压缩包,
设置权限,命令:
chmod +x apache-tomcat-9.0.36.zip
4、使用unzip进行解压,如果是第一次使用需要下载,命令:
yum install -y unzip zip
出现compiete,便可即可使用unzip解压,
等待解压完即可,输入:chomd a+x -R *,为里面的所有文件添加权限。
5、进入apache-tomcat-9.0.36的bin目录里输入:
sh startup.sh
运行tomcat,
输入:
sh shutdown.sh
终止运行tomcat。
6、如果需要修改端口号,需要进入到apache-tomcat-9.0.36的conf目录,使用vi命令编辑server.xml,
进去后找到connector这一行,port后面便是端口号,默认的是8080,你可以修改为别的。
按i进行编辑,编辑完按esc退出编辑模式,输入:wq保存退出。
1、python优点
1)、易于阅读和维护
2)、有一个广泛的标准库
3)、python支持坏人各种主流数据库之间的交互
4)、可扩展性和可移植性
5)、GUI编程【图形化界面】
6)、可嵌入型【可以将python程序嵌入到c++中】
缺点:执行效率相对慢
2、python的变量的类型
基本的五种类型:
numbers:数字类型
String:字符串类型
List:列表
Tuple:元组
Dictionary:字典
数字类型包括:int(整数),long(长整数),True/False(布尔型),Float(浮点型),complex(复数)
字符串类型:字符串是字符的序列 。字符串基本上就是一组字符串、数字、下换线等做成的一个字符。
列表:列表用[ ]标识,也可以用中括号( [ ])包裹,元素的个数及元素的值可以改变。 列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
元组:元组元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是 只读的列表。
字典:我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
3、python中标识符命名规则
命名规则:由数字、字母、下划线构成;数字不开头;不能使用其他的特殊字符。
1)、 小驼峰命名法:myName
2)、大驼峰命名法:MyAge
3)、下划线:is_man
4、如何在python中查找关键字.
Python中有一个模块叫keyword,keyword中有两个成员:iskeyword 函数和 kwlist 列表(all = [“iskeyword”, “kwlist”])。其中kwlist中包含了所有的关键字,而iskeyword则用来查看某一个字符串是否是关键字。import keyword
下面就是一些关键字:
keyword.kwlist [‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’,‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’,‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’,'pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
5、python中常用的格式符号有哪些?
%c:字符
%s:通过str() 字符串转换来格式化
%i:有符号十进制整数
%d:有符号十进制整数
%u:无符号十进制整数
%o:八进制整数
%x:十六进制整数(小写字母)
%X:十六进制整数(大写字母)
%e:索引符号(小写’e’)
%E:索引符号(大写“E”)
%f:浮点实数
%g:%f和%e 的简写
%G:%f和%E的简写
6、python运算符
算术运算符:(+)加,(-)减,(*)乘,(%)取模,(/)除,(//)取整除 小数前的整数。
比较运算符:(>)大于,(<)小于,(==)等于,(!=)不等于,(>=)大于等于,(<=)小于等于
逻辑运算符:and(与),or(或),not(非)
7、python常用的数据类型转换
Python 支持四种不同的数值类型,分别是整型、长整型、浮点型和复数。
如下:
int(x):将x转换为一个整数
long(x):将x转换为一个长整数
float(x ) :将x转换到一个浮点数
str(x ):将对象 x 转换为字符串
repr(x ):将对象 x 转换为表达式字符串
eval(str ):用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ):将序列 s 转换为一个元组
list(s ): 将序列 s 转换为一个列表
chr(x ) :将一个整数转换为一个字符
unichr(x ):将一个整数转换为Unicode字符
ord(x ):将一个字符转换为它的整数值
8、python计较运算符
(>)大于,(<)小于,(==)等于,(!=)不等于,(>=)大于等于,(<=)小于等于
9、逻辑运算符是哪3个
and(与),or(或),not(非)
IO流
1、什么是IO流?
I(input) O(output)Stream
主要说的就是将数据读入内存或者内存输出的过程中使用的技术
常见的IO流操作,一般说的是【内存】与【磁盘】之间的输入输出。
2、作用
持久化数据,保证数据不再丢失!
3、IO流的分类
根据数据流动:
r — 输入流
w — 输出流
根据数据类型
b ---- 字节流
t ---- 字符流
4、IO流操作
使用全局函数open打开一个IO操作
open函数主要是用来操作打开一个本地文件
open参数:
【file】:表示一个文件的具体路径,或者要打开的文件名称
【mode】 : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
【buffering】 : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
【encoding】: 一般使用utf8
mode类型:
“r”——read表示输入流
“w”——write表示输出流
“t"——表示字符流 #使用字符操作IO流
“b”——表示字节流 #使用字节操作IO流 (字节流操作大数据的,不建议一次性读取)
“a”——表示追加输出
捕获异常与异常处理
1.导致程序在运行过程中出现非正常终端和退出的错误,称为异常。大多数的异常都不会被程序处理,而是以错误的形式展现出来。
2.异常有很多类型,Python 内置了几十种常见的异常,无需特别导入,直接就可以用。所有异常都是异常类,首字母是大写的。
1、常见的python异常
AttributeError:试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError :输入/输出异常;基本上是无法打开文件
ImportError :无法引入模块或包;基本上是路径问题或名称错误
IndentationError:语法错误(的子类) ;代码没有正确对齐
IndexError:下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError:试图访问字典里不存在的键
KeyboardInterrupt:Ctrl+C被按下
NameError:使用一个还未被赋予对象的变量
SyntaxError Python:代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError:传入对象类型与要求的不符合
UnboundLocalError:试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError:传入一个调用者不期望的值,即使值的类型是正确的
2、异常捕获
当发生异常时,我们就需要对异常进行捕获,然后进行相应的处理。python的异常捕获常用try…except…结构,把可能发生错误的语句放在try模块里,用except来处理异常,每一个try,都必须至少对应一个except。此外,与python异常相关的关键字主要有:
try/except:捕获异常并处理
pass:忽略异常
as:定义异常实例(except MyError as e)
else:如果try中的语句没有引发异常,则执行else中的语句
finally:无论是否出现异常,都执行的代码
raise:抛出/引发异常