Yeah, so we were looking at, you know, the whole dynamics of what to keep in mind when you're ministering the word of God as a pastor. So we see that we saw that it's quite different when you're just visiting the place, right? Maybe it's a one-off thing and maybe you're not going to be that frequently interacting with the audience. Maybe twice a year or maybe once a year, you don't really know or maybe just a one-off thing. So the whole thing differs when you're ministering there Sunday after Sunday, at least 52 days in a year, because 52 weeks. So the whole thing changes, right? So we looked at some of those things that we can keep in mind when we are ministering in different contexts. When you're going there as a one-off minister, okay, what to do, what to do, well, you're not going to have another opportunity. So it's good not to start a series of messages, but to do a one-off message and also to share a now word of the Lord, right, a word in season for that congregation. So it's good to do that, okay? So today let's look at some of the, you know, what will actually contribute to authoritative speaking. Okay, when we are saying authoritative speaking, it is again speaking with confidence, but it goes beyond confidence, you know, it is to speak with spiritual authority, which means that when we have understanding, okay, when we have a revelation of the word and also an understanding, an intellectual understanding as well, I'm not ruling out that, understand with our minds, okay? When we have the information about the word I've got, about a passage, about, you know, why it's there and some background information and all that, so that will really, you know, give rise to us speaking with authority, okay? So one of the things that contribute to authoritative speaking is knowing the context, okay? So as part of the structure of the message, knowing the context, okay? So which means that, you know, okay, this is the context in which this verse is written, okay?  So where do we see that in the Philippians, right? Let's just turn to that scripture, okay? So in Philippians chapter 4, okay, Philippians chapter 4 and verse 13, Paul states, I can do all things through Christ who strengthens me, okay? So now this verse can be misquoted, this verse can be misapplied, you know, in various ways. But if you look at the context, you see that verse 11, not that I speak in regard to need, for I have learned in whatever state I am to be content. I know how to be abased and I know how to abound. Everywhere in all things I have learned both to be full and to be hungry, both to abound and to suffer need. I can do all things through Christ who strengthens me. So he's talking about going through difficult times in his ministry. He's talking about persecution. He's not talking about, okay, being in a place where there is lack and not enough and so on. He's talking about all these varying situations and he's saying, you know, I can do all these things. I can do all things. I can be in this place and I can come out. I can do all things through Christ, you know, so that's the context, okay? So knowing the context is very, very important for us, not only to rightly divide the word, but also gives us that spiritual authority with which to share, right? So one thing is, okay, we will not misapply the word, we will not, you know, we will rightly divide the word, we will not give a wrong interpretation, but also that we will have the authority to speak, right, spiritual authority. So we may not necessarily, again, we may not necessarily go into the, let's say, explanation of each and everything, right? But for us as preachers, for us as proclaimers of the truth, it's important that we know the context, okay?  Now, in the preaching of that, of the word, in the preaching of the text, we may not touch upon that, we may not touch upon that verse, we may not even, you know, eliminate the truth of that to the audience, to the congregation, but for you as a speaker, like you have biblical authority when you know the context, like when you know the, when you have the revelation, the context in which this was spoken, and so you have authority, right? So that's very important. The other thing is also, when it comes to the passage, when it comes to the verses, when it comes to, okay, what, what is the, what is this book all about? Okay, let's look at, you know, if you look at Galatians, you see that, okay, this whole book, there's a lot of review, there's a lot of strong words, and so on. Now you may not necessarily do, you know, a book study on Galatians. You may be preaching on, you know, something else, but it contributes, it helps in giving you that amount of authority with which to speak, because you have understanding of the way the text flows. Okay, for example, Galatians, Paul, the whole, you know, if you look at the whole, the birds are view of that, of the episode, it's about, it's about grace. It's about not turning back to the law, right, it is, it is about how salvation is by faith, through faith in God, and it's by grace and through faith. So the whole thing is about that, not going back to the law, not, you know, how did we receive the things? It is by faith. How did we receive salvation by faith? How did we receive the works of the Spirit by faith? The miracles and the supernatural things that happen in our midst, how is it by faith? So Paul actually talks about, you know, you walk in the Spirit, you walk in faith, you walk as led by the Spirit of God, and you stand fast in the liberty and all those things, right, in those five chapters. So for us to know the way this whole passage flows or the outline of that book, that also gives authority. Okay, so it's important for us to know that, well, so we have, you know, we can learn, we can, maybe we're not at that place yet for all 66 books. Well, we can choose to say, you know, I think some of the things that we, that we study, you know, like New Testament survey or Old Testament survey actually gives us a perspective of that. And even as we spend time studying, going through the text, we, we, we get an idea, okay, this is what it is about, okay, and it won't be like, okay, I don't know the rest of the things, but this particular verse is what I know, this is what I memorized and this is what I'm quoting, but you know, the whole, the way the whole thing flows, I really don't know. So we don't have to remain in that place, okay, we might be in that place, but we don't have to remain there. We can learn, we can study and come to a place of knowing, and that gives us authority as well. The third thing that we're going to look at is when we are presenting the truth, when we are, we can actually also have an understanding of the theses and the antithesis. See what do we mean by that? So for us to know what is, for us to know, okay, this is the theses, this is the premise. Okay, so let me just share with you what do we mean by theses, by, so it's actually a statement, okay, it is a, it is a statement, a premise, okay, let me just put it here, okay, in the chat I just shared it, let me read it out, a statement or theory that is put forward as a premise to be maintained or proved, okay, so it's a statement and a theory. So this is the theses, right, so you're just stating it, so what is the theses, you know, just like how we saw Galatians and, you know, so the theses is that salvation is by grace, okay, it's not by work, salvation is by grace, that is the theses, right, so when you, when you have the theses and also when you know what the antithesis is, what is the antithesis, that salvation is by works, okay, these theses is, salvation is by grace and grace alone, not by works, right, the antithesis is the opposite of that, okay, a statement which is opposing that, so antithesis is, salvation is by, is by works or when you look at Galatians you see that, okay, what is the suggestion that salvation is by grace and works, okay, it's not enough to just believe in Christ but you must be circumcised, it's not just, you know, it's not just enough to be having faith in Christ but you need to also keep these things of the law and only then are you approved or accepted by God and so that's an antithesis, okay, so for us to know that, for us to present that, you know, for us to really formulate this theses and antithesis will also give us greater authority, right, so you, you're sharing, okay, this is the theses, this is the antithesis and not, we don't have to be afraid of the antithesis, right, so as, because antithesis is a statement which is opposing what you're actually sharing and stating, right, it is opposite of that, so you don't have to shy away from knowing what it is, you don't have to shy away but instead of that we can actually see, okay, what does the scripture state about the antithesis, right, okay, then several things like that, you know, even John chapter 14 and verse 6, so where the Lord describes himself and he says, okay, I'm the way, the truth and the life, the antithesis would be, you know, the exclusiveness of the uniqueness of Christ is the theses where he says that, yeah, I am the way, I am the truth, I am the life, salvation which means salvation is by no other person, no one comes to the Father except through me, now the antithesis of that would be, he's one of the ways, right, he's one of the ways and there are many other many ways, he's one of the ways and for us to really know from scripture what the biblical standpoint is about the antithesis, like sometimes we have, we are very strong about what the theses is, right, this is what scripture said, this is what he said, therefore it is so, but we also need to know what does scripture state about the antithesis, right, so it's very important, so those are some things which will really help us in speaking authority, okay, now let's look at one more, one more thing that would really help us, the fourth one is to develop a burden, okay, now when we say burden it talks about a weight, it talks about something, you know, an internal weight that you carry, okay, something that you are concerned about, something that that is, well it could be something that you're passionate about, but something that you're concerned about as well, right, it could be towards a particular problem that is there in society, it could be about a certain group of people, right, you have a burden, you know, evangelistic terms, it could be about a certain group of people coming to know Christ, where there is no widespread word, where there is no work, where they do not know the truth and very little work is done among them, so a burden would be to to share the gospel, for them, for that people group, maybe it could be an ethnic group, it could be something to do with their language, for them to know Christ, you know, there's a burden, okay, so when there is a burden, now several things happen, when you have a burden and it's a God-given burden, it's not something, you know, that just you're just considering, it's something, it's a God-given burden, what happens is that you are emotionally invested or connected with it, right, so there is a difference, you know, when you speak about something without a burden for that and when you speak something with the burden, like when you speak something, you are detached from that burden, you know, there's no, well there's a weightage of that, there's nothing that that is just causing you to go to God about that, whereas if there is something that is heavy on your heart, you know, that you're praying to God for, you're going to the Lord for, then the way you communicate about that to the audience is different, right, it comes with tears, maybe, you know, you move to tears, it comes with a passion, it comes with a righteous anger maybe, animated and so it comes with a, you know, a passion, a righteous passion, right, so to develop a word and know how do I do that, how do I do that, it comes through prayer and it comes to asking the Lord, it comes through knowing what is the problem, right, what is the situation, what is the challenge, so the whole, you know, the way you talk about it, the way you share about it, everything changes, it's like how John Stott says, John Stott says, so possess the truth that it possesses you, so hold on to the truth, so it could be the, it could be a truth of how the situation is, it could be the truth of how people are, it could be the truth of, you know, some statistics, some social evil that is there and, you know, so rampant and so, you know, you're so exposed to that truth and what, you know, the reality is and the fact that people need the truth in order to change and it just takes a hold of you, just completely take it, it takes a hold of you and it's amazing, like, right through, you know, history, you see, people who actually had a burden, who went with the message and it was not, they were just not taking a message, they were, they were the message themselves, right, the whole life was a message and they used words, you know, it's like that, the whole life communicated the message and, yeah, and like somebody says, you know, let your life be a sermon and yes, use words as well, right, so that is something that, that we need to develop or we need to, you know, acquire and it comes from prayer, it comes by asking God, it comes by, you know, praying to, praying, spending time in prayer and asking the Lord, Lord, you know, you, like, what is it got? If you're feeling very detached from the topic, detached from the subject, it's, it, that means that, hey, don't leave it that way, don't go speak to the congregation, don't go speak to the audience that way, maybe it was a topic that was given to you, you know, it happens, right, somebody gives a topic and say, can you speak on this? Can you share on this? Well, if, if you're not really stirred up about it, then it means that you really need to go to God's presence and ask, Lord, I, I want to know what you think about this, I want to have your heart, Lord, for this, for this truth, God, that needs to be communicated, I want to know your heart, I want to have your heart.  So we need to do that. Then, of course, getting into the word of God, prayer is first and for second, getting into the word of God, let the word, let the truth of God's word about, about that particular topic, about that particular need about that challenge, let the truth of God's word, you know, flood your heart, because otherwise what happens is like when we, I remember this, I know, just going on a train journey as a young believer, new believer, just going on a train journey and then I just saw all these, you know, slums as we were entering into a city, saw these slums and all these huts and all these, and suddenly realized that each heart is a, you know, it's a family there, there's people there and, and the whole, whole overwhelming realization that they may not know Jesus, they may not be saved, like this whole overwhelming realization. And so I just felt overwhelmed, I felt depressed, right. So this whole feeling of overwhelming feeling was, was right. But at the same time, when you're filled with the word, when you have God's heart, you have a pain for other people, but also the hope, also the hope that God is doing something. It's not just you, right. It's not just you who's going there, it's the body of Christ. God has his people. God has others who are in the harvest, working in the harvest, who are doing. So it's not just about me and, you know, but at that, you know, as a young new believer, I felt completely overwhelmed. I felt disillusioned. I felt, you know, how, how can this, these people be saved? Because all the while I was looking at me, I was focusing on myself, right. So the thing is, okay, you have the burden, you get the burden. And it is God given. But at the same time, you know, fill yourself with the word of God, be filled with the word. Let there be a deficit of the word and the word will actually God's word is God's ideas, God's plans and purposes, and that will fill us with hope. And we will get an idea. We will know that yes, there are others who are working, you know, I'm just looking at this particular example. So, so the thing is this, you know, to get a burden, it should not be, you know, something that actually holds you back, but it will be something that actually drives you forward. And that will happen only when we have both the reality of how things are and the reality of the kingdom, how the kingdom of God advances with power, right. How the kingdom of God advances continues to advance. There's nothing that can stop the kingdom of God. Right. So, so that's, that's developing a burden. And when we speak, we proclaim with this burden, it is so different from when we speak without that burden. Right. So, when you're having this burden, you may see, speak a few lines, but it just comes across every line is like an arrow which finds its mark. But when you don't have that burden, it might be most eloquent, very articulate, and might be very entertaining. But it's missing its mark. Because this, that weight is not there. Okay, so develop the burden. Don't speak without being, without being, don't speak in a manner that's detached from the truth. Okay, yeah. Okay, then the other thing is the goal. Now, to have a goal, to have a clear picture of, well, what is it to help us would be like what we did earlier. What is this message about? To be able to write it in a sentence or two. Which means there is clarity. Okay, now, for the non-Christian, what does this message mean? For the Christian, what does this message mean? Well, so it gives us focus. It gives us, it sharpens our focus. It's also sharpens our objective. Okay, this is what the message will do. Now, we cannot, you know, there may be hundreds of things that we want to convey. And we may not be able to do all that in one message, in 30 minutes. We cannot. Right, so prayerfully, like ask the Lord, Lord, what is it that you actually want me to convey within this timeframe? Right, what is it? Because God knows the audience. God knows what the need is. God knows what needs to be conveyed. And He knows. So prayerfully, consider what the objective is. Okay, so if we can write it down and say, okay, this is what it is, then it can be very focused. Something that is, it finds its mark, something that you're able to communicate with clarity. Okay, so if that also contributes to us speaking authoritatively, where you know that, okay, it's not about all this, but, you know, this one thing or these three things that I'm going to be talking about. Okay, I'm just going to, in the notes, I'm just, you know, skipping a few things and going down. These are some things that we've already discussed earlier. So I'm just going to, you know, if you're in the notes, I'm going to step number seven, which I think is in page 51 or 50, I'm not too sure. But yeah, is it 51? Yeah, step number seven, which is methods of presentation. Okay, so these are different ways by which different ways in which we can actually craft that sermon, you know, craft the presentation. Oh, it's interesting, right, depending on, you can, we can choose depending on the nature of audience, depending on the nature of the content, the topic that we are actually sharing, so we can choose the different methods of presentation. So we're not talking about, okay, is it, are we going to sing it? Are we going to, you know, are we going to preach it? Are we going to narrate it? We're not talking about that. These are within the preaching itself. How can I, you know, how can I craft it? How can I, you know, address it in a manner, which is best suited for the audience and best suited for the content? Okay. Okay, so what are some methods? The first one is an argument. Okay, so when you say an argument, it is, it is what we studied down the theses, anti theses, what we just looked at earlier. You know, so something is for it. And you're making a statement about it, saying that if we take that example of John 14 and verse six, you say, Jesus said that he is the way, the truth and the life and no one comes to the Father, except through him. So that's, that's the argument that you're presenting. The anti theses of that would be something that is opposite of that, something that would be all inclusive rather than something that is unique, right, about Jesus. So, so we can actually present it as an argument. So you represent, we present objections.  What could be the objections? What could be the possible objections? Why, you know, it could be about how can you say Jesus is unique? You know, when there are so many other ways, well, maybe the popular worldview is that there are many ways, the destination is the same, right? And we have so many other objections. How can you say that this is, this only is the truth, right? So, what are those objections? And when you share from scripture to refute those objections, right? So that would be a method where we present arguments about something. Okay, so, well, this is, this will be there in almost every, every, every message, you know, that we might have this, this, an element of this is there always. But this whole message is that we can tailor it that way. Okay, this is the statement. What are some things that are against it? Okay, and then you share. The second one could be an admonition. Okay, what is an admonition? Admonition is, is, is a rebuke. It's a, it's a correction. It's a, it's a strong rebuke, right? So, I just went. So, so the whole message can be an admonition. It's a, it's a warning. It's a, it's a reprimand. So, the message is an admonition. Now, admonition could be about, about holiness. It could be about anything, you know, the, what the scripture is could be about, okay, having a burden to share, about missions, about, about marriage and family, you know, it could be about any topic. But it comes as an admonition, because God feels strongly about this. And in scripture, we see that there are admonitions. So, we basically preach that. And we see this is what God says, or this is the rebuke for people who, who lived in such a manner, right? So, it's an admonition. So, one thing to keep in mind now, it's a very, it's a very powerful thing, right? It's a very powerful, it's very pointed, it's very direct, right? So, there's no mincing of words. This is what the truth is. This is what scripture says. But to keep in mind that it has to be presented with humility, okay?  And it is you people who actually need this message, right? We come across in that manner, okay? Yeah. I'm saying this, I'm the authority on this, I'm already doing it. And, and we use this, you know, you need to do, you need to do this, you need to keep this. This is God, God is warning you now. God is, God is very displeased with you living in such a manner. And, and so on. So, it can be, it can be sound, it can be sounding very arrogant, right? So, it has to be with humility. It has to be knowing that, okay, this truth applies to me as well. It's not just, you know, I'm the, I'm also the receiver of this truth. So, it applies to me as well. I need to include myself, right? And then it comes from a place of humility, right? Secondly, it also has to come from a place of love and compassion, right? That is what the cross is about, right? The cross is the place of judgment. The cross is also a place of, a place where compassion and grace is released and mercy is released, right? So, you know, if you, if you say the cross is a place of judgment in the sense, okay, if somebody doesn't receive Christ, somebody doesn't receive this truth that he carried one sin upon himself, and he dealt with it. And in the place of sin, just released forgiveness and salvation. Well, if one doesn't receive that truth, John chapter three is very clear. Okay, let's read that. It says that he who believes in him, John chapter three and verse 18, he who believes in him is not condemned, but he who does not believe is condemned already, because he is not believed in the name of the only begotten Son of God. And this is the condemnation that the light has come into the world. And men love darkness rather than light, because their deeds were evil. So he's talking about, okay, start John three 16, we know, right?  Right? So, and it talks about the verses before that talks about how the Son of man should be lifted up, just like Moses lifted the serpent in the desert and how whoever believes in him will not perish, but have eternal life and then goes on to God's soul of the world. So, and comes this thing that Kim's is worse that he who does not believe is condemned. So there is that place of judgment. That is the place of separation and God is, you know, very clear. This is what it is. But it is also with compassion. It is also with huge amounts of love says God so loved the world. He doesn't want you to perish. He wants to he wants you to say wants you to be saved. So the message of admonition has to go out with truth. But it has to go out with compassion and grace. Otherwise, it'll become very legalistic. It can sound arrogant. It can sound harsh and well, it can instead of drawing people to the truth, you're actually alienating people. You're saying I'm better than you.  Here's someone who's saying that I'm, I'm no good, and they are better. I can never hope to reach. So it's just part of the truth. We've exposed that person to one part of it and not the other part. So admonition has to be with humility. Admonition has to be with compassion. It has to provide a way out rather than saying, only saying that this is wrong.  Rather than just stopping the message that it has to continue to say this is the way out. This is what has been provided. This is what you are invited for. Right? It has to, it has to come come end in that manner. So that makes the message wholesome. Right? So admonition. Then it can also be an indirect conviction. Okay, so what's an indirect conviction? It's similar to what the conversation that Nathan prophet Nathan had with the King David. So he talked about this, he edited the story of the rich man, he edited the story of the poor man.  So it, David was very indignant, very angry. He said, how can this be? This is injustice. He deserves punishment. And then Nathan said, the prophet Nathan said, okay, King, it is you. It is no, it's none other than you. This is what you did. So there was a lot of conviction. It was an indirect manner. It's conviction. Okay, so, well, there could be a method. Maybe the message is, is that way. You know, maybe the message is about, maybe about the church and how the church has become complacent, and, you know, how we are comfortable. In fact, there was one study which, which they did in the, this is an old study, of course, I think it was in the 80s or the 90s, I'm not sure, but it was by the group Barna, and I forget the second name, but they did a study among the churches among the believers, and they, and they found out, virtually, there was no difference between the way unbelievers or nominal Christians spent their leisure, you know, the kind of programs they watched on TV, the places they went to, the kind of things they did, and who would call themselves born again believers, right, kind of entertainment, the kind of leisure, the kind of things they did. So they found out that there's something wrong.  So this was, okay, in the US, that particular church context, but you know, something like that. Right. So for such an audience, well, an indirect conviction would be to share the statistics. So this is what it is. So there's a conviction, oh, I belong to this group. I can identify the fact that I'm a believer, but then, oh, if there is no difference, there's something wrong, right, there's something wrong, I need to make some choices, I need to make some decisions about the way I, about my entertainment, about my lifestyle. Well, if I believe, then it has to show the way I live. Right. So it can be an indirect conviction. Okay. Then the other thing would be an exhortation or an appeal. Okay, so, so this is basically an encouragement. And it can be an appeal. And normally, this is normally what happens when we conclude a message, it's an exhortation, it's an appeal, it's an encouragement, and also, when we say an appeal, it's an invitation. It's a request, a strong request. It's an urging to live for God. It's an urge to, to make a decision. If you're not a believer to make a decision to live for Christ, if you're a believer to make a decision on various things, so it could be an exhortation and encouragement, right through with an appeal. Okay, so that is one way by which the message can be framed. Another way is what we would typically call as vision casting. Okay. So, you know, to give the big picture of, of the end result, to give the paint, the big picture of, of the vision.  Okay, so if you look at, let me just get that verse. I'll get the reference a little later. Okay, have a cook. Okay, so have a cook. I will stand have a cook chapter two. Okay, I will stand and I will stand my watch and set myself on the rampart and watch to see what he will say to me and what I will answer when I'm corrected. Okay, then verse two, then the Lord answered me and said, write the vision and make it plain on tablets that he may run who reads it for the vision is yet for an appointed time, but at the end it will speak and it will not lie though it tarries wait for it because it'll surely come it will not tarry.  Okay, what the vision can do. Okay, so when in the sense when when it is plain, when it is communicated in a simple manner says that the Lord says, you know, make it plain, make it simple, and and write it down. That's what he says, make it plain on tablets. Okay, so you can recall, you have a reference, you can refer to it. But what happens when the person who leads it, the person who sees it, he runs or he's moved to action. Okay, so the vision casting is this, like you are moved to action, talking about, okay, this is the end goal. This is what God wants for you. This is what we are moving towards. Okay, so casting a vision about maybe ministry, maybe a team ministry team. It could be for for a church, right? For a church. Okay, this is the vision. Why are we doing what we are doing? What does God want us to do? What direction does he want us to go? Maybe this year? You know, what are we going to emphasize on? What are we going to be focusing on? Okay, so that's vision casting. So you're giving the big picture and saying, this is what God has in store for us. Okay, so the ones who are able to connect with the vision, the ones who are engaging with the vision, what happens is that we are moved to act. Okay, so there's a movement, there's a momentum to move towards achieving or to move towards reaching that goal. Okay, so so this is something that we see. So it's a, you know, it's vision casting. So that the message can be that vision casting. So it depends, right? If it's if you're talking to a church, and then if you're talking to how a church can be, maybe there's some change that God wants, maybe that God wants to know the church to not focus on superficial things, but really spoke focus. Now the time has come to focus on some deep spiritual truths, maybe the time has come for the church to move to maturity and to do things differently. And so a casting of a vision is required. Now the casting of a vision is also is required for people to move to action, but also to get that oneness of heart and mind. Okay, scripture talks about, you know, where the Lord says, my people perish for lack of, for lack of wisdom, for lack of vision, where there is no vision, people cast off restraint. So people live as they want. But when there is a vision, then there is focus, then there is, you know, energy and resources and everything is brought together. And there is movement. So there's no wastage of time. There's no waste of resources. We don't focus on unnecessary things. Priorities are focused, you're not saying, you're not saying that, okay, let's not waste time putting our money, putting our time, putting our resources on things that are, you know, superficial. But this is what we know, we know that God wants us to move in this direction. So let's, let's focus all our energies on it. So we can actually reach that. Right. So when the vision is not there, and people cast off restraint, no, there are no boundaries that are, and there's no focused action. So vision casting is very, very important. It's necessary in the, in the, in the right setting, right, it's required. And it can really bring in a big change, just like how we even have a cook that he may run who reads it, right, that would happen. Okay. Okay, so we'll stop here. There are two more things, you know, dilemma resolution and questions, which would, which should also help. So we'll stop here. And we're, we're, I just want to say that we're almost nearing the end of, you know, the teaching session. And then maybe two more sessions. And then we will, we will start focusing on our presentation, sermon presentation. So I will give more instructions on it.  So you can start preparing on that as well. Okay. Okay, so thank you. God bless. See you. Thank you, poster. See you. Bye bye.


Hello everybody. I'm calling in from Chicago, Illinois. Today you're here for setting your team up for success so anybody can write tests. Let me tell you a little bit about me. So my name is Zach. All right, these are my links actually. So I've got my GitHub and Twitter's up there, my LinkedIn. You should be posted in the slides that I'll share after the presentation if you want to follow what I do. So I'm the lead software development engineer and test at review trackers in Chicago. I'm also the organizer of the Selenium Meetup Group here in Chicago. I speak at some of these kinds of things. I love to cook and I'm trying to learn piano. That's kind of one of my quarantine goals. I'll also say I've been to travel to India before. I was at the last Selenium conference in 2018 and would love to be back over there in 2020. God willing. So yeah, that's a little bit about me. So here's today's agenda. The presentation will be divided into two areas. To set yourselves up for success. First, I'll talk about failing transparently. What it means to fail in a way that people know what's going on. People understand enough about the system under test to act on it. And the tests are transparent in how they're failing. So that's the first section. The second section will I'll be talking about creating a culture of testing at your organization so that anybody can write tests, contribute to tests, triage tests, etc. And I'll also say yes please type your questions in the Q&A section. I will be monitoring that. And as my presentation is divided into two parts, I will stop in the middle and answer questions about each of those parts. So please ask those questions. So before I talk about failing transparently, I'm going to tell a little horror story. I hope you can all relate. So in this scenario, it's late on a Friday. Our developer is actually developing a new feature for the land authority. And it's not the space authority. They're developing a feature for the land authority. They run their continuous deployment tests, the ones right before going to production, and they see this error. They are not touching the space authority. So they're a little bit confused why their land authority changes is causing the space authority error. They also don't really know what's going on. They're a little bit confused about the error. They've actually seen it before and didn't understand it then and they don't understand it now. So they ask the group, hey, is it good to move forward? Can I deploy the land authority? The rest of the organization gives the thumbs up. They've seen it before. They don't really know what's going on. The test engineers are on vacation. The rest of the QA staff wasn't asked about it. So they move forward with the land authority change despite the failed tests. They get all the thumbs up as SpongeBob alludes to. And then, oh no, it turns out the land authority was deeply important for the space authority. That failed test was a real true failure and the plan blew up. So we've all been there, right? You know, it happens. So I think what really happens there is like a failure of the tests. The tests failed to communicate like the importance of what was failing. They were hard to understand in terms of what was failing. And because they weren't easy to interpret, people felt complacent. They felt okay to move on. And there's that kind of institutional buy and they got the thumbs up from the other developers saying, oh, it's cool to ignore the test. But it turns out that the test was was showing something important. So this talk will be about avoiding this doomsday scenario. Hopefully your software testing scenarios aren't as dramatic. But okay, so here are the kind of the five sections they'll talk about with regards to failing transparently. So the first way to fail transparently and clearly is to be a master of failure messages. What do I mean by that? So each of you at your organizations, you have a suite of tests, and you're probably using assertion library. And what I would suggest is I would suggest that you become an expert in what your assertion library makes failures look like. This this image is a picture of what a Python high test error looks like or assertion error looks like. So it's pretty good here. It shows you exactly where the assertion fails. And it kind of shows you how for is meant equal five and it doesn't. So I think this one's decent. I've got a couple others. This is a J unit failure. It has a little bit of English expected six but was negative six, not bad, not bad. But I would and then let's do one more. Okay, so this is a Ruby failure, I program in Ruby. So I'm very used to looking at these are spec assertion failures. They kind of show what you expect and we got and there's some nice white space in between and it shows you the comparison operator, which I was like. So again, I would posit to become an expert in what your assertion libraries, what their failures look like, you know, explore all of them explore every kind of failure that your search and library can make and become an expert at reading those to know what are wrong. Here's some other examples of like the frameworks making errors look different. So these are screenshots from the site prism framework, which is a framework that we use our view trackers with with Ruby. And they're expected has text returns true got false. That comes from the specific assertion library. It does not come from the testing library. So yeah, you know, tests can be complicated, you know, you have a framework, you have Selenium, you have an assertion library, you have a framework to interact with Selenium. And like, all these different things can raise different assertion failures. So yeah, be familiar with not only your testing frameworks, assertion errors, be familiar with the custom ones that like whatever Selenium framework using can can put forth. This is another one from a Java testing package. I can't remember the name of it at the moment. But it looks like this gives you the little snippet of the HTML. So that's pretty cool. So I've talked a little bit about the assertion library errors and becoming an expert in those but an additional thing to be aware of is knowing the difference between code errors and assertion errors. So for example, in this screenshot, this is a no method error. So that's different from an assertion error. I think that if you have a code error, it's more likely that it's a problem with the test itself and not the software under test. But that's not always true. So but it's good to know, like at a glance, if you see something like this, it's it's different than it's a different flavor of error than the assertion type of error. Here's another example of a code error. It's a little bit complicated here. But basically, we were looking for one user row with that find chunk of code, and then a link within the user row. And what happened is the user row find block didn't return any user rows. So then I got this error. So in this case, it's kind of like, yes, I'm getting a code error, but I'm getting a code error because it wasn't able to find any user rows. So it's kind of related to Selenium related to the front end. But you kind of got to read between the lines of the code error to see what's going on. So something I'd also suggest on your journey to becoming to failing transparently is if any of those kinds of failure messages don't cut it, make your own. A lot of testing libraries provide ways to allow for custom failure messages. On the on the left here is Python's way of doing that. It's like the second argument. And on the right are spec expect array to be empty. And then after being empty, you can provide a custom failure message. That's really great. I would suggest to use that. In the message. Okay. Yeah, so I suggest user custom failure messages. And if if those custom failure messages, the thing about them is they should really add to the to the existing failure messages. So I would say these two aren't even great examples. But a great example of custom failure messages is this one. This is one I created at review trackers. So this test is expecting a user to be indexed. And if the user is not indexed, it returns this kind of error. And this error is really great because it tells me how long the test waited for the user to be indexed. It tells me what resource it was. It gives me the ID of the user it expects to be indexed. And then I can go and take that ID and explore my software under test and see what happens. I can, you know, I have some data to like investigate the the situation. And it also shows the raw response from the indexing service. So I would suggest when you know, when you make these failure messages, provide as much information as you can, make them actionable so that you can go dig under the hood of your software under test and find out what we're on. So that is this section. Let's go to the next one. Alright. So another thing I would posit that you need to do to fail transparently is use status checks for the services your test depends on. So what do I mean by that? So to describe status checks, I'm going to talk about this little sample app. So let's pretend we have a shopping cart here where it gives you your item subtotal and the tax and the grand total. This is your shopping cart front end application. So under the hood, in this situation, let's say the shopping cart, your front end hits the shopping cart API, which is tax API to get all of the data that it needs. And then the shopping cart API assembles all the data it needs from the tax API and various databases and then sends it to the front end. So there's kind of two different service dependencies to get the data that you need. So cool. So our tests normally pass for this shopping cart. However, let's say one day you get into work and you see this failure, expectation not met error. And instead of $97, the test is getting $95.45. That's not great. You'd be like, what's going on? And you'd be like, is the error with the shopping cart API? Is the error with the tax API? What's actually going on under the hood? And it's not clear. You'd have to dig into that because because of your infrastructure, you know that there are kind of two dependencies to get this data in the right state. So the fail itself isn't immediately actionable. But if you had status checks, you could create status tricks for them points your test depends on and then run those in the before hook of each test. Status tricks are great.  I don't know if any of you have heard of the company Pingdom, but one of Pingdom's main services is just just pangs your website and just make sure that it's up. It'll ping it like every five minutes. So what I'd posit is let's say if you know your test depends on shopping cart API and tax API, set up a status check right before your test runs to ensure that shopping cart is up and tax API is up. So if either of them is not up, you won't even bother with running the test because it wouldn't make sense to even run the test if the service is down. And then in this scenario, ideally, instead of getting that cryptic error where you get 9545, you'd get an error that says tax API is down. So then you can go investigate that instead of your cryptic test failure. So third thing I'll mention with failing transparently is configuring nice test reports. Without nice test reports, there's lots of scrolling, there's no syntax highlighting, there's a lot of clicks to see an associated screenshot and all of that leads to slower triage. That gives me a big headache. I don't like scrolling. I really enjoy syntax highlighting. I'm getting a headache reading that error on the left here. And it takes a more cognitive load to to associate this failure with this screenshot in another browser tab, something like that.  Now I'll be juggling tabs. I'll have one tab that has the test failure and then a couple other tabs with the screenshots open. So that's kind of hard to balance in my brain. And it's already a stressful situation. So I would posit that to fail transparently, you need to have nice test reports. They're worth spending your time configuring. Why are they worth spending your time on? They create a comment was here for those investigating. Those that are investigating can can look, you know, at at once and see the screenshot, they can see the area of the test code where the test fails, they can see the assertion failure, it'll have nice syntax highlighting, it'll have all the information that they need to triage it out of glance. And it's like I said, it's already a stressful scenario when you're when you're triaging test fails. So I would recommend to get these test reports configured. If your boss is telling you that it's not worth the time to configure nice test reports, because they're like, Oh, well, you got to write all these tests first. And then we'll do we'll, you know, we'll do this in Q4. We'll do this next year. I'll say, no, do it now, because you'll save yourself time triaging tests, like they're they're worth so much more than the time spent configuring them. And you can always tell your boss to talk to me, and I will convince them to to use these nice test reports. At review trackers, we use the RSpec HTML reporter gem. And it's really great. And it does the work of associating that that screenshot with the the syntax and the assertion error and everything in the stack trace. It's all all in one report. It's really great. So in addition to those test reports, we have some of your review trackers that enables us to analyze test health across test runs. And we use a software called report portal, and it's completely open source. I highly recommend it. I really, really love report portal. The screenshot right here is this is a list of tests that failed in the last 30 rounds. And I can see our our failure rate is kind of at a consistent 6.67% not not ideal. We're still, you know, tests are failing two out of 30 times, not great.  And then that'll be my day we'll be investigating why that test is being more flaky. So yeah, I would encourage you to configure something like this so you can get that that analysis across test runs. It's very valuable to have. So in addition to those three things, next topic is using a test logger. I would suggest that it's really important to log what your test is doing as it's doing it so that you can again fail transparently. So what do I mean by a test logger? You know how your software under test has logs? And the developers are always combing through those logs to determine, you know, why there was a server outage on Friday or why why the data isn't present and stuff like that. People are always combing through logs. Well, what I would suggest is that the tests themselves also create logs that log and porn steps in a test case. So that can help you triage the test fail when it happens because you'll know like what the test achieved what what it did and what didn't do and stuff like that. So some examples here of things that your test log can log are it actually successfully logging into the front end. So I have that message right there highlighted. And then another example of something you might want to log is verifying the data is present that a test needs. So why might you want to do that? I review trackers for our ends to ends tests. Sometimes we use an API to do setup for the test, and we'll do that API call in the very beginning of the test. And then that's just set up and the the data that's fetched is happens in an asynchronous way. So in order to be transparent about what's going on in the test, then we we log a message when that API call is done and the data is done fetching in the async way. So if that log message doesn't happen, we know that the data wasn't there. We also assert on that data being there as well. But this is helpful as well because you can see how long it took to get that data. If if one day we see the tests that normally takes 30 seconds is taking three minutes, we can look into those log messages and see, hey, how long did it actually take to to fetch the data in the beginning? How long did it take to do that setup? And if we see those seconds go up in time from the log messages, we'll know that something's up with the with that API and that indirect dependency. So that's one of the reasons I really like using these these test loggers. Some other reasons to use test loggers is when you're investigating a fail that only happens when it's run in parallel or run around CI and stuff like that. In those situations test logs are super helpful. So I can describe a scenario where we use test loggers that are retracers. So as you can see in this GIF, this is our competitors tool and here the end users changing the filter from 12 months to last two years. And we experienced an issue where it's not really shown in the GIF, but we experienced an issue where you'd switch from 12 months to two years and the data actually wouldn't change. And we were kind of a little bit baffled. Like sometimes the data was changing, sometimes the data wasn't changing. We were trying to investigate why the data would change or wouldn't change. And one of the things we did was implement some test logging. So all that we did is we just logged what the test saw as it went. And what that does is it just like provides a bigger picture of the data that the test is seeing. So here's some examples of the test was grabbing all the data from the table before the filter, like before the change was applied. So here it grabs all the data for the 12 months and then it grabs the data for the two years. And then by grabbing all the data we can see what the test had saw and then when if the assertion were to fail we can dig into that more and see what did actually change or didn't change. So that's the really cool way to do triage. So test logs also mean that they're time stamps and you can correlate those time stamps with a message from the actual software under test logs. That's usually valuable. If here I'm highlighting a time stamp of a scorecard that's a functionality of review trackers generating in 18.7 seconds, if I ever wanted to see that scorecard generating in the software's under test logs I can like look at that time stamp and then compare. And yeah, it's another great way to see what's going on when a test fails. Look at the time stamps from the log messages and correlate those with your software under test. So one last thing that we do with our test log review trackers is we log the credentials of the test account used for each test. That is incredibly helpful because then you can log in and see the state of the system when the test failed. I do this on a regular basis. It's pretty much the first thing I ever do if I see a test failure is I will look at the logs and I will look at the admin username and the password and the account ID and then investigate the state of the system when it failed. I'll log in and I'll be I'll explore what was going on. So in the case that I described earlier this case when we were seeing that the filter change wasn't reflecting I went and logged into that account and filtered for myself and I saw it yeah and I saw yeah the data isn't changing when I changed from 12 months to two years and I actually was able to see it with my own eyes. So that's always really great to do. The last way that I want to posit to fail transparently is to save test artifacts. What do I mean by test artifacts? If your test grabs emails, saves PDFs, CSVs, any kind of if your test grabs any kind of data I would save them somewhere save them to like a file server. Save them somewhere where those files are accessible after the test run is finished. Save them somewhere that persists. And the reason why you would want to do that is that because that data can help you investigate fails. And not only that sometimes it's just helpful to see the data that the test uses. So here's a screenshot from our our Slack test runner and although this has passed we even put a link to the test artifacts and if you were to click that link that would take you to a place like this where you have just a collection of all the CSVs PDFs everything that the test had downloaded and made assertions on in the test life. So here's like the entire body of the email that it checked. So yeah so this is great if that email assertion were to fail you can actually look at the email and see what the test saw. If the PDF assertion were to fail you can open the PDF and see what the test saw. So I think test artifacts are really great save as many of them as you can. Data never hurt anybody. Storage is cheap these days to get an Amazon file server is really cheap or an EC2 instance that just stores files is really cheap. So I would suggest you to store any kind of data that you can because you'll never know when you'll need it. You'll never know when you need it to investigate those kinds of files. So that is the first half of my presentation. Let me see if there are any questions in the Q&A. Okay it doesn't look like there's anything in the Q&A. Okay since there's no questions I'll move on to the second part of the presentation. Oh sorry can you say that one more time? Last 15 minutes. Okay thanks Alright so creating that that culture of success and culture testing here's how you do it well before I talk here's how you do it I'm gonna describe a story. So it's early on a Monday and I'm a developer and this is our feedback form and it has five it has one to five stars and management has said make it have one to ten stars we want to have the ability to to log feedback from once ten and you're like all right management I'll do it sounds easy so you spend your time really on a Monday doing the development for that feature and it's really easy you just change a couple things yada yada yada you're done you did all your code changes but now you're like hmm I got to update the tests don't I so you go in to look at the tests and the tests are more confusing than the code that describes the behavior. This is a screenshot from an actual test that reviewed trackers before I started and so there's a complicated sequel going on you're like wait where do I edit this to make it be ten stars and check that there's ten stars this is the area isn't it. Here it's doing something with five stars how would I change it to do things for ten stars. I'm really confused I've lost all motivation to contribute to the tests I have to wait till the test engineer is online and that made me angry you know I've had a really great start to my day making the change in the code but it should never be hard to make a change in the tests associated with the code that's just an annoyance so we want to avoid the scenario we want to create a culture of testing we want to make it easy for developers to to write those tests so how are we going to do it first way to do it is easy factories so why is the factories UI engineers to do the setup in a uniform way have an easy time doing it and they factories I'll posit the factory should have default arguments and be easily configurable so that anybody can jump in and create the data that they need in like a second to do the test they shouldn't have to know like the vagaries or the details of the system to to create that data to to become test so we have a factory review trackers called accounts with various users and this one method call creates a new account seven users 30 views all this data it's just one method and it creates all the stuff you might need for a test and it also accepts keyword arguments so that you know if you wanted to only create three users you can pass in users three and then it only create three if you don't want it to create reviews you can say reviews false and it won't create reviews so it's infinitely configurable and each resource itself has its own factory tags his own templates his own groups his own yada yada so here are some pros of doing it that way then it's easy to configure the data to test one method automatically configures all these associated records and in terms of maintenance you can change the definitions for your database for the factory all in one place to that according to the database definitions you don't have to go into multiple so like if you change whatever review looks like you add a new column to the reviews table you don't have to change your test code everywhere you just change it in one place the cons of doing these factories is it does create extra data you might not need all these associated records for your test but we're okay with that area checkers because of the time saving that that method of call makes and yet factory still depends on database definitions so like if you if you change your views table you still need to update your factory to reflect the change in their views table so you that is not removed but it's still easier to to have one method to create all the data so the sign of a good factory what is the sign of good factory it's when a dev or a qa engineer uses it to create data for manual testing so we had a piece of development error view trackers where we were changing the api that would be used under the hood only if your account had over a million reviews and uh in order to test this uh in ci and on your local computer what the developer did was they use the factory and just created a for loop uh looping a million times using the factory to create a million reviews and that took five minutes so now they had the setup for those million reviews so that they can easily test the code uh so that's when you know your factory is doing good work um so to create some more of that testing culture uh would posit to be damp not dry what does that mean uh the phrase damp means descriptive and meaningful phrases um not dry which is don't repeat yourself and dry is kind of a tenant of developers um to um refactor your code and you know if you see the same code doing things over and over again um refactor that code to only be one method and have arguments and and and uh i would say since tests don't have tests um it's important to to uh be more descriptive and don't worry about dry um don't refactor your code so like here's an example so this is a dry test and why is it dry it's dry because um that method register all users um you can reuse that across tests because what it does is it just takes in the users objects and it just registers them um but when you do it this way the method register all users it's not clear which users it's registering where i guess it's registering all of them but like um it's not as readable uh because now if i want to know which users are being registered i have to go into the setup block and read that users uh read the users up there um so it's not as reasonable to to make it dry so i'll suggest to make your test damp and uh this is what a damp version of that test would look like uh i'm explicitly creating the users i'm explicitly registering them i'm not using uh methods that do those actions um but since it's important to the test case we're registering them right there um and i would posit that this is the the better way to write tests um you don't have to go into another file and then understand what that helper method does um i'm sure roval heard of the phrase copy paste programming and i'll posit that that's okay to do in test repose and uh really what i like to do is copy paste tweak programming and here's an example of me doing copy paste tweak programming like i took um that case from before where we're um we're registering multiple users and now the new test case is the test can't register multiple users with the same email so it's a little tweak on the last test case and um i'm creating two users with the same email both of them have the email alice they're both being registered and then the assertions are changed a little bit instead of asserting that both are registered i'm asserting that the one of the duplicates isn't registered so here i have copied and pasted and tweaked um so creating culture testing so i suggest create it's really important to create documentation for contributing to the test repository um why is important to create documentation uh selenium can do a lot but as an api it has its quirks we all know that it's a little bit quirky um it's not the easiest to use if you don't have experience with it um i'm sure you've all seen these kinds of stack overflow posts there's hundreds of them uh and just to show that selenium is a little bit complicated under the hood um this is from the w3c specification for like how a selenium click works and there's a lot of steps in there uh selenium does a lot of stuff so um what i'm trying to say is selenium can be a little bit hard to use at times so what i would suggest is you providing documentation that makes contributing to your tests easier so here's some examples of documentation we have a review trackers for for making contributing to tests easier um if developers see the documentation they'll be able to speed through it and write those tests because uh the docs will help them do it um it's just kind of a good treasure trove of knowledge to have um i would also pause it to create test helpers that makes selenium less daunting uh it wouldn't be ideal if each engineer wrote their own code to scroll to a specific place or fill in a field so here are some examples of of um tests uh helpers that i've made for review trackers to to do those kind of simple selenium actions because selenium can be a little challenging um here's another example of fill and input this is a custom method we have here review trackers and then um i'll also suggest that you all use common coding practices like doc strings and comments so engineers can understand your tests easily i would say that the documentation doesn't only need to be in document form it can also be in your code so yeah use those doc strings use the commenting functionality their developers are familiar with uh to so they can use your utilities um so in addition to how to contribute i would suggest to have documents on the services the tests use and how to investigate their outages um why should we have that kind of documentation isn't that kind of overkill i would say no because when a services down it's high pressure uh we don't want that to be the time to learn about a service and a doc can really help a treasurer feel less stressed when they're investigating things so um in uh the doc the status checks in your test service documentation for like what services that test use so that's really great so if you then have documentation for how to investigate each of those services um for example like where to check the logs where to see the uptime how to connect to the database uh how is the service different in each environment you know whatever makes investigating easier like put that in a document for each of those services and then um have that documentation accessible so that if the service is down if the service is having a test issue people can investigate it um our view trackers we even have general steps uh like this uh for just triaging test failures in in the first place and i kind of got this idea from the book the checklist manifesto uh like even so when you're when you're doing stressful tasks it's helpful to have checklists because it helps you stay on task when they when there's a stressful situation um without a checklist you you have a tendency to get off track or um not stay focused but the the checklists in a in a high pressure scenario the checklists help you stay focused um so yeah i would suggest creating a checklist like this this to um to help in with those investigators so more about the culture creating the culture testing i would suggest that we have strong programming paradigms in our test code um treat the formatting in your test code the same as production code you know run your linters have good naming conventions file structure design patterns um use all those things don't don't tell people oh it's just test code we can do it however we want um i would say have the exact same standards as you do your production code yeah um okay two more slides cool i'm like near in the end um i would suggest you configure the test similar to the production code itself if possible um so that there's less context switching for the developer who's contributing to the tests um that's really helpful um context switching reduces productivity so if you've got javascript uh code javascript production code make the tests written in javascript etc and use the same file structure stuff like that um other people should be able to read a test and know what's going on test code is code blah blah blah um avoid conditional logic in your test cases um i would posit that instead of doing the test case like this where it handles city search and google and facebook and yelp in one test uh do it like this where um the test knows that it's handling a google review and it's only asserting about that google review um conditional logic in test cases makes them harder to interpret and harder to follow the flow so yeah make sure that you eliminate that kind of conditional logic um i'll also say if there's a test that does a different thing in a different environment um separated into two different tests and skip the irrelevant tests in the irrelevant environment so here is an example of a test where in docker and local it skips an assertion and um i would suggest instead of doing it like that do it like this where now i have two versions of that test and um it does different things based on the different environment that it's in cool um i'll stop there i'm sorry i didn't get to all of the content but um the other slides are really good so you'll be able to get through it i hope this is good so i got a comment from samar who said saving passwords in logs is not a good practice and what i would say to samar is you're 100 correct uh it is not good practice uh however um for these tests these are only run in lower environments and each test is segmented to um a single account and that account only has certain kinds of permissions with our access control scheme so um there's no risk in us providing those uh passwords no attacker could do anything with those passwords because all that they do is they give access to that one account and that's only present in our lower environments and all the data for that account was also created by that test itself anyways so like thank you jack for sharing your experience with us today


Shout out to channel members foolish bloodhunter jelly knees me I'll mix for men stunt Farith and Raven


Hi everyone, today I'm going to show you how to create a better quality video for your webcam or meetings. The things we'll cover are camera position, lighting, and color of light. First, you'll want to raise the camera about even with your eyes. This creates a more ideal angle. I use a laptop stand, but if you don't have one, any small box should do. Another key to improving your webcam video is quality of light. To help with this, try to position the camera so there are no lights in the background, whether it's an open door, window, or lamp. Because of this, it can cause the camera to think your room is brighter than it actually is, making you appear darker in the video. I need to close that door. Now you'll want to add light so it's in front of you. I use a USB reading lamp that I stole from my daughter, but just about any desk lamp should do. When you position it, try to have it high and centered as possible. Now that you have the light, it may create some harsh shadows on your face. To help with this, try bouncing it off another surface, preferably something white. Since my walls aren't white, I taped a piece of extra poster board to the wall behind my computer. With the camera adjusted and a nice soft light, take a look around your background to see if there's anything you can move to declutter. Make sure there are no plants or objects coming out from behind your head. If you have glasses, you may see the screen reflected in them. If you see this, it can be corrected by turning the brightness down in your monitor to a level at which the glare is reduced and you can still see the screen. After you're done with your meeting, be sure to turn the brightness back up. This along with the main light will help reduce your reflections. Try to use a daylight bulb or a white LED light to help the camera show your appropriate skin tone. With these tips, it should improve the picture quality of your webcam. Thanks for watching!