软件测试
软件测试概念我认为概念是推理的基础,认识概念才能正确的运用相关技术
软件测试是什么
一种发现软件缺陷的的活动
评估软件的特性或能力,确定其是否达到预期
为什么要软件测试
为了保证软件质量
关于软件测试的两种观点
测试是为了证伪(Myers)
假设程序是错误的,证明其正确
测试是为了证明软件是正确的(Bill Hetzel)
假设程序是正确的
什么是软件质量
即产品所满足的特性
这些特性可能是用户的需求,产品固有的性质或者是行业标准所规定的
内部质量
主要是代码,极其相关的特性
外部质量
主要是产品的功能
使用质量
从场景和用户的角度出发分析质量
软件缺陷
从内部看: 软件设计,开发,维护的不合理
从外部看: 软件功能的失效或违背
软件测试分类按阶段分:
需求评审: 需求 SRS 是否完整,正确,清晰
设计评审: 设计结果是否符合需求
单元测试: 函数,类,模块
集成测试: 几个完成的单元作为系统一起测试
系统测试: 测试整个系统(软件,硬件)
验收测试: 用户参与,在用户环境,使用用户数据作测试
alpha测试: 开放外部用户参与测试
be ...
Linux 复习
选择题(15分)
新建文件 : touch mkdircat echo vimrm mv
简答题(16分)
yum 本地源配置
手动添加用户,系统变化的6个地方:
/etc/passwd
/etc/shadow
/etc/gpasswd
/etc/gshadow
/home/..
/var/spool/mail
操作题(48分)
权限 字母数字
chmod
cron
cut sed awk
su - sudo su 描述
改变用户名,组名usermod
硬链接,软链接,如何建立,作用
打包,压缩
增删改查
touch\mkdir
rm -rf
vi
find\grep
别名 alias
Shell 编程(16分)
1234567891011121314151617181920212223242526#!/bin/bash# # 输入用户名,数量,密码 # 创建对应数量的用户并设置初始密码# # 提醒读入read -p "input username" nameread -p "input number of user" n ...
Linux 小技巧
这篇记录一些我在学习和使用 Linux 过程中发现的小技巧,所谓技巧就是说不用它也可以,但是用了会更简单
有时候需要后面的表达式先执行,就可以用
1express1 $(express2)
$(…)和${…}的区别:
$():它表示命令替换操作符。在$()内部包含一个命令,它会执行该命令并将其输出作为字符串返回。例如,$(date)会执行date命令并将当前日期和时间的字符串表示形式作为字符串返回。这个字符串可以被赋值给一个变量,或者被传递给其它命令进行进一步处理。
${}:它表示变量替换操作符。在${}内部指定一个变量名,它会将该变量的值替换为该字符串。例如,${HOME}会将HOME环境变量的值替换为一个字符串,该字符串代表当前用户的主目录路径。这个字符串也可以被赋值给一个变量,或者被传递给其它命令进行进一步处理。
计算
1$((express))
Webscoket 核心
Webscoket 核心是什么一种服务端/浏览器端双向推送技术
为什么因为 HTTP 协议有一个缺陷:通信只能由客户端发起
怎么用构造函数(返回一个 WebSocket 对象)
1WebSocket(url[, protocols])
Constant
Value
WebSocket.CONNECTING
0
WebSocket.OPEN
1
WebSocket.CLOSING
2
WebSocket.CLOSED
3
属性
解释
binaryType
使用二进制的数据类型连接。
bufferedAmount
只读 未发送至服务器的字节数。
extensions
只读 服务器选择的扩展。
onclose
用于指定连接关闭后的回调函数。
onerror
用于指定连接失败后的回调函数。
onmessage
用于指定当从服务器接受到信息时的回调函数。
onopen
用于指定连接成功后的回调函数。
protocol
只读 服务器选择的下属协议。
readyState
只读 当前的链接状态。
url
只读 W ...
MongoDB 安装和使用
MongoDB 安装和使用使用 Docker 安装Pull the MongoDB Docker Image1docker pull mongo
Run the Image as a Container12345mkdir -p ~/.mongodb/dbdocker run --name mongo -d -p 27017:27017 --privileged=true \ -e MONGO_INITDB_ROOT_USERNAME=root \ -e MONGO_INITDB_ROOT_PASSWORD=021009 \ -v ~/docker/mongodb/db:/data/db mongo
Connect to the MongoDB Deployment with mongoshOpen an interactive container instance of mongo and connect to the deployment with mongosh.
1docker exec -it mongo mongosh
mongo 体系结构
SQL术语 ...
Archlinux BspWM 外接显示器
了解123man xrandr # 查看帮助xrandr # 获取显示器接口信息
显示配置非必要
1vim /etc/X11/xorg.conf.d/10-monitor.conf
12345678910111213Section "Monitor" Identifier "eDP-1-1" Option "Primary" "true" Option "DPMS" "true" Option "PreferredMode" "1920x1080_60.00"EndSectionSection "Monitor" Identifier "HDMI-0" Option "DPMS" "true" Option "PreferredMode&q ...
ArchLinux 触摸板调教
开始之前OS:Archlinux
WM:bspwm
安装触摸板驱动sudo pacman -S xf86-input-libinput
配置文件
1sudo vim /etc/X11/xorg.conf.d/30-touchpad.conf
1234567Section "InputClass" Identifier "touchpad" Driver "libinput" MatchIsTouchpad "on" Option "Tapping" "on" Option "TappingButtonMap" "lmr"EndSection
写入配置之后记得重新启动一下
配置触摸板手势安装配置 libinput-gestures
1sudo pacman -S libinput-gestures
libinput-gestures的文档中说了:必须是input组的成员才能具有读取触摸板设备的 ...
Postman 但是 React
0x00要求创建一个前后端分离项目,并使用Postman测试后端API
0x01 分析开始之前
Postman的大名早有所耳闻,以前没有使用它只因为觉得它的功能有些许鸡肋(请求响应而已)
所以我决定写一个Postman的子集(t4t-api),并用它来做一些简单的接口测试。
创建一个前后端项目,为了快速创建项目,前端使用React框架,后端使用SpringBoot。
Postman的界面主要分为三个区域:(1)请求发起区域(2)结果显示区域(3)历史记录区域
下面的前端项目也采用这种功能布局。
0x02 前端1.创建一个React项目
2.经过一晚上的努力,看看效果
0x03 后端项目这里的后端项目采用我以前写好的几个项目:
1.文件上传下载项目(还没写完)
页面大概长这样
用手机扫描二维码就可以打开网页,然后点击“Browse”就可以选择要上传的文件,然后点击“UPLOAD”上传。
要测的主要就是这两个接口:
GET请求返回二维码
GET请求返回html
2.SpringMVC 学习项目
前面测了GET,这里测试POST:
0x04 使用Postman测试API1.测试返回 ...
React 中的 hook
HookReact中的Hook是React 16.8版本引入的新特性,它可以让函数组件拥有类组件的一些特性,例如状态管理和生命周期方法。使用Hook可以使代码更加简洁、易于理解和维护。
React中常用的Hook包括:
useState:用于在函数组件中添加状态管理功能。
useEffect:用于在函数组件中添加生命周期方法。
useContext:用于在函数组件中使用上下文。
useReducer:用于在函数组件中使用Reducer进行状态管理。
useCallback:用于在函数组件中缓存回调函数,避免不必要的重新渲染。
useMemo:用于在函数组件中缓存计算结果,避免不必要的重复计算。
useRef:用于在函数组件中创建可变的引用对象。
使用Hook可以使函数组件具有更多的能力,同时也可以提高代码的可读性和可维护性。
useStateuseState是React中最基础的Hook之一,它可以让函数组件拥有状态管理的能力。使用useState需要先导入:
12import React, { useState } from 'react'; ...
Java 更多"特性"
不仅仅是语言特性SPIJava SPI(Service Provider Interface)是一种机制,它允许在运行时动态地替换接口的实现。这种机制允许开发人员编写一组接口,然后由不同的实现提供者提供不同的实现。SPI机制是Java标准库中的一部分,可以用于扩展Java应用程序的功能,而无需修改代码。SPI机制通过类加载器机制实现,它允许应用程序在运行时动态地加载和卸载实现。在Java中,SPI机制主要用于服务发现、插件机制等场景。
一个常见的例子是Java数据库连接(JDBC)。JDBC是一种标准的API,它定义了一组接口,用于访问各种不同类型的数据库。然而,不同的数据库供应商会提供不同的JDBC驱动程序来实现这些接口。在Java中,可以使用SPI机制来动态地加载和使用这些不同的JDBC驱动程序,而不需要在代码中显式地指定使用哪个驱动程序。这样,应用程序就可以在运行时根据需要选择不同的数据库驱动程序,而不需要修改代码。
Java AgentJava Agent是一种Java应用程序,它可以在运行时监控和修改Java应用程序的行为。Java Agent通常被用于性能分析、调试、安全审 ...