1.app非功能测试考虑哪些方面?
1.兼容性测试(确保APP在各种终端设备、各种操作系统、网络情况下、屏幕分辨率下均可正常运行)
2.性能测试(流量测试、弱网测试、中断测试、耗电测试、压力测试、负载测试)
3.低资源测试{(当系统在重要资源(内存、硬盘空间或其他系统定义的资源)降低或完全没有的情况下会出现的状况)}
2.线程和进程的区别
什么是线程?
线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。
什么是进程?
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。
区别在哪里?
1.进程是资源分配的最小单位,线程是程序执行的最小单位。2.线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管理的负担要轻,意味着线程的代价或开销比较小。
3.线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。
4.但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
5.线程没有地址空间,线程包含在进程的地址空间中。
6.子进程不对任何其他子进程施加控制,进程的线程可以对同一进程的其它线程施加控制。子进程不能对父进程施加控制,进程中所有线程都可以对主线程施加控制。
共同点在哪里?
进程和线程都有ID/寄存器组、状态和优先权、信息块,创建后都可更改自己的属性,都可与父进程共享资源、都不能直接访问其他无关进程或线程的资源
3.get和post请求的区别
GET请求和POST请求的区别:
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
5.get产生一个tcp数据包,post产生两个tcp数据包
6.对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
7、Get方式需要使用Request.QueryString来取得变量的值,而post方式通过Request.From来获取变量的值。
4.web和app测试的区别
1.web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。
2.web测试只要更新了服务器端,客户端就会同步会更新。app端是不能够保证完全一致的,除非用户更新客户端。
3.性能方面,web页面可能只会关注响应时间,而app则还需要关心流量、电量、CPU、GPU(图像处理器)、Memory(内存)这些
4.兼容方面,web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,不过一般还是以浏览器的为主。app的测试不仅要看分辨率,屏幕尺寸,还要看设备系统。系统总的来说也就分为Android和iOS
5.安装方面:app是客户端的,则必须测试安装、更新、卸载。web测试是基于浏览器的所以不必考虑这些。
6.操作方面:app测试的时候还要注意手势,横竖屏切换,多点触控,事件触发区域等测试。
7.交叉事件测试:接打电话、闹铃、消息提醒、电量不足、网络切换等
5.b/s与c/s架构的区别
1.b/s:客户端只需要安装浏览器,浏览器通过Web服务器与数据库交互。
2.C / S也称为客户端/服务器,客户端需要安装专用的客户端软件。服务器通常使用高性能PC,工作站或小型计算机,并使用大型数据bai库系统,如:sql server
6.常用的adb命令
运行monkey测试adb shell monkey 100
安装adb install xxx.apk
覆盖安装adb install -r xxx.apk
卸载安装adb uninstall com.zhy.app
查看手机端所有包adb shell pm list packages
输入adb shell input text “insert%stext%shere”
查看日志adb logcat
7.单元测试、集成测试、系统测试的侧重点是什么?
1.单元测试的重点是系统的模块,包括子程序的正确性验证等
2.集成测试的重点是模块间的衔接以及参数的传递等
3.系统测试的重点是整个系统的运行以及与其他软件的兼容性
5.压力测试与负载测试的区别?
负载测试:在一定的工bai作负荷下,给系统造成的负荷及系统响应的时间。
压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。
负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。
压力测试(Stress Test): 压力测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。包括:
短时间的极端负载测试
在过量用户下的负载测试
连续执行所有能做的操作
性能测试是动力,负载测试载重,压力测试强度.
6.进程和线程分别什么时候使用?
1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。
2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应
3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;
4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;
5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。