重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在实施测试的过程中,碰到以下场景,你脑海里第一时间是不是想到找开发、找开发、找开发。
成都创新互联公司成立于2013年,是专业互联网技术服务公司,拥有项目做网站、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宁都做网站,已为上家服务,为宁都各地企业和个人服务,联系电话:13518219792
作为一名测试人员,如果我们具备了以上问题的解决能力,测试效率肯定大大的提升。
moutebank作为一个开源的、跨平台、支持多协议的服务模拟工具,有效地帮助测试人员解决以上问题。
我们也可以看看官网推荐使用mountebank的理由。
moutebank的工作原理。
针对运行结果,咱们结合以下mock脚本createAccount.ejs源码进行分析,发现ejs脚本分了两大块,predicates和responses,对应就是前置条件和响应信息。predicates里我们使用了关键字deepEquals,表示深度匹配。再回看jmx脚本,咱们上送的path和body满足predicates条件,所以运行脚本后返回了对应的responses。
至此,咱们完成了一个简单mountebank示例,mountebank提供了更高级的用法,比如代理proxy、javascript注入等。总之,mountebank足以实现你所有的mock场景。文章最后附上mock脚本源码,有兴趣的童鞋可以尝试,相信你会爱上mountebank。
各脚本源码如下:
main.ejs源码
iiacct.ejs源码
createAccount.ejs源码
很多网站都有私信或者留言板功能。登录用户可以发表评论或者给其他用户(包括管理员)发送私信。一个最简单的模拟表单如下:
form action="sendmessage.php" method="post'"
textarea name="message" /textarea
input type="submit" value="send" /
/form
当用户点击发送时,这条消息会被保存在数据库中指定的数据表中,另一个用户当打开这条消息的时候将看到发送的内容。但是,如果一个恶意攻击者发送的内容包含了一些javascript代码,这些代码用于偷取敏感的cookie信息。当用户打开看到这条消息的时候,恶意的javascript代码就会得到执行,造成敏感cookie信息泄漏。攻击者可以利用获得这些cookie信息进行session hijacking会话劫持,直接以合法用户的身份登录其他用户的账户。
恶意攻击者可以在消息框中加入一下javascript代码:
现在有IE浏览器进程,已经打开某网站,
希望通过C# 让此IE窗口执行某脚本,如scriptalert();/script
1,不写IE插件
2,不借助第三方浏览器,只针对IE
3,不使用Winform的WebBrowser控件.
知道的朋友给个思路
补充说明:
我使用下面这段代码试了,'aaaaaaaaa'会在页面中显示出来,但是后面那段js脚本却没有运行.很奇怪.
ShellWindows m_IEFoundBrowsers = new ShellWindowsClass();
foreach (InternetExplorer Browser in m_IEFoundBrowsers)
{
if (Browser.Document is HTMLDocumentClass)
{
HTMLDocument doc = Browser.Document as HTMLDocumentClass;
doc.body.innerHTML += "aaaaaaaaascript type=\"text/javascript\"alert(11);/script";
首先必须了解依赖。依赖就是指B类要用A类的方法(或属性),就称B依赖于A,那要调用方法肯定得有一个对象呀!
要解决从“没对象”到“有对象”的问题,有三种方式:
程序猿嘛,自己new一个
构造函数传入
setter函数传入
其中第一种自给自足,自己生产依赖的东西。。。。后两种是靠别人给的,别人把依赖的东西“注入”给你。后两种方式的过程就叫做“依赖注入”了。。。
// A类,假设有人需要它
function A() {}
A.prototype.hello = function() { console.log("This is a"); }
// 自给自足的B类
function B() {}
B.prototype.talk = function() {
var a = new A();
a.hello();
}
new B().talk();
// 通过构造函数“注入”对象的B1类
function B1(a) { this.a = a; }
B1.prototype.talk = function() {
if (this.a) {
this.a.hello();
}
}
var a1 = new A();
new B1(a1).talk();
// 通过setter函数“注入”对象的B2类
function B2() { this.a = null; }
B2.prototype.setA = function(a) { this.a = a; }
B2.prototype.talk = function() {
if (this.a) {
this.a.hello();
}
}
var a2 = new A();
var b2 = new B2();
b2.setA(a2)
b2.talk();
总结,“依赖注入”就是需要什么对象,自己不去创建,而是把创建的过程放在了自己的外部。
有一些依赖注入框架,你可以声明需要的是什么对象,然后由框架来创建并注入给你。