java自动化测试面试题(java自动化单元测试)
Java编程常见面试题目,要求正确答案?
第一,谈谈final, finally, finalize的区别。
final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //;page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,和的区别。
是位运算符。是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a 0); // throws an AssertionError if a = 0
断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
Javac -source 1.4 Test.java
要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
第八,GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto?java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是。
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 3
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个Singleton出来。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
第三十三 Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
java的面试题有哪些?
正如圈内的大佬所说的那样,基础很重要。浙江优就业的老师帮你总结一下。
常见的面试题有:
安卓图片加载后一直在手机如何优化?
解释一下安卓中SharedPreferences类?
客户端和服务端如何收发信息?
activity里如何发起http请求?
安卓UI线程调用sleep?
static类如何回收?
接口和抽象类
JVM垃圾回收算法
如何区分哪些是老年代对象?
线程池
线程终止
设计模式
单例
JDBC
Runnable
run()
start()
区别?
Socket
静态代码块和构造器的执行顺序
final的map能否修改?
String
StringBuffer
StringBuild区别?
内存泄露?
ArraryList
LinkedList
HashMap原理
linux常用命令
查看进程PS
redis相关?
运行时异常
一个对象为空,怎么进行处理?
泛型
哪里用到?什么好处
?
对数据库进行一些操作,mybatis要进行哪些操作?
为什么Java是跨平台?
匿名内部类能不能有外部内的接口?(反正跟匿名内部类有关)?
@Test
测试用例
干嘛
如何获取http的参数?
Controller的参数设置,为什么是单例的?
@autowired装载一个类,构造器里能不能直接调用这个类
?
spring和springmvc区别?
springmvc跨域?
锁的种类等
望采纳!
java基础面试题有哪些?
下面是10道java基础面试题,后附答案
1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。
3.JDK 和 JRE 的区别是什么?
Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。
4.是否可以在 static 环境中访问非 static 变量?
static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java 支持的数据类型有哪些?什么是自动拆装箱?
Java 语言支持的 8 中基本数据类型是:
?byte
?short
?int
?long
?float
?double
?boolean
?char
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。
6.Java 支持多继承么?
不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。
Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。
8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
9.接口和抽象类的区别是什么?
Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
?接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
?类可以实现很多个接口,但是只能继承一个抽象类
?类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
?抽象类可以在不提供接口方法实现的情况下实现接口。
?Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。
?Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。
?接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
最后祝你面试顺利!
自动化测试面试HR的问题,你也可分分钟通过!!!
这个应该大家都会,我也就不浪费时间
python+selenium+excel文件用数据驱动? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 具体怎么实现的,先写一个base文件做基础负责调用实际方法,还有数据的读写;然后往上有专门封装UI操作的method文件,和读写关键字文件的方法文件,再上层是一些复杂操作和逻辑的工具单独再封装成独立的文件。
post是往服务器发送数据,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? get是请求数据,安全性较低
拿到cookie和相应api文档内的参数做请求,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用python的request库或者postman,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 而我postman就填写查询参数,然后请求头里面的cookie调用就行了
登陆后拿到token,然后用token带参数去请求接口
而我平时在做的时候都是打开开发模式,直接在header里面找到一长串token复制下来使用,也没去研究是request还是response里面去传token,还是拿token。
上面是我在面试遇到过,但我还给大家总结其他面试可能会遇到的。
说出linux常用命令,一般要30到15个的样子 :
基础命令:
cd 切换目录
ls -l列出文件详细信息
ls -a列出当前目录下的所有文件
touch创建文件
mkdir 创建目录
echo ?echo "内容" mook hello 创建带有内容的文件 ;
cat 查看内容文件
cp 拷贝
mv移动或重命名
rm -r 递归删除;? ? ? ??
rm -f 强制删除? ? ? ?
wc 统计文本中行数、字数、字符数? ? ? ? ? ? ? ? ? ??
网络命令:curl利用URL规则在命令行下工作的文件传输工具 ?curl ? ? ? ? ? ? ??
netstat:netstat 显示网络状态信息? ? ? ? ? ? ? ? ? ? ? ?
telnet:用于登录远程主机 ?telnet 127.0.0.1? ? ? ? ? ? ? ? ??
系统命令:? ? ? ? ? ? ? ? ? ? ? ? ? ?
ping:测试网络连通? ? ? ? ? ? ? ??
man:查看帮助? ? ? ? ? ? ? ?
kill:杀死进程 ?top:动态显示当前耗费资源最多的进程信息? ? ? ? ? ?
ps:显示瞬间进程状态? ? ? ? ? ? ? ??
df:查看磁盘大小? ? ? ? ? ? ? ? ? ?
df -h:带有单位显示磁盘信息
OSI 7层模型指的是哪些内容:
1、物理层:建立、维护、断开物理连接
2、数据链路层:逻辑连接、硬件地址寻址、差错校验
3、网络层:逻辑地址寻址、不同网络之间的路径选择、IP
4、传输层:传输数据的协议,TCP/UDP
5、会话层:建立、管理、终止会话,本地与远程主机的会话
6、表示层:数据的标示、安全、压缩、JPEG、ASCII等
7、应用层:与最终用户的接口,HTTP/HTTPS/SMTP等
Http协议中get/post的区别:
1、功能差异:get:去服务器取东西 ?post:从客服端上传东西用POST
2、数据传输:get把传输数据放在URL所带的参数里面,post放在body里面
3、安全性:get没有post安全性高,携带的参数数据会被发现,而post对用户不可见
tcp和 UDP的区别:
TCP:面向连接、传输可靠、应用场合:传输大量的数据、速度慢
UDP:面向非连接:如QQ/微信的消息,离线后再登陆可以收到消息、传输不可靠、少量数据、速度快
TCP连接三次握手具体过程
TCP连接都需要三个阶段:连接建立、数据传送和连接释放。三次握手就发生在连接建立阶段。
socket建立连接的过程:
1、服务器建立监听,socket,bind,listen
2、客服端发送请求,connect,send
3、连接确认,accept,response
进程和线程的区别?
进程:独立数据空间,进程间是不共享资源数据,系统调度
线程:执行程序的最小单元,进程内线程间共享资源,系统调度
PS:一个进程可以有多个线程,多个线程可以并发执行
进程有哪些状态?
就绪状态:已获取处理器以外所需资源,等待分配处理器资源
运行状态:占用处理器资源运行,此状态进程数=CPU数
阻塞状态:进程等待某种条件,在条件满足之前无法执行
进程同步和互斥的区别?
互斥:
1、某一资源同时只允许一个访问者对其进行访问
2、具有唯一性和排他性
3、互斥无法限制访问者对资源的访问顺序,即访问是无序的
同步:
1、基于互斥、经其他机制实现访问者对资源的有序访问
2、大多数情况下,同步已经实现了互斥,写入资源是互斥的
3、少数情况下,可以允许多个访问者同时访问资源
进程间通信都包括哪些?
管道:半双工通信方式,数据单向流动,父子进程间
命名管道:半双工通信方式,无亲缘关系进程间通信
信号量:是计数器,锁机制,控制多进程多资源访问
消息队列:消息链表,存在内核中由消息队列标识符标识
信号:比较复杂的通信方式,通知进程某个事件已经发生
共享内存:映射一段能被多个进程可访问的内存
进程的调度算法都有哪些?
先来先服务、短作业优先、时间片轮转调度算法、高响应优先、优先权调度算法、多级队列调度算法
死锁产生的原因:
1、资源竞争
2、进程推进顺序不当
必要条件:互斥、不剥夺,请求与保持,环路等待
页面置换算法有哪些?
最佳置换算法、先进先出置换算法、最近最久未使用置换算法、Clock置换算法(最近未使用算法)
makefile的作用是什么?
1、定义规则,指定哪些文件先编译、后编译、重新编译
2、makefile的好处,自动化编译
3、makefile 需要make工具解释执行
什么是ANR?
ANR:应用无法响应
Activity的最长执行时间是5S
用户可以选择等待或者强行关闭
安卓常见的五种布局:
FrameLayout:框架布局
LinearLayout:线性布局
AbsoluteLayout:绝对布局
RelativeLayout:相对布局
TableLayout:表格布局
安卓中动画有哪几种类型:
Tween动画,组件移动、缩放、透明度的变化
Frame动画,通过顺序播放来实现,类似电影
Adb基本命令:
app安装:adb -p 手机ip地址(192.168.0.203:5555) install 包APK的位置
app重复安装:adb -p 手机ip地址(192.168.0.203:5555) -r install 包APK的位置
app卸载:adb -p 手机ip地址(192.168.0.203:5555) uninstall 包名(cn.comein)
查看手机是否连接:adb advices ?adb connect 192.168.0.203:5555
Selendroid是instrumentation的一次封装;
Selendroid四大组件:
Selendroid Client:Webdriver +移动特性的实现
Selendroid Server:一个Instrumentation APK
AndroidDriver-App:一个WebViewActivity,即浏览器
Selendroid-Standalone:大总管,负责准备环境
Robotium基于Instrumentation进行封装,实现的Android测试框架
封装了Solo类库,提供自动化测试API
由于是基于Instrumentation,测试时需要源码
Appium的理念:不需要APP源码;不局限于语言和框架;接口统一,不需要重复开发;必须是开源的
C/S架构,Appium核心是一个Web服务器
Session:客户端初始化session与服务器交互
Desired Capabilites:初始化时的键值对组合
Appium Server:操作与驱动手机的
Appium Client:支持多语言调用
Appium环境包括哪些:
Android SDK/JDK/Appium/
Pycharm Python环境
库:Selenium/Appium-Python-Client
Appium支持哪些开发语言:Java/javascript/PHP/Python/Ruby/C?/perl/Object C
App初始化时的配置:
platformName:目标设备平台Android/ios
platformVersion:目标设备的平台版本
deviceName:目标设备名称
appPackage:App包名(Android)
appActivity:App Activity名称
automationName:自动化驱动类型Selendroid/Appium
unicodeKeyboard:是否使用Appium输入法
resetKeyboard:恢复默认键盘
单元测试unittest测试框架:
1、TestFixture:SetUp: ??TestCase: ??TearDown:
2、TestCase
3、TestSite
4、TestRunner
数据驱动DDT:
黑盒测试-功能测试
数据驱动单元测试:为数据源中每行重复进行一种单元测试
常用情况是使用多个输入值测试API
效果:使用多个数据运行一条用例,使其表现为多条用例
原理:通过Python的 ,装饰每条用例。
以上仅供参考和借鉴,希望对你有所帮助!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 小枫文章整理不易,欢迎各位朋友点赞!
测试工程师面试常问的问题有哪些
比如,如何测试一个web的登录页面,如何测试一个电话机等等。
1、出几道题看你对自动化测试的是否了解,是否明白linux的基本指令,?给你一个页面,让你写case,java或者python的代码能力考察。
2、软件测试的流程,测试用例的设计(用例格式、设计思路),Bug的流程(生命周期),测试计划,软件测试过程中涉及的文档等等。
3、初级的一般无非就是功能测试多一些,比如软件测试整个流程是什么,测试设计,测试计划,测试用例编写方法,用例执行,跟踪管理,测试报告重点,还是用例的编写等等。
4、如果是中高级的话,接口测试,性能测试等等部分会问到一些,包括软件测试管理等等。