测试开发基础

给定一个字符串,怎么判断是不是ip地址?手写这段代码,并写出测试用例

code

java版

public class IpTest{

    public static boolean isIpLegal(String str){
        //检查ip是否为空
        if(str == null){
            return false;
        }
        //检查ip长度,最短为:x.x.x.x(7位),最长为xxx.xxx.xxx.xxx(15位)
        if(str.length()<7 || str.length()>15 ){
            return false;
        }
        //对输入字符串的首末字符判断,如果是"."则是非法IP
        if(str.charAt(0) == '.' || str.charAt(str.length()-1) == '.'){
            return false;
        }
        //按"."分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP
        String[] arr = str.split("\\.");
        if(arr.length != 4){
            return false;
        }
        //对分割出来的每个字符串进行单独判断
        for(int i=0; i<arr.length; i++){
            //如果每个字符串不是一位字符,且以'0'开头,则是非法IP,如:01.002.03.004
            if(arr[i].length()>1 && arr[i].charAt(0) == '0'){
                return false;
            }
        }
        //对每个字符串中的每个字符进行逐一判断,如果不是数字0-9,则是非法IP
        for(int j=0; j<arr[i].length(); j++){
            if(arr[i].charAt(j) < '0' || arr[i].charAt(j) > '9'){
                return false;
            }
        }
        //对拆分的每一个字符串进行转换成数字,并判断是否在0~255之间
        for(int i=0; i<arr.length; i++){
            int temp = Integer.parseInt(arr[i]);
            if(i==0){
                if(temp < 1 || temp > 255){
                    return false;
                }
            }else{
                if(temp < 0 || temp > 255){
                return false;
                }
            }
        }
        return true;
    } 

    public static void main(String[] args){
      //输入一个字符串
      Scanner scanner = new Scanner(System.in);
      String ipStr = scanner.next();
      boolean isIpLegal = isIpLegal(isStr);
      if(isIpLegal){
          System.out.println(ipStr + "合法");
      }else{
          System.out.println(ipStr + "非法");
      }
   }
}

python版

def ip_check(ip_str):
# 题目要求入参只有字符串类型
    if not isinstance(ip_str, str):
        return False
    if len(ip_str) < 7 or len(ip_str) > 15:
        return False
    if ip_str.startswith('.') or ip_str.endswith('.'):
        return False
    ip_lst = ip_str.split('.')
    if len(ip_lst) != 4:
        return False
    for idx, ip_num in enumerate(ip_lst):
        if not ip_num.isdigit():
            return False
        if len(ip_num) > 1 and ip_num.startswith('0'):
            return False
        if idx == 0:
            if int(ip_num) < 1 or int(ip_num) > 255:
                return False
        else:
            if int(ip_num) < 0 or int(ip_num) >255:
                return False
    return True

有关ip地址的知识点:

有效可用的ip地址
A类 1.0.0.0 - 126.255.255.254
A私有 10.0.0.0 - 10.255.255.254
B类 128.0.0.0 - 191.255.255.254
B私有 172.16.0.0 - 172.31.255.254
C类 192.0.0.0 - 223.255.255.254
C私有 192.168.0.0 - 192.168.255.254
Windows自动分配 169.254.0.0 - 169.254.255.254
有效但不可用的IP地址
D类 244.0.0.0 - 239.255.255.254
E类 240.0.0.0 - 255.255.255.254
全网 0.x.x.x, x.x.x.0
广播 x.x.x.255
回环 127.0.0.0 - 127.255.255.254

测试用例

等价划分类
输入 结果
64.11.22.33 有效可用
10.12.13.14 有效可用,不能直接访问公网
151.123.234.56 有效可用
172.20.123.56 有效可用,不能直接访问公网
192.127.35.65 有效可用
192.168.128.128 有效可用,不能直接访问公网
169.254.15.200 有效可用,不能直接访问公网
224.1.2.3 有效不可用,超过有效范围(D类)
250.11.22.33 有效不可用,超过有效范围(E类)
0.200.3.4 有效不可用,全网地址
64.11.22.0 有效不可用,全网地址
10.12.13.255 有效不可用,广播地址
127.50.60.70 有效不可用,回环地址

用户登陆过程需要做哪些分析?

  1. 功能测试
    • 正常流程(正确账号密码,点击提交,验证能否正确登陆)
    • 异常流程(错误的账号密码,点击提交,验证登陆失败,并提示相应错误信息)
    • 登陆成功后能否正确跳转
    • 用户名和密码,太短或太长的处理(边界值法)
    • 用户名和密码,有特殊字符(比如空格)及其他非英文的情况
    • 记住用户名,记住密码
    • 登陆失败后,不记录密码
    • 用户名和密码前后有空格的处理
    • 密码是否是密文显示,使用“*”号或圆点等符号代替
    • 验证码的辨认难度,考虑颜***盲使用者),刷新或换一个按钮是否好用
    • 输入密码时,大写键盘开启时是否有提示信息
    • 什么都不输入,点击提交按钮,检查提示信息
    • 登陆token测试
  2. 界面测试
    • 布局是否合理,按钮和表单是否整齐
    • 按钮和表单高度和长度是否符合要求
    • 界面风格是否符合UI设计稿
    • 文字有无错别字
  3. 性能测试
    • 打开登陆页面,需要的时间是否在需求要求的时间内
    • 输入正确的账号密码,点击登陆,是否在需求时间内跳转成功
    • 模拟大量用户同时登陆,检查一定压力下能否正常跳转
  4. 安全性测试
    • 用户名或密码是否是通过加密方式,发送给后端服务器
    • 用户名和密码应该在前端和后端做双重验证
    • 防止CSRF攻击,是否存在token
    • 用户名和密码的输入框,应该屏蔽SQL注入攻击
    • 用户名和密码的输入框,应该禁止输入脚本(防止xss攻击)
    • 防止暴力破解,检测是否有错误登陆的次数限制
    • 是否支持多用户在同一机器上登陆
    • 同一用户能否在多台机器上登陆
  5. 可用性测试
    • 是否可以用全键盘操作,是否有快捷键
    • 输入用户名,密码后按回车,是否可以登陆
    • 输入框是否可以Tab切换
  6. 兼容性测试
    • 不同浏览器下能否显示正常,且功能正常(IE,6,7,8,9,10,11,Firefox,Chrome,Safari)等
    • 同种浏览器下不同版本能否显示正常且功能正常
    • 不同的操作系统是否能正常工作(Windows, Mac)
    • 移动设备上是否正常工作(iOS,Android)
  7. 本地化测试
    • 不同语言环境下,页面的显示是否正确

      测试的相关流程

答:

按W模型:

需求测试 -> 概要设计测试 -> 详细设计测试 -> 单元测试 -> 集成测试 -> 系统测试 -> 验收测试

我工作中实际测试流程:

需求评审 -> 技术评审 -> case评审 -> 开发自测以及冒烟测试 -> 整体提测(集成测试) -> 回归测试 -> 系统测试 -> 验收测试


测试项目具体工作是什么

答:

  1. 搭建测试环境

  2. 撰写测试用例

  3. 执行测试用例

  4. 写测试计划、测试报告

  5. 测试并提交BUG

  6. 跟踪BUG修改情况

  7. 自动化测试

  8. 性能测试、压力测试、安全测试等其他测试

    如何对电梯进行测试

  9. 功能:上升、下降、停止、开门、关门、梯内电话、灯光、指示灯,监控等;

  10. 性能:速度、反应时间、关门时间等;

  11. 压力:超载、尖锐物碰撞电梯壁等;

  12. 安全:停电、报警装置、轿箱停靠位置、有人扒门时的情况等;

  13. 可用性:按键高度、操作是否方便、舒适程度,是否是就近原则停靠等;

  14. UI:美观程度、光滑程度、形状、质感等;

  15. 稳定性:长时间运行情况等;

  16. 兼容性:不同电压是否可工作、不同类型电话是否可安装等。

  17. 异常场景: 突然停电时的情况、障碍物阻挡、

  18. 交互测试: 多次点击同一楼层号码、与其他电梯之间是否协作良好、同时按关门和开门按钮、电梯运行期间上人下人再按新的楼层等

  19. 优化点:比如电梯按钮的设计是否符合一般人的习惯,按钮颜色关门后是否清晰可见数字等等

用户登陆过程需要做哪些分析?

  1. 功能测试
    • 正常流程(正确账号密码,点击提交,验证能否正确登陆)
    • 异常流程(错误的账号密码,点击提交,验证登陆失败,并提示相应错误信息)
    • 登陆成功后能否正确跳转
    • 用户名和密码,太短或太长的处理(边界值法)
    • 用户名和密码,有特殊字符(比如空格)及其他非英文的情况
    • 记住用户名,记住密码
    • 登陆失败后,不记录密码
    • 用户名和密码前后有空格的处理
    • 密码是否是密文显示,使用“*”号或圆点等符号代替
    • 验证码的辨认难度,考虑颜***盲使用者),刷新或换一个按钮是否好用
    • 输入密码时,大写键盘开启时是否有提示信息
    • 什么都不输入,点击提交按钮,检查提示信息
    • 登陆token测试
  2. 界面测试
    • 布局是否合理,按钮和表单是否整齐
    • 按钮和表单高度和长度是否符合要求
    • 界面风格是否符合UI设计稿
    • 文字有无错别字
  3. 性能测试
    • 打开登陆页面,需要的时间是否在需求要求的时间内
    • 输入正确的账号密码,点击登陆,是否在需求时间内跳转成功
    • 模拟大量用户同时登陆,检查一定压力下能否正常跳转
  4. 安全性测试
    • 用户名或密码是否是通过加密方式,发送给后端服务器
    • 用户名和密码应该在前端和后端做双重验证
    • 防止CSRF攻击,是否存在token
    • 用户名和密码的输入框,应该屏蔽SQL注入攻击
    • 用户名和密码的输入框,应该禁止输入脚本(防止xss攻击)
    • 防止暴力破解,检测是否有错误登陆的次数限制
    • 是否支持多用户在同一机器上登陆
    • 同一用户能否在多台机器上登陆
  5. 可用性测试
    • 是否可以用全键盘操作,是否有快捷键
    • 输入用户名,密码后按回车,是否可以登陆
    • 输入框是否可以Tab切换
  6. 兼容性测试
    • 不同浏览器下能否显示正常,且功能正常(IE,6,7,8,9,10,11,Firefox,Chrome,Safari)等
    • 同种浏览器下不同版本能否显示正常且功能正常
    • 不同的操作系统是否能正常工作(Windows, Mac)
    • 移动设备上是否正常工作(iOS,Android)
  7. 本地化测试
    • 不同语言环境下,页面的显示是否正确

回归测试:

回归测试是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。

1、自我介绍;
2、讲一下项目所承担的职责;
3、讲解笔试编程题的思想;
4、讲一下项目里面的测试用例;
5、智力题:25匹马,5个跑道,比赛排出1、2、3名,问最少跑几次;
6、对电梯整体进行设计测试用例;
7、面试官给出一道题,进行设计测试用例;
8、对斐波那契数列进行算法编程;
9、对于1-100找出里面的质数,进行算法编程;
10、了解递归?
11、计算机网络:讲述七层都叫什么,每层的作用;
12、TCP协议的三次握手;
13、对linux了解?都有什么命令;进程的命令等等;
14、对数据库了解?写一个计算每个学生的总成绩的语句;

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:35
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
评论
点赞
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务