 వాలెమే గానినినిని స్రంరిడి సంరర్షరాన్యాపె సంరి మాతికెలు మర్రికన్ లాకిసంర మానిసంరే సంర్మే మారోమే యారిమారాడి సంర్. వారన아니 మారోటినాదినానిన satellite ohh it's not ! పనిఆంలా. సటాయా నిచిలాలిలూ సిలూతాగాచితి కరి. సాలి క౿లూ త౿కరిలూని సిలికి అనులోదిలౄ బర్ిన్ సిపినిలాలిలిలుయా, ని. ప్తకాని అఆఠడి సిసిరారంరం మౕప్ర్చితునా మ౏ర్త్ండార అంరిసెరి క౑యరి టమని టకుని బరి ఆంరి టమ్నేతా పు. మానంరి పురి వరి దాతరర్డ� විඝවයක්නුස්මට්යිා වයුණත්ත්, නිහිනින්නත්රත්යකකරයකරරදුවණයකරව්නා Deaf and the the same blocks have been re-arranged for different types of processing the first level of the components are needed to be there are suppose 12 models in the index of the M1, M3, M4, M12 each units will have to be separated as a component so whatever the interfaces that components has to do or whatever the inputs it take and produce also set that level we need to test it of course there are the systems which may have a more sub-conference like M4 may have M4, M1, M4 etc so we can combine that it is up to the strategy in all the ones we define but in actual the basic models we have identified and it will be used for coming to the next integration testing here what we do we take the same example of 12 modules for an M1 system these 12 modules are basically it is based on the mostly based on functionality of the system that this block 1, block 2, block 3, block 4 here you see M12 as a single node you may be using my M1 system here as well as here the idea behind the integration is this M12 could have an binding on other or any processing software so that needs to be integrated why that it needs to be integrated we need to exercise that as a model how it works with the other model how M12 can be integrated M8 and M9 how M12 can be integrated M10 and M11 etc so going by this picture there are four blocks each blocks is of interest other blocks will be just perfectly all these integrated together how it will be any that is what the scope of the integration is next one is a system system as I said earlier all the blocks are stuck together in the box if you consider these blocks as the one and it is in the target so that target will be basically sending to different testing aspects the signal or the IOS whatever it is will be put and the output will be expected as a black box most of the realistic inputs will be presented here that is so that is the default basically with integration here I will repeat so component level or individual components or units tested separately integration will combine several blocks or the component to test it on the software level software to software or software to hardware and in system testing all blocks should be up and running in the target and that target will be provided with several inputs and the expected results will be spread out as an output value so all these three levels of testing is necessary because we may not be able to test everything with the system we may not be able to test everything with the integration system we may not be able to test with the individuals that is not enough so putting all these three levels of testing as a complete use do not get confused with the bottom of the top off and that is all the approach or the method how it is done here basically given a embedded system how we are going to test it how we are going to make the main system into several models and how we are going to do it so that is the philosophy of the level of testing that is what we are going to do and we are going to test all the one code or two code or three we can test it as a unit for all this and one code so likewise we will use R number here in this case some feature of this one is equal or this one is one integrated one we will have a feature set one and we will have a set of features that will be done just to highlight what we will do unit testing unit is the smallest test level unit can be compiled as a unit loaded and put under the test R number I will explain what is this R number in the latest test unit under the test will be perfectly addressed for unit testing unit testing is done to show that the unit does not have a function or a component that does not match the unit structure if this testing is done to satisfy the function of specification that is that is the unit so it is not satisfying that the structure or the unit structure does not match the unit structure so that is the goal of the unit testing going under the test so that is all that we are going to do this is the integration of the test integration is the process of abbreviating components to create larger components so the components are aggregated together to create larger components so components could be M1, M2, M4, M5, M6, M7, M8, M9 etc integration testing what we do integration is the process of abbreviating components to create larger components as I said smaller components put together as blocks of 1, 2, 3, 4 whatever it is M1, M2, M3, M4 these blocks are combined together and we will test again is the rare interactions between the modules M1, M2, M3, M4 first then as a group or as a block how it is interacting with other blocks M5, M6, M7 or in either blocks of components so that is the intention integration testing done to show that even though components were easily satisfied the combination is incorrect or inconsistent but as I said you would have tested individually M4, M3, M7, M11 all over the place that may be working fine but when you integrate M11 with M4 so what is the guarantee that it is working appropriately or correctly so in order to do that we will integrate it so that is the purpose of integration testing so the combination should be correct and consistent so that is the goal the last one is the system testing system is the big component as I said it is a black box system testing is aimed at revealing bugs that cannot be attribute to a component as such two inconsistencies between components or planned interactions between components still you see there could be some issues after putting together all these blocks that means while first block is interacting with the second block and while the third block or fourth block is interacting with this block continuously within the system there could be some issues especially when you trigger the codes of the signal all together working should work correctly and consistently so how do you bring up those issues that is through the system testing so system testing is aimed at revealing bugs that cannot be attributed to a component as such two inconsistencies between components or planned interactions between components concerns, issues, behaviors that can only be exposed by testing the entire intelligence system and the purpose of it especially the performance, security, timing, recovery these are some of the aspects we will all use in new test at a higher level so the problem still is that sometimes it is difficult to isolate suppose I say the performance is not up to what is expected I am working with the entire system under system testing and I see there is a memory leak I see there is a timing slack I do not know where it is the problem so how will you isolate so that is one of the concern that we have at system testing but of course definitely this individual level either at unit level or integration level it may not be able to find out how do we do it so there are several mechanisms either through debugging where we do the white box sort of a mechanism we connect the debugger and do a manual as it is using the DE code inspection or walkthrough etc so some of these issues or you may use IDE tool such as profilers or time machines etc these are some of the alternates while doing the system testing because some of the critical things may not be found out easily with the system testing so there are alternates that we will use it so that is about system testing of course I said accepting this thing is uncoring the implied requirement in that you are using this for use it is a very selective level that means some of this system testing test can be reused to make sure that the product is accepted and definitely that should not find bugs which should have been found in the earlier testing cases integration and testing or system testing these bugs should not be what are the bugs are there these bugs should be fixed so excellent testing is the last we do before we release the product coming to test harness the ML system test harness what it means web definition of course like this a collection of software and test data configured to test a program by running it under various conditions and monitoring its behavior and outputs that means test harness will enable the test server to feed the test data and test the program which is under the subject by applying various conditions that harness should be able to support monitoring the output as well so it is something like a test set up part of it it is used for running groups of existing that means once we have individual test done we should be able to run in a superior way that means we can group the existing test in a batch sort of a mechanism where the environment of the test harness will suck out so the harness itself can be a tool for automated running of many scripts like we as I said we can create batches of scripts and that batch can be run on the harness in a consistent and continuous manner so that the testing will be speedier and lot of automation is involved here fetching of scripts and test data any actions of failures should be called as a failure or report the log etc the test and defect matrix or management the how many number of passes of the how much it has failed like in terms of overall automated batch output this will take care of test harness test harness could involve many things such as invoking a simulator or test drivers could be involved as well so there is a difference from test running tool and test harness so test running tool is something like that underneath the piece of activity test harness is above that which will help in terms of automating and running at a higher level typically test harness is a super test running tool the other name used is super test running tool so controlling perhaps a few test running tools some other sub tools it can control or trigger so test harness can be used to run groups of existing automated scripts its typical activities are fetching of as I said the scripts and test data should take actions for failures and should be able to manage the tests like reporting incidenting, incident reports defects, pass fail, criteria, outputs all that will be part of this so that is about test harness because this is one of the important that will be used across all this test harness is very much needed for unit level testing, integration testing, system testing so test harness will have so set up for setups for each of this so coming to the next slide this is about test setup we know that test harness is required under that what are the things that we need to take care embedded software testing test setup there are several ways test setup can be done again depends on what level the system is required I will explain typical how it is used basically host and target test systems during development process that is one thing we use it at least during development again the developers have to have a confidence on what they have so they will have a set of host and target interactions the same thing can be used for testing also so we know that host and target earlier we have this course two systems will be there hosts will have CPUs will be there and target will be having its own architecture or microcontroller target system so one system host generally PC or laptop or workstation other system will have a target or the actual hardware can be a microcontroller based or microcontroller press any other hardware like FPGA any flash device anything which is used under the development so continuation of that host and target target independent and target dependent code so what it means there are a few code like hardware related microcontroller related or registers which we may use for example target specific hardware registers microcontroller registers memory etc those all are called target dependent target independent target independent is something like we have algorithms utilities like conversion utilities any flow structure data structure mechanism etc these are all target independent that means you do not have a dependency on the target for this piece of software to run so that is how they categorize it so same thing is explained here code has two parts hardware independent and hardware dependent code and port is nothing but piece of interface which is deciding in the target and devices like as I said could be flash device crystal or anything that will have access with the microcontroller using a address so that address are fixed so we cannot use it as a generator so this is one of the setup that is used that means host and target based systems same thing will be used for development as well as testing some details about host testing and debugging at each stage as well as at the final stage when the modules are put together that means this will be fixed the different stages of developing and integrating onto the target with the help of host will be done at the same manner in different stages testing can be done at initial stages at the host side that means having developed some piece of software we can use the same host for testing it like whether it is working as expected and in the host itself we can use we do not need to program that onto the target as I said there are independent software code that can be used in the host itself wherein those modules like algorithm and host can be run and tested on the host or the PC also there are integrated development environment target based systems which will allow for user to simulate that means that simulator is an application which will be running on the host which can simulate the target that is intended to be used we will touch base each of these things so this is the definition about target so this is used to test hardware independent codes I think there is a let us take care it should be hardware dependent codes and the target is also used to run from the target to see the output of the test so we will need some monitoring mechanism that monitoring mechanism can be target that is how the target is used here is a typical diagram of a host and a target how it is connected typically this is used for development some of this can definitely be used in a testing we may have to develop some scripts which will use the same interface for testing on the target system and the scripts will have a dependency on the probe of the development environment hook which will be used for debugging the target system and I will brief about this host and target system there is a laptop or desktop which will have an interface with the target system with the help of an IDE IDE generally uses probes which will probe the registers of the memory of the hardware related information through a probe box that is called a JTAG and there are tools which will interact with this will allow the user to monitor or put values and all that integrated development environment we have the GHS screen code warrior etc the interface with the JTAG usually through USB or the internet now as I said in the earlier slide how the target system will be used for testing so once we have the development we no more require any of the IDE or JTAG which is connected to the target system in the view of that what we will use is the target system actually connected with the real inputs that is realistic values with the help of test panel or break out box that can be used to provide the inputs and to test the values the monitor the values we use interfaces or it could be RS-22 also I have seen separate system connected to target system I mean separate interface as well some of the monitoring can be done with the help of that for example RS-22 and that tool can be segregated in the host with the help of testing tools those testing tools will help user identifying the failures or run tests and batches so we know that there is a target system how it can be set up with the help of this there are different mechanism that can be used for doing the test setup there are broadly three categories having said that we use different test setups for development the setup is broadly categorized in three ways testing with simulation testing with emulation and with the help of target monitoring that means the target debugging testing is classified as simulation and target monitoring what are those so we will see each one so target the embedded system target can be tested with the help of simulator so in simulation what it has basically it uses the knowledge of target processor or microcontroller and target system architecture at the host side that means on the host processor we have seen the host is desktop or the user station or the laptop so all the information is required from the target side will be available in a simulation manner so we do not need the target should be running but the host has the knowledge so for that what we need to do first the developed code or the code that we have should be compiled cross compiled I think I have explained what is cross compilation and embedded system anyway that is part of the embedded system basics we use cross compiler where we have the code developed in the host and compiled for the target so that is cross compilation so what we do is we do the cross compilation of the code and place it in the host system RAM that means host system will have the compiled code then behavior of the target system processor registers with this with this simulator it uses the linker and locator to port the cross compiled codes in RAM and functions like the code that would have run at the actual target system that means it is as if the target is running but it will be running in the host with the knowledge of whatever the target it is having in the host so few bullets code tested for the MCU we use the code development simulates the hardware like emulator network input output devices on the host or the workstation means all the peripherals that it has it tries to use it, tries to emulate it basically with the help of what are the emulation characteristics that has simulator remains independent of a particular target system as I said it does not have a dependency on target the results expected from codes at the target system RAM peripherals network or input output devices are obtained at the host system RAM I would say may not be 100% possible with all this devices and the peripherals but at least the generic nature of all this peripherals and all that should be able to simulate how they have developed the simulator it provides the detailed information of the purpose of the peripherals devices like it is running or stock etc it redefines the system provides the detailed information of the execution goes on for each single step or each single model I think one session I will have in terms of debugging testing with the help of IDE integrated development I think it will be probably more clear with that how do we do it similar manner simulation also it is not too much away from what we usually use in the debugging environment instead of the target system the host will have a simulation based system it also supports all the great points like conditional and unconditional great points etc some of the simulation great points or the software great points we use for simulator so the advantage is this helps in the development of the system before the final target system is ready with the help of only a PC as a tool for development that means we do not need to actual target system at least we can progress from development of the system before we actually get the target in general in industry what will happen I think I will explain this in different models that is used the hardware and software planning requirements and development course hardware is bit ahead of software hardware is should be ready but what will happen is likely that before the hardware or the actual target is ready the software piece would have been developed to get the confidence we use mechanisms such as simulator etc so that will be very much use and it helps for the initial development and simulator for available for different process and costing devices which are targeted for embedded systems most of the process or the microcontrollers that they develop definitely there are similar available most of them like you take microcontrollers such as AI based or motor law based or whatever it is they will have simulators we can use for simulation the same simulator can be used for speed or testing especially the same code we can build the target and that code can be tested especially by any testing this will be useful where we use the individual modules and those modules can be simulated if possible like I said the algorithms or software flow etc can be definitely tested with the simulator if not so but simulator will have some disarmament of this those are timing and the speed issues can't be involved as I said the actual timing of the microcontroller or the processor with the actual load of the signals or with the actual peripherals or devices connected so definitely will vary than whatever simulation so those issues we may not test completely because of the calculation of process speed and the host will not be adequately mapped we may map one piece or another all cannot be synced easily with the help of simulator and of course as I said hardware dependent testing like we have some of the border or the interfaces connected for spy or spy interfaces we may not be able to test it and of course we have developed the code in the host environment and the net simulation and we should be able to port it as it is on the target without difficulty but since there are some issues especially on the binding or accessing the memory or big indian form of issues definitely there are few things which has a simulator lacks that is about simulator and we go to any simulator that is the next technique which will actually use the end target one thing I remember simulator before one day for example target system may have 8 bit data bus between RAM and one pipeline or every map processor and host may be having pipeline also and it could be a 32 bit so there is a difference with the target system and the host similarly simulator may show that as it arises from an interrupt in some particular situation only like you may be aware of the interrupt some interrupts can come in real time this simulator we may not be able to go which I think that we cannot use simulator we should definitely use the next techniques it is emulation so what is an emulator it is also called as an in circuit emulator so basically which actually takes the in circuit values and will provide the user just of what are the values that is going on with the target emulator similarly user can put the values into that registers with the help of emulators so emulator is also known as in circuit emulator circuit for emulating target system independent of a particular target play system and processor emulator or eyes provides great flexibility and is for developing various applications on a single system in place of testing that multiple target system we have a batched of different systems many of the components are same then we can use an emulator on one system and probably it will ease out for developing different applications of target systems suppose some sensors are connected that can be emulated emulates controlled outputs for the peripheral interface means we actually use the peripherals for the interface which can be triggered or which can be controlled with the help of emulator emulator emulates target emulator outputs and socket to connect to external emulator suppose one more emulator or emulator emulator so we can have a multiple emulator or the single emulator can be the first emulator and it can be hooked for a circuit with the other emulator multiple microcontrollers so both have to be used and both will have some interface for inputs and outputs so how do we do it definitely this is not possible with the help of emulator we have to use the emulation technique so what emulator we developed we developed we compiled for the target and it produces the object files those object files and the binary or the image or the microcontrollers which is required will be used by the emulator it uses the debugger at the computer files or the mcu application that means there is a debugger the debugger will have knowledge of the entire MCU and MCU corresponding applications can be debugged with the help of the emulator this emulator it has come for testing you may ask because emulator is definitely used for development it can also be used or more or less it is used for testing also because some of the testing may not be possible with all of automated way or other black box without the with the target not having connected with the development environment within the target system need to be inspected with the help of code user or tester has to go through the test code or the code on the target so how do we do with the help of emulation so emulation that is why it is used for testing also that is why we have taken up as the one of the technique the next one is target monitoring so what is monitoring monitoring is an output activity from the target system used for embedded system testing so what are the elements monitoring is a resident program target is system which is connected with the host as I said it could be or any of the interfaces the interface could be or it is 32 generally they use or can also is used in many places control area network so for this I mean we definitely need some program which is residing in the target system because that has to interface with the rest of 32 to pump in some data to the host and the host has to acknowledge and host can request the target system also for that it has to respond so there is a handshake involved for the between the target system and the host for that we dedicated monitoring application is needed both side host side as well as on the target monitoring monitoring target system events and data as I said it uses the interface and comes in the data to the target the computer interface commands command the interpreter that means for retrieving the data analyzing the data it may have to send some commands and respond for the data so it uses some commands there is a protocol of the handshake involved target board and the host generally the commands are regained mostly they are used for memory registers operations and also there are systems which uses the same interface for target application that is the image binary on to the target can be downloaded with the help of PC so these are some of the target based debugging or testing with the help of test setup test setups we have seen how it will be next one is the tools so we will conclude the session with the tools with tools this example and in the end we will touch base image system testing so it is like something recap of what we have studied so far what we would like to study so these are some of the words that has to be a part of the test it should be knowledgeable enough anytime to talk on this jargon okay so image system testing has to have a list of tools and this should be a well documented tools list with additional information of the tools you see as guidance etc and these all these tools should be referred or mapped in the test plan we have seen how the test plan looks like and that should have a reference to all those tools or the tools document and that should be controlled or configured with the help of configuration management and any change over the period of testing or development or the analysis definitely will have an impact why it has an impact because whatever we intend to use whatever we want to develop scripts or tests on one version of tool may not work on the next version so that is for example so similarly any checklist part of this of the tool any changes happens that has to be controlled so any deviations that has to be taken care of deviation process along with the impact so definitely there is an impact on the whole test cycle wherever there is an impact that needs to be mitigated so embedded software testing tools both are for example how it is tested so you can the template as what we did in the earlier stages like test plan and procedures cases I have not put the template probably as one of the tools there is an example I have put here maybe there is an x-ray we can take it up during the practical session to list out all the tools and each switch as part of the template so the template looks like some kind of tool information the tool name when and how to use so is the author and of course we can have tool version part of this only or configuration information also so this is the template that generally they use for tools and I have for this course some of the tools listed below it depends on the availability and other as an example I have listed out here below typically target based system as I said it will have 8 bit, 16 bit, 30 bit micro control along with that we should have an ID development environment for compiling, debugging and testing the developed software for that we use evaluation boards we can target to use 851 based or ARM 6 or 7 or 9 based PVP these are all available in the office we can use it for testing once we have this target based system we need to have the requirements as an input part of the space we will develop the test case and we will do the test case design documentation reporting this can be with the help of documentation Microsoft Word or Excel can once we lay out the test procedures we need to have scripting mechanism scripting can be done with the help of python not sure how many of you this is near to any other scripting tool you can take for example shell scripting Linux or DOS in windows that also will have command line argument and all that this can be used for scripting and this is in open source download and use it and for testing we have to use static analysis reviews and all that for that when we recommend it to some sky tools this also there is a evaluation they give it actually this is a good tool why because it use up the complete code picture call tree and all that it produces it also gives a configuration output how the code is organized in terms of data code we can apply the rules the coding rules and we can see many of the other aspects like complexity because it is called software complexity I will one of the session I will use software complexity is basically how complex the target system is about it has the number basically for any embedded system there has to be some limit on the complexity beyond that it cannot be developed so we use that understand processes for static analysis but test effect we use a tool called test link testing we use test link it manages all the test cases procedure test suite also and of course the scripts also we can it help up with testing tool it does not test but it helps us to manage it is called test link similarly once we have this test case procedure we can link them the pass failed result or reports like failures can be controlled I mean can be managed with alpha effect management tool called bugzilla it is one of the open source good tool of course this test link is also open source tool and we can use it for same testing in bugzilla for configuration controls that means based on versioning etc all this can be taken care with this test link in bugzilla it has a flavor of configuration so this is an example of test tool so that is about tools okay so in this session we have gone through different levels of testing component or unit what is what is integration testing what is system testing test harness what it means set up typical embedded software testing set up how it will be specific host and target system how it will be developed how it will be used is a development set up is a real environment testing set up how we can test having said that all this environment is available with alphabets three techniques simulation based target based monitoring simulation the target based knowledge available in the host and all the interfaces and the processor can be simulated as the host we know that always similar technology used that has disadvantages in those cases we use emulation which will actually use the in circuit emulation technique in terms of bringing up all the hardware values into the host with the help of host to be in the right field and all that values into the target and the same target can also be used for programming multiple object files or different programs the next technique is the target monitor where there is a already built program running on the target which will have an interface with the host and there are commands for read and write with the help of which the target is interacted and the setup has to be configured and controlled with the help of software environment configuration it is called environment configuration index which will list out all the tools what is the environment you complete this will be mapped with the test plan and embedded software tools you have seen an example so what are the tools and what are the information which will be used for listing out and how to use it and any changes that has to be taken as a deviation so we will we have listed out some of the testing words probably the next exercise will be to put at least a single word definition for this so my next exercise or question is something like put a one sentence answer for some of the words which we have test harness what is test harness one more one line definition put a small paragraph test bed test bed and test bench both are same it is used in different context in some industry they use as test bed some industry they use as test bench and the actual environment that is used will have something named something like automatic test day and of course this we have not done model based testing we will touch base in the next class I have listed out all the words so what are the words that we have gone through we can put one sentence answer test hubs I think we have not seen test driver we have not seen fault injection error injection or fault triggering we have MCDC that will be covered under real testing test hook we know that test hooks will be used for testing the target system where the hooks will accept the user inputs and provides user monitoring boot software boot up program boot loader which will help in loading new application IOS input output ICT interface control document basically in the embedded industry they use this document primarily to define the interfaces this is a separate requirement document sort of a thing this will define all the inputs outputs for the system as well as the requirements we know what is break point we know what is simulator what is emulator I think this is part of the emulation or emulator you can define what is place profiling we can use it and for target processor we use the data sheet data sheet is used for as a reference manual from microcontroller such as ARM 7 etc so this is one of the need that embedded system test has to have why because he needs to have a knowledge of the microcontroller which is under test and every microcontroller will have a a data or it is a erroneous information which will explain about any of the bugs or errors still it is available in the microcontroller which user should be aware of we know what device in circuit emulator the question is please provide an answer for some of the words that we have used in this course so that is all about today's course and next time we will address the next question