一、计算机基础
1、计算机组成部分
运算器:计算机中完成各种二进制编码算数和逻辑运算操作的部件。主要进行逻辑运算、数学运算,与控制器共同组成中央处理器。
控制器:计算机的控制中心,协调机器各部分的运作,使之有条理的进行。
存储器:计算机中用于存放数据信息和程序的部件,并且都是用二进制形式表示的。
输入设备:用于向计算机输入信息、程序的设备。输入设备是将各种形式信息转换成计算机能够识别的二进制代码的数字形式并且储存,常见的输入设备有键盘、鼠标、摄像头等等。
输出设备:用于变换从计算机输出信息形式的设备。输出设备将计算机运算出的二进制代码转换成其它设备可以接收和识别的信息形式,像打印机、显示器、音响等都是输出设备。
2、操作系统分类
1)按用户界面的使用环境和功能特征分为:批处理操作系统,分时操作系统,实时操作系统;
2)按计算机体系结构的发展分为:个人操作系,智能卡操作系统,网络操作系统、分布式操作系统、嵌入式操作系统,、批处理操作系统。
分时系统:CPU的时间划分为若干个小片段,每个任务依次执行一小片段。主要应用于多用户操作,如linux。
实时操作系统:指使计算机能在规定的时间内及时响应外部事件的请求。如u-cos.
网络操作系统:相互通信及资源共享,两种模式:集中式模式、分布式模式。
分布式操作系统:是一个统一的操作系统,实现资源的深度共享。
嵌入式操作系统特点:嵌入式操作系统具有高可靠性、实时性、占有资源少、智能化能源管理、易于连接、低成本等优点。
网络操作系统和分布式操作系统主要不同在于:
网络操作系统可以构架于不同的操作系统。网络操作系统不要求对网络资源透明的访问,对本地资源和异地资源访问区别对待。
分布式操作系统强调单一操作系统对整个分布式系统。换句话说当面临大的计算任务,就是一台电脑处理不过来,多台电脑同时处理。
3、B/S和C/S架构
B/S(Browser/Server,浏览器/服务器)架构和C/S(Client/Server,客户端/服务器)架构是两种常见的分布式系统架构模式。它们之间的联系与区别主要体现在以下几个方面:
联系:
1.都属于客户端-服务器架构:无论是B/S还是C/S架构,其核心都是将应用分为客户端和服务端两部分,客户端负责用户交互,服务端负责数据处理和存储。
2.都需要网络连接:两种架构都需要通过网络来实现客户端与服务器之间的通信。
3.都可以支持多用户访问:这两种架构都能够支持多个客户端同时连接到服务器上进行操作。
区别:
1.客户端形式不同:
B/S架构的客户端是浏览器,用户通过浏览器直接访问Web应用程序。
C/S架构的客户端是一个独立的应用程序,需要预先安装在用户的计算机上。
2.维护成本不同:
B/S架构由于客户端统一为浏览器,因此维护相对简单,只需更新服务器端的应用程序即可。
C/S架构可能需要在每个客户端机器上进行软件升级或维护工作,这增加了维护的成本和复杂度。
3.性能差异:
B/S架构依赖于浏览器的能力,对于复杂的业务逻辑和大量的数据处理可能不如C/S架构高效。
C/S架构可以利用客户端的计算能力,适合处理大量数据和复杂的图形界面,提供更好的用户体验。
4.安全性差异:
B/S架构中,所有数据和逻辑都在服务器端运行,这通常被认为更安全,因为不需要担心客户端上的数据泄露。
C/S架构可能面临客户端的安全问题,比如客户端软件被恶意篡改等风险。
5.可扩展性:
B/S架构更容易扩展,因为它只需要更新服务器端,而不需要对客户端进行任何修改。
C/S架构扩展时可能需要更新客户端软件,这可能会导致一定的延迟。
6.平台兼容性:
B/S架构通常具有更好的跨平台兼容性,因为大多数浏览器都能运行标准的Web技术栈(如HTML、CSS、JavaScript)。
C/S架构可能需要针对不同的操作系统开发不同的客户端版本。
4、常用DOS命令
二、测试理论
1、软件测试目的
直观的目的肯定是通过对软件系统或程序的测试,发现其中的错误。
软件测试的目的具体如下:
① 验证软件需求和功能是否得到了完整的实现
② 尽可能早的发现软件中的bug
③ 尽可能多的发现软件中的bug
④ 验证软件是否可以发布
⑤ 对软件的质量、性能、效率做出合理的评估
⑥ 预防用户使用可能出现的问题
⑦ 预防下个版本可能出现的问题
2、软件测试定义
软件测试(Software Testing),其经典定义或是标准定义:在规定的条件下对程序进行操作,以发现程序错误。
通俗来讲,就是通过“人工”或“自动化”的手段,来测试某个程序或系统,进而检验其是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
3、软件测试原则
① 所有测试的标准都是建立在用户需求之上
② 软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始进行测试
③ 尽可能早的开展测试,越早发现错误,修改的代价越小。
④ 合理控制测试的深度与广度,完全测试是不可能的(即:测试的投入与产出要均衡)
⑤ 80-20原则,软件中80%的bug可以在分析、设计与评审阶段就能被发现与修正,16%的缺陷在系统的软件测试过程中发现,最后剩下的4%是用户长期使用过程中才能暴露出来。
⑥ 发现错误较多的程序段,需进行更深入的测试。
⑦ 在进行软件测试的过程中要严格执行测试计划,排查测试的随意性,以免发生疏漏或者重复无效的工作。
⑧ 软件开发人员应当避免测试自己的程序。
4、测试基本流程
步骤一:需求分析
步骤二:制定测试计划
步骤三:设计测试用例、编写测试用例
步骤四:实施测试(执行测试用例)
步骤五:提交bug,提交缺陷报告
步骤六:生成测试总结和报告
详细论述如下:
(一)需求分析:
“需求分析”阶段:这个阶段主要是对业务的学习,包括:阅读需求,理解需求,分析需求点,参与需求评审会议,评审需求是否合理。
(二)制定测试计划:
这个阶段的主要任务就是通过参考“软件需求规格说明书”以及“项目总体计划”,来编写测试计划。
所编写的测试计划的内容包括:
① 测试范围(依据需求文档)
② 进度安排(时间进度、流程进度)
③ 人力、物力的分配(人员有哪些、都有哪些业务点、以及相对应的资源,对于这些的分配)
④ 对于整体测试策略的制定
⑤ 对于风险评估与规避措施要有一个制定
(三)设计测试用例、编写测试用例
通过参考需求文档(原型图)、概要设计、详细设计等文档,来编写测试用例,用例编写完成之后会进行评审。
(四)实施测试(执行测试用例)
实施测试主要包括以下几个部分:
① 搭建相应的测试环境
② 执行冒烟测试(预测试)
③ 进行正式的测试
④ 回归测试
(五)bug的管理,提交缺陷报告
这个阶段主要是将执行测试过程中发现的bug提交到bug管理平台上,最后可能需要提交缺陷报告。
(六)生成测试总结和报告
在这个阶段需要给出测试报告,并确认是否可以上线。
5、软件测试意义
解放研发人员和售后服务人员。
软件测试不仅可以降低软件质量风险,使研发人员能够更专心解决程序的算法和效率问题,同时,经过严格检验的完整产品也减轻了售后服务人员的工作量。